From 48f98b04b55772c9e88c5c533af6e60bc5d728b8 Mon Sep 17 00:00:00 2001 From: pradeepnschrodinger Date: Mon, 23 Sep 2019 22:35:45 +0000 Subject: [PATCH] Version 1.0.0-beta.30 --- dist/fixed-data-table-base.css | 2 +- dist/fixed-data-table-base.min.css | 2 +- dist/fixed-data-table-style.css | 2 +- dist/fixed-data-table-style.min.css | 2 +- dist/fixed-data-table.css | 2 +- dist/fixed-data-table.js | 6 +++--- dist/fixed-data-table.min.css | 2 +- dist/fixed-data-table.min.js | 6 +++--- package.json | 2 +- src/FixedDataTableRoot.js | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) diff --git a/dist/fixed-data-table-base.css b/dist/fixed-data-table-base.css index 9bf1c7ae..0f72d5cc 100644 --- a/dist/fixed-data-table-base.css +++ b/dist/fixed-data-table-base.css @@ -1,5 +1,5 @@ /** - * FixedDataTable v1.0.0-beta.29 + * FixedDataTable v1.0.0-beta.30 * * Copyright Schrodinger, LLC * All rights reserved. diff --git a/dist/fixed-data-table-base.min.css b/dist/fixed-data-table-base.min.css index 9bf1c7ae..0f72d5cc 100644 --- a/dist/fixed-data-table-base.min.css +++ b/dist/fixed-data-table-base.min.css @@ -1,5 +1,5 @@ /** - * FixedDataTable v1.0.0-beta.29 + * FixedDataTable v1.0.0-beta.30 * * Copyright Schrodinger, LLC * All rights reserved. diff --git a/dist/fixed-data-table-style.css b/dist/fixed-data-table-style.css index 4d2bcf46..edb0400c 100644 --- a/dist/fixed-data-table-style.css +++ b/dist/fixed-data-table-style.css @@ -1,5 +1,5 @@ /** - * FixedDataTable v1.0.0-beta.29 + * FixedDataTable v1.0.0-beta.30 * * Copyright Schrodinger, LLC * All rights reserved. diff --git a/dist/fixed-data-table-style.min.css b/dist/fixed-data-table-style.min.css index 4d2bcf46..edb0400c 100644 --- a/dist/fixed-data-table-style.min.css +++ b/dist/fixed-data-table-style.min.css @@ -1,5 +1,5 @@ /** - * FixedDataTable v1.0.0-beta.29 + * FixedDataTable v1.0.0-beta.30 * * Copyright Schrodinger, LLC * All rights reserved. diff --git a/dist/fixed-data-table.css b/dist/fixed-data-table.css index fee26dbf..7735e8e3 100644 --- a/dist/fixed-data-table.css +++ b/dist/fixed-data-table.css @@ -1,5 +1,5 @@ /** - * FixedDataTable v1.0.0-beta.29 + * FixedDataTable v1.0.0-beta.30 * * Copyright Schrodinger, LLC * All rights reserved. diff --git a/dist/fixed-data-table.js b/dist/fixed-data-table.js index 9d847981..2bc75766 100644 --- a/dist/fixed-data-table.js +++ b/dist/fixed-data-table.js @@ -1,5 +1,5 @@ /** - * FixedDataTable v1.0.0-beta.29 + * FixedDataTable v1.0.0-beta.30 * * Copyright Schrodinger, LLC * All rights reserved. @@ -1985,7 +1985,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var DOMM /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var FixedDataTableBufferedRows__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! FixedDataTableBufferedRows */ \"./src/FixedDataTableBufferedRows.js\");\n/* harmony import */ var ColumnResizerLine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ColumnResizerLine */ \"./src/ColumnResizerLine.js\");\n/* harmony import */ var FixedDataTableEventHelper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! FixedDataTableEventHelper */ \"./src/FixedDataTableEventHelper.js\");\n/* harmony import */ var FixedDataTableRow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! FixedDataTableRow */ \"./src/FixedDataTableRow.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var ReactTouchHandler__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ReactTouchHandler */ \"./src/ReactTouchHandler.js\");\n/* harmony import */ var ReactWheelHandler__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ReactWheelHandler */ \"./src/vendor_upstream/dom/ReactWheelHandler.js\");\n/* harmony import */ var Scrollbar__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Scrollbar */ \"./src/Scrollbar.js\");\n/* harmony import */ var ariaAttributes__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ariaAttributes */ \"./src/selectors/ariaAttributes.js\");\n/* harmony import */ var columnTemplates__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! columnTemplates */ \"./src/selectors/columnTemplates.js\");\n/* harmony import */ var cx__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! cx */ \"./src/vendor_upstream/stubs/cx.js\");\n/* harmony import */ var debounceCore__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! debounceCore */ \"./src/vendor_upstream/core/debounceCore.js\");\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! lodash/isNaN */ \"./node_modules/lodash/isNaN.js\");\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(lodash_isNaN__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var joinClasses__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! joinClasses */ \"./src/vendor_upstream/core/joinClasses.js\");\n/* harmony import */ var scrollbarsVisible__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! scrollbarsVisible */ \"./src/selectors/scrollbarsVisible.js\");\n/* harmony import */ var tableHeights__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! tableHeights */ \"./src/selectors/tableHeights.js\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Copyright Schrodinger, LLC\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FixedDataTable\n * @typechecks\n * \n */\n\n/*eslint no-bitwise:1*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ARROW_SCROLL_SPEED = 25;\n/**\n * Data grid component with fixed or scrollable header and columns.\n *\n * The layout of the data table is as follows:\n *\n * ```\n * +---------------------------------------------------+\n * | Fixed Column Group | Scrollable Column Group |\n * | Header | Header |\n * | | |\n * +---------------------------------------------------+\n * | | |\n * | Fixed Header Columns | Scrollable Header Columns |\n * | | |\n * +-----------------------+---------------------------+\n * | | |\n * | Fixed Body Columns | Scrollable Body Columns |\n * | | |\n * +-----------------------+---------------------------+\n * | | |\n * | Fixed Footer Columns | Scrollable Footer Columns |\n * | | |\n * +-----------------------+---------------------------+\n * ```\n *\n * - Fixed Column Group Header: These are the headers for a group\n * of columns if included in the table that do not scroll\n * vertically or horizontally.\n *\n * - Scrollable Column Group Header: The header for a group of columns\n * that do not move while scrolling vertically, but move horizontally\n * with the horizontal scrolling.\n *\n * - Fixed Header Columns: The header columns that do not move while scrolling\n * vertically or horizontally.\n *\n * - Scrollable Header Columns: The header columns that do not move\n * while scrolling vertically, but move horizontally with the horizontal\n * scrolling.\n *\n * - Fixed Body Columns: The body columns that do not move while scrolling\n * horizontally, but move vertically with the vertical scrolling.\n *\n * - Scrollable Body Columns: The body columns that move while scrolling\n * vertically or horizontally.\n */\n\nvar FixedDataTable =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(FixedDataTable, _React$Component);\n\n function FixedDataTable() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, FixedDataTable);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(FixedDataTable)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_shouldHandleTouchX\", function (\n /*number*/\n delta) {\n return (\n /*boolean*/\n _this.props.touchScrollEnabled && _this._shouldHandleWheelX(delta)\n );\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_shouldHandleTouchY\", function (\n /*number*/\n delta) {\n return (\n /*boolean*/\n _this.props.touchScrollEnabled && _this._shouldHandleWheelY(delta)\n );\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_shouldHandleWheelX\", function (\n /*number*/\n delta)\n /*boolean*/\n {\n var _this$props = _this.props,\n maxScrollX = _this$props.maxScrollX,\n scrollFlags = _this$props.scrollFlags,\n scrollX = _this$props.scrollX;\n var overflowX = scrollFlags.overflowX;\n\n if (overflowX === 'hidden') {\n return false;\n }\n\n delta = Math.round(delta);\n\n if (delta === 0) {\n return false;\n }\n\n return delta < 0 && scrollX > 0 || delta >= 0 && scrollX < maxScrollX;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_shouldHandleWheelY\", function (\n /*number*/\n delta)\n /*boolean*/\n {\n var _this$props2 = _this.props,\n maxScrollY = _this$props2.maxScrollY,\n scrollFlags = _this$props2.scrollFlags,\n scrollY = _this$props2.scrollY;\n var overflowY = scrollFlags.overflowY;\n\n if (overflowY === 'hidden' || delta === 0) {\n return false;\n }\n\n delta = Math.round(delta);\n\n if (delta === 0) {\n return false;\n }\n\n return delta < 0 && scrollY > 0 || delta >= 0 && scrollY < maxScrollY;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_reportContentHeight\", function () {\n var _tableHeightsSelector = Object(tableHeights__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(_this.props),\n contentHeight = _tableHeightsSelector.contentHeight;\n\n var onContentHeightChange = _this.props.onContentHeightChange;\n\n if (contentHeight !== _this._contentHeight && onContentHeightChange) {\n onContentHeightChange(contentHeight);\n }\n\n _this._contentHeight = contentHeight;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_renderRows\", function (\n /*number*/\n offsetTop, fixedCellTemplates, fixedRightCellTemplates, scrollableCellTemplates, bodyHeight,\n /*number*/\n ariaRowIndexOffset)\n /*object*/\n {\n var _scrollbarsVisible = Object(scrollbarsVisible__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(_this.props),\n scrollEnabledY = _scrollbarsVisible.scrollEnabledY;\n\n var props = _this.props;\n return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(FixedDataTableBufferedRows__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n ariaRowIndexOffset: ariaRowIndexOffset,\n isScrolling: props.scrolling,\n fixedColumns: fixedCellTemplates,\n fixedRightColumns: fixedRightCellTemplates,\n firstViewportRowIndex: props.firstRowIndex,\n endViewportRowIndex: props.endRowIndex,\n height: bodyHeight,\n offsetTop: offsetTop,\n onRowClick: props.onRowClick,\n onRowContextMenu: props.onRowContextMenu,\n onRowDoubleClick: props.onRowDoubleClick,\n onRowMouseUp: props.onRowMouseUp,\n onRowMouseDown: props.onRowMouseDown,\n onRowMouseEnter: props.onRowMouseEnter,\n onRowMouseLeave: props.onRowMouseLeave,\n onRowTouchStart: props.touchScrollEnabled ? props.onRowTouchStart : null,\n onRowTouchEnd: props.touchScrollEnabled ? props.onRowTouchEnd : null,\n onRowTouchMove: props.touchScrollEnabled ? props.onRowTouchMove : null,\n rowClassNameGetter: props.rowClassNameGetter,\n rowExpanded: props.rowExpanded,\n rowKeyGetter: props.rowKeyGetter,\n rowSettings: props.rowSettings,\n scrollLeft: props.scrollX,\n scrollTop: props.scrollY,\n scrollableColumns: scrollableCellTemplates,\n showLastRowBorder: true,\n width: props.tableSize.width,\n rowsToRender: props.rows,\n rowOffsets: props.rowOffsets,\n showScrollbarY: scrollEnabledY\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onRef\", function (div) {\n _this._divRef = div;\n\n if (_this.props.stopReactWheelPropagation) {\n _this._wheelHandler.setRoot(div);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onColumnResize\", function (\n /*number*/\n combinedWidth,\n /*number*/\n leftOffset,\n /*number*/\n cellWidth,\n /*?number*/\n cellMinWidth,\n /*?number*/\n cellMaxWidth,\n /*number|string*/\n columnKey,\n /*object*/\n event) {\n var coordinates = FixedDataTableEventHelper__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getCoordinatesFromEvent(event);\n var clientX = coordinates.x;\n var clientY = coordinates.y;\n\n _this.props.columnActions.resizeColumn({\n cellMinWidth: cellMinWidth,\n cellMaxWidth: cellMaxWidth,\n cellWidth: cellWidth,\n columnKey: columnKey,\n combinedWidth: combinedWidth,\n clientX: clientX,\n clientY: clientY,\n leftOffset: leftOffset\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onColumnReorder\", function (\n /*string*/\n columnKey,\n /*number*/\n width,\n /*number*/\n left,\n /*object*/\n event) {\n _this.props.columnActions.startColumnReorder({\n scrollStart: _this.props.scrollX,\n columnKey: columnKey,\n width: width,\n left: left\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onColumnReorderMove\", function (\n /*number*/\n deltaX) {\n _this.props.columnActions.moveColumnReorder(deltaX);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onColumnReorderEnd\", function (\n /*object*/\n props,\n /*object*/\n event) {\n var _this$props3 = _this.props,\n columnActions = _this$props3.columnActions,\n _this$props3$columnRe = _this$props3.columnReorderingData,\n cancelReorder = _this$props3$columnRe.cancelReorder,\n columnAfter = _this$props3$columnRe.columnAfter,\n columnBefore = _this$props3$columnRe.columnBefore,\n columnKey = _this$props3$columnRe.columnKey,\n scrollStart = _this$props3$columnRe.scrollStart,\n onColumnReorderEndCallback = _this$props3.onColumnReorderEndCallback,\n onHorizontalScroll = _this$props3.onHorizontalScroll,\n scrollX = _this$props3.scrollX;\n columnActions.stopColumnReorder();\n\n if (cancelReorder) {\n return;\n }\n\n onColumnReorderEndCallback({\n columnAfter: columnAfter,\n columnBefore: columnBefore,\n reorderColumn: columnKey\n });\n\n if (scrollStart !== scrollX && onHorizontalScroll) {\n onHorizontalScroll(scrollX);\n }\n\n ;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (\n /*number*/\n deltaX,\n /*number*/\n deltaY) {\n var _this$props4 = _this.props,\n maxScrollX = _this$props4.maxScrollX,\n maxScrollY = _this$props4.maxScrollY,\n onHorizontalScroll = _this$props4.onHorizontalScroll,\n onVerticalScroll = _this$props4.onVerticalScroll,\n scrollActions = _this$props4.scrollActions,\n scrollFlags = _this$props4.scrollFlags,\n scrollX = _this$props4.scrollX,\n scrollY = _this$props4.scrollY,\n scrolling = _this$props4.scrolling;\n var overflowX = scrollFlags.overflowX,\n overflowY = scrollFlags.overflowY;\n var x = scrollX;\n var y = scrollY;\n\n if (Math.abs(deltaY) > Math.abs(deltaX) && overflowY !== 'hidden') {\n y += deltaY;\n y = y < 0 ? 0 : y;\n y = y > maxScrollY ? maxScrollY : y; //NOTE (jordan) This is a hacky workaround to prevent FDT from setting its internal state\n\n if (onVerticalScroll ? onVerticalScroll(y) : true) {\n scrollActions.scrollToY(y);\n }\n } else if (deltaX && overflowX !== 'hidden') {\n x += deltaX;\n x = x < 0 ? 0 : x;\n x = x > maxScrollX ? maxScrollX : x; // This is a workaround to prevent content blurring. This happens when translate3d\n // is applied with non-rounded values to elements having text.\n\n var roundedX = Math.round(x); //NOTE (asif) This is a hacky workaround to prevent FDT from setting its internal state\n\n if (onHorizontalScroll ? onHorizontalScroll(roundedX) : true) {\n scrollActions.scrollToX(roundedX);\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onHorizontalScroll\", function (\n /*number*/\n scrollPos) {\n var _this$props5 = _this.props,\n onHorizontalScroll = _this$props5.onHorizontalScroll,\n scrollActions = _this$props5.scrollActions,\n scrollX = _this$props5.scrollX,\n scrolling = _this$props5.scrolling;\n\n if (scrollPos === scrollX) {\n return;\n } // This is a workaround to prevent content blurring. This happens when translate3d\n // is applied with non-rounded values to elements having text.\n\n\n var roundedScrollPos = Math.round(scrollPos);\n\n if (onHorizontalScroll ? onHorizontalScroll(roundedScrollPos) : true) {\n scrollActions.scrollToX(roundedScrollPos);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onVerticalScroll\", function (\n /*number*/\n scrollPos) {\n var _this$props6 = _this.props,\n onVerticalScroll = _this$props6.onVerticalScroll,\n scrollActions = _this$props6.scrollActions,\n scrollY = _this$props6.scrollY;\n\n if (scrollPos === scrollY) {\n return;\n }\n\n if (onVerticalScroll ? onVerticalScroll(scrollPos) : true) {\n scrollActions.scrollToY(scrollPos);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_didScroll\", function (\n /* !object */\n nextProps) {\n var onScrollStart = nextProps.onScrollStart,\n scrollX = nextProps.scrollX,\n scrollY = nextProps.scrollY,\n onHorizontalScroll = nextProps.onHorizontalScroll,\n onVerticalScroll = nextProps.onVerticalScroll,\n ownerHeight = nextProps.tableSize.ownerHeight;\n var _this$props7 = _this.props,\n oldEndRowIndex = _this$props7.endRowIndex,\n oldFirstRowIndex = _this$props7.firstRowIndex,\n oldScrollX = _this$props7.scrollX,\n oldScrollY = _this$props7.scrollY,\n oldOwnerHeight = _this$props7.tableSize.ownerHeight; // check if scroll values have changed - we have an extra check on NaN because (NaN !== NaN)\n\n var ownerHeightChanged = ownerHeight !== oldOwnerHeight && !(lodash_isNaN__WEBPACK_IMPORTED_MODULE_13___default()(ownerHeight) && lodash_isNaN__WEBPACK_IMPORTED_MODULE_13___default()(oldOwnerHeight));\n var scrollXChanged = scrollX !== oldScrollX;\n var scrollYChanged = scrollY !== oldScrollY; // if none of the above changed, then a scroll didn't happen at all\n\n if (!ownerHeightChanged && !scrollXChanged && !scrollYChanged) {\n return;\n } // only call onScrollStart if scrolling wasn't on previously\n\n\n if (!_this.props.scrolling && onScrollStart) {\n onScrollStart(oldScrollX, oldScrollY, oldFirstRowIndex, oldEndRowIndex);\n }\n\n if (scrollXChanged && onHorizontalScroll) {\n onHorizontalScroll(scrollX);\n }\n\n if (scrollYChanged && onVerticalScroll) {\n onVerticalScroll(scrollY);\n } // debounced version of didScrollStop as we don't immediately stop scrolling\n\n\n _this._didScrollStop();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_didScrollStopSync\", function () {\n var _this$props8 = _this.props,\n endRowIndex = _this$props8.endRowIndex,\n firstRowIndex = _this$props8.firstRowIndex,\n onScrollEnd = _this$props8.onScrollEnd,\n scrollActions = _this$props8.scrollActions,\n scrollX = _this$props8.scrollX,\n scrollY = _this$props8.scrollY,\n scrolling = _this$props8.scrolling;\n\n if (!scrolling) {\n return;\n }\n\n scrollActions.stopScroll();\n\n if (onScrollEnd) {\n onScrollEnd(scrollX, scrollY, firstRowIndex, endRowIndex);\n }\n });\n\n return _this;\n }\n\n _createClass(FixedDataTable, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n this._didScrollStop = Object(debounceCore__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(this._didScrollStopSync, 200, this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._wheelHandler = new ReactWheelHandler__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this._onScroll, this._shouldHandleWheelX, this._shouldHandleWheelY, this.props.stopScrollDefaultHandling, this.props.stopScrollPropagation);\n this._touchHandler = new ReactTouchHandler__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this._onScroll, this._shouldHandleTouchX, this._shouldHandleTouchY, this.props.stopScrollDefaultHandling, this.props.stopScrollPropagation);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n // TODO (pradeep): Remove these and pass to our table component directly after\n // React provides an API where event handlers can be specified to be non-passive (facebook/react#6436)\n this._divRef && this._divRef.removeEventListener('wheel', this._wheelHandler.onWheel, {\n passive: false\n });\n this._divRef && this._divRef.removeEventListener('touchmove', this._touchHandler.onTouchMove, {\n passive: false\n });\n this._wheelHandler = null;\n this._touchHandler = null; // Cancel any pending debounced scroll handling and handle immediately.\n\n this._didScrollStop.reset();\n\n this._didScrollStopSync();\n }\n }, {\n key: \"_onKeyDown\",\n value: function _onKeyDown(event) {\n var _tableHeightsSelector2 = Object(tableHeights__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(this.props),\n scrollbarYHeight = _tableHeightsSelector2.scrollbarYHeight;\n\n if (this.props.keyboardPageEnabled) {\n switch (event.key) {\n case 'PageDown':\n this._onScroll(0, scrollbarYHeight);\n\n event.preventDefault();\n break;\n\n case 'PageUp':\n this._onScroll(0, scrollbarYHeight * -1);\n\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }\n\n if (this.props.keyboardScrollEnabled) {\n switch (event.key) {\n case 'ArrowDown':\n this._onScroll(0, ARROW_SCROLL_SPEED);\n\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n this._onScroll(0, ARROW_SCROLL_SPEED * -1);\n\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n this._onScroll(ARROW_SCROLL_SPEED, 0);\n\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n this._onScroll(ARROW_SCROLL_SPEED * -1, 0);\n\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._divRef && this._divRef.addEventListener('wheel', this._wheelHandler.onWheel, {\n passive: false\n });\n\n if (this.props.touchScrollEnabled) {\n this._divRef && this._divRef.addEventListener('touchmove', this._touchHandler.onTouchMove, {\n passive: false\n });\n }\n\n this._reportContentHeight();\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(\n /*object*/\n nextProps) {\n this._didScroll(nextProps);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._reportContentHeight();\n }\n }, {\n key: \"render\",\n value: function render()\n /*object*/\n {\n var _ariaAttributesSelect = Object(ariaAttributes__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(this.props),\n ariaGroupHeaderIndex = _ariaAttributesSelect.ariaGroupHeaderIndex,\n ariaHeaderIndex = _ariaAttributesSelect.ariaHeaderIndex,\n ariaFooterIndex = _ariaAttributesSelect.ariaFooterIndex,\n ariaRowCount = _ariaAttributesSelect.ariaRowCount,\n ariaRowIndexOffset = _ariaAttributesSelect.ariaRowIndexOffset;\n\n var _columnTemplatesSelec = Object(columnTemplates__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(this.props),\n fixedColumnGroups = _columnTemplatesSelec.fixedColumnGroups,\n fixedColumns = _columnTemplatesSelec.fixedColumns,\n fixedRightColumnGroups = _columnTemplatesSelec.fixedRightColumnGroups,\n fixedRightColumns = _columnTemplatesSelec.fixedRightColumns,\n scrollableColumnGroups = _columnTemplatesSelec.scrollableColumnGroups,\n scrollableColumns = _columnTemplatesSelec.scrollableColumns;\n\n var _tableHeightsSelector3 = Object(tableHeights__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(this.props),\n bodyHeight = _tableHeightsSelector3.bodyHeight,\n bodyOffsetTop = _tableHeightsSelector3.bodyOffsetTop,\n componentHeight = _tableHeightsSelector3.componentHeight,\n footOffsetTop = _tableHeightsSelector3.footOffsetTop,\n scrollbarXOffsetTop = _tableHeightsSelector3.scrollbarXOffsetTop,\n visibleRowsHeight = _tableHeightsSelector3.visibleRowsHeight;\n\n var _this$props9 = this.props,\n className = _this$props9.className,\n columnReorderingData = _this$props9.columnReorderingData,\n columnResizingData = _this$props9.columnResizingData,\n elementHeights = _this$props9.elementHeights,\n isColumnReordering = _this$props9.isColumnReordering,\n isColumnResizing = _this$props9.isColumnResizing,\n maxScrollX = _this$props9.maxScrollX,\n maxScrollY = _this$props9.maxScrollY,\n onColumnReorderEndCallback = _this$props9.onColumnReorderEndCallback,\n onColumnResizeEndCallback = _this$props9.onColumnResizeEndCallback,\n scrollContentHeight = _this$props9.scrollContentHeight,\n scrollX = _this$props9.scrollX,\n scrollY = _this$props9.scrollY,\n scrolling = _this$props9.scrolling,\n tableSize = _this$props9.tableSize,\n touchScrollEnabled = _this$props9.touchScrollEnabled;\n var ownerHeight = tableSize.ownerHeight,\n width = tableSize.width;\n var cellGroupWrapperHeight = elementHeights.cellGroupWrapperHeight,\n footerHeight = elementHeights.footerHeight,\n groupHeaderHeight = elementHeights.groupHeaderHeight,\n headerHeight = elementHeights.headerHeight;\n\n var _scrollbarsVisible2 = Object(scrollbarsVisible__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(this.props),\n scrollEnabledX = _scrollbarsVisible2.scrollEnabledX,\n scrollEnabledY = _scrollbarsVisible2.scrollEnabledY;\n\n var onColumnReorder = onColumnReorderEndCallback ? this._onColumnReorder : null;\n var groupHeader;\n\n if (groupHeaderHeight > 0) {\n groupHeader = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(FixedDataTableRow__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n key: \"group_header\",\n ariaRowIndex: ariaGroupHeaderIndex,\n isHeaderOrFooter: true,\n isScrolling: scrolling,\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/header'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/header')),\n width: width,\n height: groupHeaderHeight,\n cellGroupWrapperHeight: cellGroupWrapperHeight,\n index: 0,\n zIndex: 1,\n offsetTop: 0,\n scrollLeft: scrollX,\n fixedColumns: fixedColumnGroups,\n fixedRightColumns: fixedRightColumnGroups,\n scrollableColumns: scrollableColumnGroups,\n visible: true,\n onColumnResize: this._onColumnResize,\n onColumnReorder: onColumnReorder,\n onColumnReorderMove: this._onColumnReorderMove,\n showScrollbarY: scrollEnabledY\n });\n }\n\n var scrollbarY;\n\n if (scrollEnabledY) {\n scrollbarY = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(Scrollbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n size: visibleRowsHeight,\n contentSize: scrollContentHeight,\n onScroll: this._onVerticalScroll,\n verticalTop: bodyOffsetTop,\n position: scrollY,\n touchEnabled: touchScrollEnabled\n });\n }\n\n var scrollbarX;\n\n if (scrollEnabledX) {\n scrollbarX = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(HorizontalScrollbar, {\n contentSize: width + maxScrollX,\n offset: scrollbarXOffsetTop,\n onScroll: this._onHorizontalScroll,\n position: scrollX,\n size: width,\n touchEnabled: touchScrollEnabled\n });\n }\n\n var dragKnob = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(ColumnResizerLine__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n height: componentHeight,\n initialWidth: columnResizingData.width || 0,\n minWidth: columnResizingData.minWidth || 0,\n maxWidth: columnResizingData.maxWidth || Number.MAX_VALUE,\n visible: !!isColumnResizing,\n leftOffset: columnResizingData.left || 0,\n knobHeight: headerHeight,\n initialEvent: columnResizingData.initialEvent,\n onColumnResizeEnd: onColumnResizeEndCallback,\n columnKey: columnResizingData.key,\n touchEnabled: touchScrollEnabled\n });\n var footer = null;\n\n if (footerHeight) {\n footer = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(FixedDataTableRow__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n key: \"footer\",\n ariaRowIndex: ariaFooterIndex,\n isHeaderOrFooter: true,\n isScrolling: scrolling,\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/footer'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/footer')),\n width: width,\n height: footerHeight,\n index: -1,\n zIndex: 1,\n offsetTop: footOffsetTop,\n visible: true,\n fixedColumns: fixedColumns.footer,\n fixedRightColumns: fixedRightColumns.footer,\n scrollableColumns: scrollableColumns.footer,\n scrollLeft: scrollX,\n showScrollbarY: scrollEnabledY\n });\n }\n\n var rows = this._renderRows(bodyOffsetTop, fixedColumns.cell, fixedRightColumns.cell, scrollableColumns.cell, bodyHeight, ariaRowIndexOffset);\n\n var header = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(FixedDataTableRow__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n key: \"header\",\n ariaRowIndex: ariaHeaderIndex,\n isHeaderOrFooter: true,\n isScrolling: scrolling,\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/header'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/header')),\n width: width,\n height: headerHeight,\n cellGroupWrapperHeight: cellGroupWrapperHeight,\n index: -1,\n zIndex: 1,\n offsetTop: groupHeaderHeight,\n scrollLeft: scrollX,\n visible: true,\n fixedColumns: fixedColumns.header,\n fixedRightColumns: fixedRightColumns.header,\n scrollableColumns: scrollableColumns.header,\n touchEnabled: touchScrollEnabled,\n onColumnResize: this._onColumnResize,\n onColumnReorder: onColumnReorder,\n onColumnReorderMove: this._onColumnReorderMove,\n onColumnReorderEnd: this._onColumnReorderEnd,\n isColumnReordering: !!isColumnReordering,\n columnReorderingData: columnReorderingData,\n showScrollbarY: scrollEnabledY\n });\n var topShadow;\n\n if (scrollY) {\n topShadow = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/topShadow'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/topShadow')),\n style: {\n top: bodyOffsetTop\n }\n });\n } // ownerScrollAvailable is true if the rows rendered will overflow the owner element\n // so we show a shadow in that case even if the FDT component can't scroll anymore\n\n\n var ownerScrollAvailable = ownerHeight && ownerHeight < componentHeight && scrollContentHeight > visibleRowsHeight;\n var bottomShadow;\n\n if (ownerScrollAvailable || scrollY < maxScrollY) {\n bottomShadow = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/bottomShadow'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/bottomShadow')),\n style: {\n top: footOffsetTop\n }\n });\n }\n\n var tabIndex = null;\n\n if (this.props.keyboardPageEnabled || this.props.keyboardScrollEnabled) {\n tabIndex = 0;\n }\n\n return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(className, Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/main'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/main')),\n role: \"grid\",\n \"aria-rowcount\": ariaRowCount,\n tabIndex: tabIndex,\n onKeyDown: this._onKeyDown,\n onTouchStart: touchScrollEnabled ? this._touchHandler.onTouchStart : null,\n onTouchEnd: touchScrollEnabled ? this._touchHandler.onTouchEnd : null,\n onTouchCancel: touchScrollEnabled ? this._touchHandler.onTouchCancel : null,\n ref: this._onRef,\n style: {\n height: componentHeight,\n width: width\n }\n }, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/rowsContainer'),\n style: {\n height: scrollbarXOffsetTop,\n width: width\n }\n }, dragKnob, groupHeader, header, rows, footer, topShadow, bottomShadow), scrollbarY, scrollbarX);\n }\n }]);\n\n return FixedDataTable;\n}(react__WEBPACK_IMPORTED_MODULE_4___default.a.Component);\n\n_defineProperty(FixedDataTable, \"propTypes\", {\n // TODO (jordan) Remove propType of width without losing documentation (moved to tableSize)\n\n /**\n * Pixel width of table. If all columns do not fit,\n * a horizontal scrollbar will appear.\n */\n width: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n // TODO (jordan) Remove propType of height without losing documentation (moved to tableSize)\n\n /**\n * Pixel height of table. If all rows do not fit,\n * a vertical scrollbar will appear.\n *\n * Either `height` or `maxHeight` must be specified.\n */\n height: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Class name to be passed into parent container\n */\n className: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.string,\n // TODO (jordan) Remove propType of maxHeight without losing documentation (moved to tableSize)\n\n /**\n * Maximum pixel height of table. If all rows do not fit,\n * a vertical scrollbar will appear.\n *\n * Either `height` or `maxHeight` must be specified.\n */\n maxHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of ownerHeight without losing documentation (moved to tableSize)\n\n /**\n * Pixel height of table's owner, this is used in a managed scrolling\n * situation when you want to slide the table up from below the fold\n * without having to constantly update the height on every scroll tick.\n * Instead, vary this property on scroll. By using `ownerHeight`, we\n * over-render the table while making sure the footer and horizontal\n * scrollbar of the table are visible when the current space for the table\n * in view is smaller than the final, over-flowing height of table. It\n * allows us to avoid resizing and reflowing table when it is moving in the\n * view.\n *\n * This is used if `ownerHeight < height` (or `maxHeight`).\n */\n ownerHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of overflowX & overflowY without losing documentation (moved to scrollFlags)\n overflowX: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.oneOf(['hidden', 'auto']),\n overflowY: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.oneOf(['hidden', 'auto']),\n\n /**\n * Boolean flag indicating of touch scrolling should be enabled\n * This feature is current in beta and may have bugs\n */\n touchScrollEnabled: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * Boolean flags to control if scrolling with keys is enabled\n */\n keyboardScrollEnabled: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n keyboardPageEnabled: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n // TODO (jordan) Remove propType of showScrollbarX & showScrollbarY without losing documentation (moved to scrollFlags)\n\n /**\n * Hide the scrollbar but still enable scroll functionality\n */\n showScrollbarX: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n showScrollbarY: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * Callback when horizontally scrolling the grid.\n *\n * Return false to stop propagation.\n */\n onHorizontalScroll: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback when vertically scrolling the grid.\n *\n * Return false to stop propagation.\n */\n onVerticalScroll: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n // TODO (jordan) Remove propType of rowsCount without losing documentation (moved to rowSettings)\n\n /**\n * Number of rows in the table.\n */\n rowsCount: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n // TODO (jordan) Remove propType of rowHeight without losing documentation (moved to rowSettings)\n\n /**\n * Pixel height of rows unless `rowHeightGetter` is specified and returns\n * different value.\n */\n rowHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n // TODO (jordan) Remove propType of rowHeightGetter without losing documentation (moved to rowSettings)\n\n /**\n * If specified, `rowHeightGetter(index)` is called for each row and the\n * returned value overrides `rowHeight` for particular row.\n */\n rowHeightGetter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n // TODO (jordan) Remove propType of subRowHeight without losing documentation (moved to rowSettings)\n\n /**\n * Pixel height of sub-row unless `subRowHeightGetter` is specified and returns\n * different value. Defaults to 0 and no sub-row being displayed.\n */\n subRowHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of subRowHeightGetter without losing documentation (moved to rowSettings)\n\n /**\n * If specified, `subRowHeightGetter(index)` is called for each row and the\n * returned value overrides `subRowHeight` for particular row.\n */\n subRowHeightGetter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * The row expanded for table row.\n * This can either be a React element, or a function that generates\n * a React Element. By default, the React element passed in can expect to\n * receive the following props:\n *\n * ```\n * props: {\n * rowIndex; number // (the row index)\n * height: number // (supplied from subRowHeight or subRowHeightGetter)\n * width: number // (supplied from the Table)\n * }\n * ```\n *\n * Because you are passing in your own React element, you can feel free to\n * pass in whatever props you may want or need.\n *\n * If you pass in a function, you will receive the same props object as the\n * first argument.\n */\n rowExpanded: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.element, prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func]),\n\n /**\n * To get any additional CSS classes that should be added to a row,\n * `rowClassNameGetter(index)` is called.\n */\n rowClassNameGetter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * If specified, `rowKeyGetter(index)` is called for each row and the\n * returned value overrides `key` for the particular row.\n */\n rowKeyGetter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n // TODO (jordan) Remove propType of groupHeaderHeight without losing documentation (moved to elementHeights)\n\n /**\n * Pixel height of the column group header.\n */\n groupHeaderHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of headerHeight without losing documentation (moved to elementHeights)\n\n /**\n * Pixel height of header.\n */\n headerHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n\n /**\n * Pixel height of fixedDataTableCellGroupLayout/cellGroupWrapper.\n * Default is headerHeight and groupHeaderHeight.\n *\n * This can be used with CSS to make a header cell span both the group & normal header row.\n * Setting this to a value larger than height will cause the content to\n * overflow the height. This is useful when adding a 2nd table as the group\n * header and vertically merging the 2 headers when a column is not part\n * of a group. Here are the necessary CSS changes:\n *\n * Both headers:\n * - cellGroupWrapper needs overflow-x: hidden and pointer-events: none\n * - cellGroup needs pointer-events: auto to reenable them on child els\n * Group header:\n * - Layout/main needs overflow: visible and a higher z-index\n * - CellLayout/main needs overflow-y: visible\n * - cellGroup needs overflow: visible\n */\n cellGroupWrapperHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of footerHeight without losing documentation (moved to elementHeights)\n\n /**\n * Pixel height of footer.\n */\n footerHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Value of horizontal scroll.\n */\n scrollLeft: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of scrollToRow & scrollToColumn without losing documentation\n\n /**\n * Index of column to scroll to.\n */\n scrollToColumn: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Value of vertical scroll.\n */\n scrollTop: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Index of row to scroll to.\n */\n scrollToRow: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Callback that is called when scrolling starts. The current horizontal and vertical scroll values,\n * and the current first and last row indexes will be provided to the callback.\n */\n onScrollStart: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when scrolling ends. The new horizontal and vertical scroll values,\n * and the new first and last row indexes will be provided to the callback.\n */\n onScrollEnd: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * If enabled scroll events will not be propagated outside of the table.\n */\n stopReactWheelPropagation: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * If enabled scroll events will never be bubbled to the browser default handler.\n * If disabled (default when unspecified), scroll events will be bubbled up if the scroll\n * doesn't lead to a change in scroll offsets, which is preferable if you like\n * the page/container to scroll up when the table is already scrolled up max.\n */\n stopScrollDefaultHandling: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * If enabled scroll events will not be propagated outside of the table.\n */\n stopScrollPropagation: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * Callback that is called when `rowHeightGetter` returns a different height\n * for a row than the `rowHeight` prop. This is necessary because initially\n * table estimates heights of some parts of the content.\n */\n onContentHeightChange: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a row is clicked.\n */\n onRowClick: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a contextual-menu event happens on a row.\n */\n onRowContextMenu: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a row is double clicked.\n */\n onRowDoubleClick: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a mouse-down event happens on a row.\n */\n onRowMouseDown: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a mouse-up event happens on a row.\n */\n onRowMouseUp: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a mouse-enter event happens on a row.\n */\n onRowMouseEnter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a mouse-leave event happens on a row.\n */\n onRowMouseLeave: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a touch-start event happens on a row.\n */\n onRowTouchStart: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a touch-end event happens on a row.\n */\n onRowTouchEnd: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a touch-move event happens on a row.\n */\n onRowTouchMove: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when resizer has been released\n * and column needs to be updated.\n *\n * Required if the isResizable property is true on any column.\n *\n * ```\n * function(\n * newColumnWidth: number,\n * columnKey: string,\n * )\n * ```\n */\n onColumnResizeEndCallback: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when reordering has been completed\n * and columns need to be updated.\n *\n * ```\n * function(\n * event {\n * columnBefore: string|undefined, // the column before the new location of this one\n * columnAfter: string|undefined, // the column after the new location of this one\n * reorderColumn: string, // the column key that was just reordered\n * }\n * )\n * ```\n */\n onColumnReorderEndCallback: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Whether a column is currently being resized.\n */\n isColumnResizing: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * Whether columns are currently being reordered.\n */\n isColumnReordering: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n // TODO (jordan) Remove propType of bufferRowCount without losing documentation\n\n /**\n * The number of rows outside the viewport to prerender. Defaults to roughly\n * half of the number of visible rows.\n */\n bufferRowCount: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number\n});\n\n_defineProperty(FixedDataTable, \"defaultProps\",\n/*object*/\n{\n elementHeights: {\n cellGroupWrapperHeight: undefined,\n footerHeight: 0,\n groupHeaderHeight: 0,\n headerHeight: 0\n },\n keyboardScrollEnabled: false,\n keyboardPageEnabled: false,\n touchScrollEnabled: false,\n stopScrollPropagation: false\n});\n\nvar HorizontalScrollbar =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(HorizontalScrollbar, _React$PureComponent);\n\n function HorizontalScrollbar() {\n _classCallCheck(this, HorizontalScrollbar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(HorizontalScrollbar).apply(this, arguments));\n }\n\n _createClass(HorizontalScrollbar, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n this._initialRender = true;\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._initialRender = false;\n }\n }, {\n key: \"render\",\n value: function render()\n /*object*/\n {\n var _this$props10 = this.props,\n offset = _this$props10.offset,\n size = _this$props10.size;\n var outerContainerStyle = {\n height: Scrollbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"].SIZE,\n width: size\n };\n var innerContainerStyle = {\n height: Scrollbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"].SIZE,\n overflow: 'hidden',\n width: size,\n top: offset\n };\n return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/horizontalScrollbar')),\n style: outerContainerStyle\n }, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n style: innerContainerStyle\n }, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(Scrollbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _extends({}, this.props, {\n isOpaque: true,\n orientation: \"horizontal\",\n offset: undefined\n }))));\n }\n }]);\n\n return HorizontalScrollbar;\n}(react__WEBPACK_IMPORTED_MODULE_4___default.a.PureComponent);\n\n_defineProperty(HorizontalScrollbar, \"propTypes\", {\n contentSize: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n offset: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n onScroll: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func.isRequired,\n position: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n size: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FixedDataTable);\n\n//# sourceURL=webpack://FixedDataTable/./src/FixedDataTable.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var FixedDataTableBufferedRows__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! FixedDataTableBufferedRows */ \"./src/FixedDataTableBufferedRows.js\");\n/* harmony import */ var ColumnResizerLine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ColumnResizerLine */ \"./src/ColumnResizerLine.js\");\n/* harmony import */ var FixedDataTableEventHelper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! FixedDataTableEventHelper */ \"./src/FixedDataTableEventHelper.js\");\n/* harmony import */ var FixedDataTableRow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! FixedDataTableRow */ \"./src/FixedDataTableRow.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var ReactTouchHandler__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ReactTouchHandler */ \"./src/ReactTouchHandler.js\");\n/* harmony import */ var ReactWheelHandler__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ReactWheelHandler */ \"./src/vendor_upstream/dom/ReactWheelHandler.js\");\n/* harmony import */ var Scrollbar__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Scrollbar */ \"./src/Scrollbar.js\");\n/* harmony import */ var ariaAttributes__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ariaAttributes */ \"./src/selectors/ariaAttributes.js\");\n/* harmony import */ var columnTemplates__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! columnTemplates */ \"./src/selectors/columnTemplates.js\");\n/* harmony import */ var cx__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! cx */ \"./src/vendor_upstream/stubs/cx.js\");\n/* harmony import */ var debounceCore__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! debounceCore */ \"./src/vendor_upstream/core/debounceCore.js\");\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! lodash/isNaN */ \"./node_modules/lodash/isNaN.js\");\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(lodash_isNaN__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var joinClasses__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! joinClasses */ \"./src/vendor_upstream/core/joinClasses.js\");\n/* harmony import */ var scrollbarsVisible__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! scrollbarsVisible */ \"./src/selectors/scrollbarsVisible.js\");\n/* harmony import */ var tableHeights__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! tableHeights */ \"./src/selectors/tableHeights.js\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Copyright Schrodinger, LLC\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FixedDataTable\n * @typechecks\n * \n */\n\n/*eslint no-bitwise:1*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ARROW_SCROLL_SPEED = 25;\n/**\n * Data grid component with fixed or scrollable header and columns.\n *\n * The layout of the data table is as follows:\n *\n * ```\n * +---------------------------------------------------+\n * | Fixed Column Group | Scrollable Column Group |\n * | Header | Header |\n * | | |\n * +---------------------------------------------------+\n * | | |\n * | Fixed Header Columns | Scrollable Header Columns |\n * | | |\n * +-----------------------+---------------------------+\n * | | |\n * | Fixed Body Columns | Scrollable Body Columns |\n * | | |\n * +-----------------------+---------------------------+\n * | | |\n * | Fixed Footer Columns | Scrollable Footer Columns |\n * | | |\n * +-----------------------+---------------------------+\n * ```\n *\n * - Fixed Column Group Header: These are the headers for a group\n * of columns if included in the table that do not scroll\n * vertically or horizontally.\n *\n * - Scrollable Column Group Header: The header for a group of columns\n * that do not move while scrolling vertically, but move horizontally\n * with the horizontal scrolling.\n *\n * - Fixed Header Columns: The header columns that do not move while scrolling\n * vertically or horizontally.\n *\n * - Scrollable Header Columns: The header columns that do not move\n * while scrolling vertically, but move horizontally with the horizontal\n * scrolling.\n *\n * - Fixed Body Columns: The body columns that do not move while scrolling\n * horizontally, but move vertically with the vertical scrolling.\n *\n * - Scrollable Body Columns: The body columns that move while scrolling\n * vertically or horizontally.\n */\n\nvar FixedDataTable =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(FixedDataTable, _React$Component);\n\n function FixedDataTable() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, FixedDataTable);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(FixedDataTable)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_shouldHandleTouchX\", function (\n /*number*/\n delta) {\n return (\n /*boolean*/\n _this.props.touchScrollEnabled && _this._shouldHandleWheelX(delta)\n );\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_shouldHandleTouchY\", function (\n /*number*/\n delta) {\n return (\n /*boolean*/\n _this.props.touchScrollEnabled && _this._shouldHandleWheelY(delta)\n );\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_shouldHandleWheelX\", function (\n /*number*/\n delta)\n /*boolean*/\n {\n var _this$props = _this.props,\n maxScrollX = _this$props.maxScrollX,\n scrollFlags = _this$props.scrollFlags,\n scrollX = _this$props.scrollX;\n var overflowX = scrollFlags.overflowX;\n\n if (overflowX === 'hidden') {\n return false;\n }\n\n delta = Math.round(delta);\n\n if (delta === 0) {\n return false;\n }\n\n return delta < 0 && scrollX > 0 || delta >= 0 && scrollX < maxScrollX;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_shouldHandleWheelY\", function (\n /*number*/\n delta)\n /*boolean*/\n {\n var _this$props2 = _this.props,\n maxScrollY = _this$props2.maxScrollY,\n scrollFlags = _this$props2.scrollFlags,\n scrollY = _this$props2.scrollY;\n var overflowY = scrollFlags.overflowY;\n\n if (overflowY === 'hidden' || delta === 0) {\n return false;\n }\n\n delta = Math.round(delta);\n\n if (delta === 0) {\n return false;\n }\n\n return delta < 0 && scrollY > 0 || delta >= 0 && scrollY < maxScrollY;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_reportContentHeight\", function () {\n var _tableHeightsSelector = Object(tableHeights__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(_this.props),\n contentHeight = _tableHeightsSelector.contentHeight;\n\n var onContentHeightChange = _this.props.onContentHeightChange;\n\n if (contentHeight !== _this._contentHeight && onContentHeightChange) {\n onContentHeightChange(contentHeight);\n }\n\n _this._contentHeight = contentHeight;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_renderRows\", function (\n /*number*/\n offsetTop, fixedCellTemplates, fixedRightCellTemplates, scrollableCellTemplates, bodyHeight,\n /*number*/\n ariaRowIndexOffset)\n /*object*/\n {\n var _scrollbarsVisible = Object(scrollbarsVisible__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(_this.props),\n scrollEnabledY = _scrollbarsVisible.scrollEnabledY;\n\n var props = _this.props;\n return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(FixedDataTableBufferedRows__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n ariaRowIndexOffset: ariaRowIndexOffset,\n isScrolling: props.scrolling,\n fixedColumns: fixedCellTemplates,\n fixedRightColumns: fixedRightCellTemplates,\n firstViewportRowIndex: props.firstRowIndex,\n endViewportRowIndex: props.endRowIndex,\n height: bodyHeight,\n offsetTop: offsetTop,\n onRowClick: props.onRowClick,\n onRowContextMenu: props.onRowContextMenu,\n onRowDoubleClick: props.onRowDoubleClick,\n onRowMouseUp: props.onRowMouseUp,\n onRowMouseDown: props.onRowMouseDown,\n onRowMouseEnter: props.onRowMouseEnter,\n onRowMouseLeave: props.onRowMouseLeave,\n onRowTouchStart: props.touchScrollEnabled ? props.onRowTouchStart : null,\n onRowTouchEnd: props.touchScrollEnabled ? props.onRowTouchEnd : null,\n onRowTouchMove: props.touchScrollEnabled ? props.onRowTouchMove : null,\n rowClassNameGetter: props.rowClassNameGetter,\n rowExpanded: props.rowExpanded,\n rowKeyGetter: props.rowKeyGetter,\n rowSettings: props.rowSettings,\n scrollLeft: props.scrollX,\n scrollTop: props.scrollY,\n scrollableColumns: scrollableCellTemplates,\n showLastRowBorder: true,\n width: props.tableSize.width,\n rowsToRender: props.rows,\n rowOffsets: props.rowOffsets,\n showScrollbarY: scrollEnabledY\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onRef\", function (div) {\n _this._divRef = div;\n\n if (_this.props.stopReactWheelPropagation) {\n _this._wheelHandler.setRoot(div);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onColumnResize\", function (\n /*number*/\n combinedWidth,\n /*number*/\n leftOffset,\n /*number*/\n cellWidth,\n /*?number*/\n cellMinWidth,\n /*?number*/\n cellMaxWidth,\n /*number|string*/\n columnKey,\n /*object*/\n event) {\n var coordinates = FixedDataTableEventHelper__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getCoordinatesFromEvent(event);\n var clientX = coordinates.x;\n var clientY = coordinates.y;\n\n _this.props.columnActions.resizeColumn({\n cellMinWidth: cellMinWidth,\n cellMaxWidth: cellMaxWidth,\n cellWidth: cellWidth,\n columnKey: columnKey,\n combinedWidth: combinedWidth,\n clientX: clientX,\n clientY: clientY,\n leftOffset: leftOffset\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onColumnReorder\", function (\n /*string*/\n columnKey,\n /*number*/\n width,\n /*number*/\n left,\n /*object*/\n event) {\n _this.props.columnActions.startColumnReorder({\n scrollStart: _this.props.scrollX,\n columnKey: columnKey,\n width: width,\n left: left\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onColumnReorderMove\", function (\n /*number*/\n deltaX) {\n _this.props.columnActions.moveColumnReorder(deltaX);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onColumnReorderEnd\", function (\n /*object*/\n props,\n /*object*/\n event) {\n var _this$props3 = _this.props,\n columnActions = _this$props3.columnActions,\n _this$props3$columnRe = _this$props3.columnReorderingData,\n cancelReorder = _this$props3$columnRe.cancelReorder,\n columnAfter = _this$props3$columnRe.columnAfter,\n columnBefore = _this$props3$columnRe.columnBefore,\n columnKey = _this$props3$columnRe.columnKey,\n scrollStart = _this$props3$columnRe.scrollStart,\n onColumnReorderEndCallback = _this$props3.onColumnReorderEndCallback,\n onHorizontalScroll = _this$props3.onHorizontalScroll,\n scrollX = _this$props3.scrollX;\n columnActions.stopColumnReorder();\n\n if (cancelReorder) {\n return;\n }\n\n onColumnReorderEndCallback({\n columnAfter: columnAfter,\n columnBefore: columnBefore,\n reorderColumn: columnKey\n });\n\n if (scrollStart !== scrollX && onHorizontalScroll) {\n onHorizontalScroll(scrollX);\n }\n\n ;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (\n /*number*/\n deltaX,\n /*number*/\n deltaY) {\n var _this$props4 = _this.props,\n maxScrollX = _this$props4.maxScrollX,\n maxScrollY = _this$props4.maxScrollY,\n onHorizontalScroll = _this$props4.onHorizontalScroll,\n onVerticalScroll = _this$props4.onVerticalScroll,\n scrollActions = _this$props4.scrollActions,\n scrollFlags = _this$props4.scrollFlags,\n scrollX = _this$props4.scrollX,\n scrollY = _this$props4.scrollY,\n scrolling = _this$props4.scrolling;\n var overflowX = scrollFlags.overflowX,\n overflowY = scrollFlags.overflowY;\n var x = scrollX;\n var y = scrollY;\n\n if (Math.abs(deltaY) > Math.abs(deltaX) && overflowY !== 'hidden') {\n y += deltaY;\n y = y < 0 ? 0 : y;\n y = y > maxScrollY ? maxScrollY : y; //NOTE (jordan) This is a hacky workaround to prevent FDT from setting its internal state\n\n if (onVerticalScroll ? onVerticalScroll(y) : true) {\n scrollActions.scrollToY(y);\n }\n } else if (deltaX && overflowX !== 'hidden') {\n x += deltaX;\n x = x < 0 ? 0 : x;\n x = x > maxScrollX ? maxScrollX : x; // This is a workaround to prevent content blurring. This happens when translate3d\n // is applied with non-rounded values to elements having text.\n\n var roundedX = Math.round(x); //NOTE (asif) This is a hacky workaround to prevent FDT from setting its internal state\n\n if (onHorizontalScroll ? onHorizontalScroll(roundedX) : true) {\n scrollActions.scrollToX(roundedX);\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onHorizontalScroll\", function (\n /*number*/\n scrollPos) {\n var _this$props5 = _this.props,\n onHorizontalScroll = _this$props5.onHorizontalScroll,\n scrollActions = _this$props5.scrollActions,\n scrollX = _this$props5.scrollX,\n scrolling = _this$props5.scrolling;\n\n if (scrollPos === scrollX) {\n return;\n } // This is a workaround to prevent content blurring. This happens when translate3d\n // is applied with non-rounded values to elements having text.\n\n\n var roundedScrollPos = Math.round(scrollPos);\n\n if (onHorizontalScroll ? onHorizontalScroll(roundedScrollPos) : true) {\n scrollActions.scrollToX(roundedScrollPos);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onVerticalScroll\", function (\n /*number*/\n scrollPos) {\n var _this$props6 = _this.props,\n onVerticalScroll = _this$props6.onVerticalScroll,\n scrollActions = _this$props6.scrollActions,\n scrollY = _this$props6.scrollY;\n\n if (scrollPos === scrollY) {\n return;\n }\n\n if (onVerticalScroll ? onVerticalScroll(scrollPos) : true) {\n scrollActions.scrollToY(scrollPos);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_didScroll\", function (\n /* !object */\n nextProps) {\n var onScrollStart = nextProps.onScrollStart,\n scrollX = nextProps.scrollX,\n scrollY = nextProps.scrollY,\n onHorizontalScroll = nextProps.onHorizontalScroll,\n onVerticalScroll = nextProps.onVerticalScroll,\n ownerHeight = nextProps.tableSize.ownerHeight;\n var _this$props7 = _this.props,\n oldEndRowIndex = _this$props7.endRowIndex,\n oldFirstRowIndex = _this$props7.firstRowIndex,\n oldScrollX = _this$props7.scrollX,\n oldScrollY = _this$props7.scrollY,\n oldOwnerHeight = _this$props7.tableSize.ownerHeight; // check if scroll values have changed - we have an extra check on NaN because (NaN !== NaN)\n\n var ownerHeightChanged = ownerHeight !== oldOwnerHeight && !(lodash_isNaN__WEBPACK_IMPORTED_MODULE_13___default()(ownerHeight) && lodash_isNaN__WEBPACK_IMPORTED_MODULE_13___default()(oldOwnerHeight));\n var scrollXChanged = scrollX !== oldScrollX;\n var scrollYChanged = scrollY !== oldScrollY; // if none of the above changed, then a scroll didn't happen at all\n\n if (!ownerHeightChanged && !scrollXChanged && !scrollYChanged) {\n return;\n } // only call onScrollStart if scrolling wasn't on previously\n\n\n if (!_this.props.scrolling && onScrollStart) {\n onScrollStart(oldScrollX, oldScrollY, oldFirstRowIndex, oldEndRowIndex);\n }\n\n if (scrollXChanged && onHorizontalScroll) {\n onHorizontalScroll(scrollX);\n }\n\n if (scrollYChanged && onVerticalScroll) {\n onVerticalScroll(scrollY);\n } // debounced version of didScrollStop as we don't immediately stop scrolling\n\n\n _this._didScrollStop();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_didScrollStopSync\", function () {\n var _this$props8 = _this.props,\n endRowIndex = _this$props8.endRowIndex,\n firstRowIndex = _this$props8.firstRowIndex,\n onScrollEnd = _this$props8.onScrollEnd,\n scrollActions = _this$props8.scrollActions,\n scrollX = _this$props8.scrollX,\n scrollY = _this$props8.scrollY,\n scrolling = _this$props8.scrolling;\n\n if (!scrolling) {\n return;\n }\n\n scrollActions.stopScroll();\n\n if (onScrollEnd) {\n onScrollEnd(scrollX, scrollY, firstRowIndex, endRowIndex);\n }\n });\n\n return _this;\n }\n\n _createClass(FixedDataTable, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n this._didScrollStop = Object(debounceCore__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(this._didScrollStopSync, 200, this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._wheelHandler = new ReactWheelHandler__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this._onScroll, this._shouldHandleWheelX, this._shouldHandleWheelY, this.props.stopScrollDefaultHandling, this.props.stopScrollPropagation);\n this._touchHandler = new ReactTouchHandler__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this._onScroll, this._shouldHandleTouchX, this._shouldHandleTouchY, this.props.stopScrollDefaultHandling, this.props.stopScrollPropagation);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n // TODO (pradeep): Remove these and pass to our table component directly after\n // React provides an API where event handlers can be specified to be non-passive (facebook/react#6436)\n this._divRef && this._divRef.removeEventListener('wheel', this._wheelHandler.onWheel, {\n passive: false\n });\n this._divRef && this._divRef.removeEventListener('touchmove', this._touchHandler.onTouchMove, {\n passive: false\n });\n this._wheelHandler = null;\n this._touchHandler = null; // Cancel any pending debounced scroll handling and handle immediately.\n\n this._didScrollStop.reset();\n\n this._didScrollStopSync();\n }\n }, {\n key: \"_onKeyDown\",\n value: function _onKeyDown(event) {\n var _tableHeightsSelector2 = Object(tableHeights__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(this.props),\n scrollbarYHeight = _tableHeightsSelector2.scrollbarYHeight;\n\n if (this.props.keyboardPageEnabled) {\n switch (event.key) {\n case 'PageDown':\n this._onScroll(0, scrollbarYHeight);\n\n event.preventDefault();\n break;\n\n case 'PageUp':\n this._onScroll(0, scrollbarYHeight * -1);\n\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }\n\n if (this.props.keyboardScrollEnabled) {\n switch (event.key) {\n case 'ArrowDown':\n this._onScroll(0, ARROW_SCROLL_SPEED);\n\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n this._onScroll(0, ARROW_SCROLL_SPEED * -1);\n\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n this._onScroll(ARROW_SCROLL_SPEED, 0);\n\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n this._onScroll(ARROW_SCROLL_SPEED * -1, 0);\n\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._divRef && this._divRef.addEventListener('wheel', this._wheelHandler.onWheel, {\n passive: false\n });\n\n if (this.props.touchScrollEnabled) {\n this._divRef && this._divRef.addEventListener('touchmove', this._touchHandler.onTouchMove, {\n passive: false\n });\n }\n\n this._reportContentHeight();\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(\n /*object*/\n nextProps) {\n this._didScroll(nextProps);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._reportContentHeight();\n }\n }, {\n key: \"render\",\n value: function render()\n /*object*/\n {\n var _ariaAttributesSelect = Object(ariaAttributes__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(this.props),\n ariaGroupHeaderIndex = _ariaAttributesSelect.ariaGroupHeaderIndex,\n ariaHeaderIndex = _ariaAttributesSelect.ariaHeaderIndex,\n ariaFooterIndex = _ariaAttributesSelect.ariaFooterIndex,\n ariaRowCount = _ariaAttributesSelect.ariaRowCount,\n ariaRowIndexOffset = _ariaAttributesSelect.ariaRowIndexOffset;\n\n var _columnTemplatesSelec = Object(columnTemplates__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(this.props),\n fixedColumnGroups = _columnTemplatesSelec.fixedColumnGroups,\n fixedColumns = _columnTemplatesSelec.fixedColumns,\n fixedRightColumnGroups = _columnTemplatesSelec.fixedRightColumnGroups,\n fixedRightColumns = _columnTemplatesSelec.fixedRightColumns,\n scrollableColumnGroups = _columnTemplatesSelec.scrollableColumnGroups,\n scrollableColumns = _columnTemplatesSelec.scrollableColumns;\n\n var _tableHeightsSelector3 = Object(tableHeights__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(this.props),\n bodyHeight = _tableHeightsSelector3.bodyHeight,\n bodyOffsetTop = _tableHeightsSelector3.bodyOffsetTop,\n componentHeight = _tableHeightsSelector3.componentHeight,\n footOffsetTop = _tableHeightsSelector3.footOffsetTop,\n scrollbarXOffsetTop = _tableHeightsSelector3.scrollbarXOffsetTop,\n visibleRowsHeight = _tableHeightsSelector3.visibleRowsHeight;\n\n var _this$props9 = this.props,\n className = _this$props9.className,\n columnReorderingData = _this$props9.columnReorderingData,\n columnResizingData = _this$props9.columnResizingData,\n elementHeights = _this$props9.elementHeights,\n isColumnReordering = _this$props9.isColumnReordering,\n isColumnResizing = _this$props9.isColumnResizing,\n maxScrollX = _this$props9.maxScrollX,\n maxScrollY = _this$props9.maxScrollY,\n onColumnReorderEndCallback = _this$props9.onColumnReorderEndCallback,\n onColumnResizeEndCallback = _this$props9.onColumnResizeEndCallback,\n scrollContentHeight = _this$props9.scrollContentHeight,\n scrollX = _this$props9.scrollX,\n scrollY = _this$props9.scrollY,\n scrolling = _this$props9.scrolling,\n tableSize = _this$props9.tableSize,\n touchScrollEnabled = _this$props9.touchScrollEnabled;\n var ownerHeight = tableSize.ownerHeight,\n width = tableSize.width;\n var cellGroupWrapperHeight = elementHeights.cellGroupWrapperHeight,\n footerHeight = elementHeights.footerHeight,\n groupHeaderHeight = elementHeights.groupHeaderHeight,\n headerHeight = elementHeights.headerHeight;\n\n var _scrollbarsVisible2 = Object(scrollbarsVisible__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(this.props),\n scrollEnabledX = _scrollbarsVisible2.scrollEnabledX,\n scrollEnabledY = _scrollbarsVisible2.scrollEnabledY;\n\n var onColumnReorder = onColumnReorderEndCallback ? this._onColumnReorder : null;\n var groupHeader;\n\n if (groupHeaderHeight > 0) {\n groupHeader = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(FixedDataTableRow__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n key: \"group_header\",\n ariaRowIndex: ariaGroupHeaderIndex,\n isHeaderOrFooter: true,\n isScrolling: scrolling,\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/header'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/header')),\n width: width,\n height: groupHeaderHeight,\n cellGroupWrapperHeight: cellGroupWrapperHeight,\n index: 0,\n zIndex: 1,\n offsetTop: 0,\n scrollLeft: scrollX,\n fixedColumns: fixedColumnGroups,\n fixedRightColumns: fixedRightColumnGroups,\n scrollableColumns: scrollableColumnGroups,\n visible: true,\n onColumnResize: this._onColumnResize,\n onColumnReorder: onColumnReorder,\n onColumnReorderMove: this._onColumnReorderMove,\n showScrollbarY: scrollEnabledY\n });\n }\n\n var scrollbarY;\n\n if (scrollEnabledY) {\n scrollbarY = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(Scrollbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n size: visibleRowsHeight,\n contentSize: scrollContentHeight,\n onScroll: this._onVerticalScroll,\n verticalTop: bodyOffsetTop,\n position: scrollY,\n touchEnabled: touchScrollEnabled\n });\n }\n\n var scrollbarX;\n\n if (scrollEnabledX) {\n scrollbarX = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(HorizontalScrollbar, {\n contentSize: width + maxScrollX,\n offset: scrollbarXOffsetTop,\n onScroll: this._onHorizontalScroll,\n position: scrollX,\n size: width,\n touchEnabled: touchScrollEnabled\n });\n }\n\n var dragKnob = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(ColumnResizerLine__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n height: componentHeight,\n initialWidth: columnResizingData.width || 0,\n minWidth: columnResizingData.minWidth || 0,\n maxWidth: columnResizingData.maxWidth || Number.MAX_VALUE,\n visible: !!isColumnResizing,\n leftOffset: columnResizingData.left || 0,\n knobHeight: headerHeight,\n initialEvent: columnResizingData.initialEvent,\n onColumnResizeEnd: onColumnResizeEndCallback,\n columnKey: columnResizingData.key,\n touchEnabled: touchScrollEnabled\n });\n var footer = null;\n\n if (footerHeight) {\n footer = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(FixedDataTableRow__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n key: \"footer\",\n ariaRowIndex: ariaFooterIndex,\n isHeaderOrFooter: true,\n isScrolling: scrolling,\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/footer'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/footer')),\n width: width,\n height: footerHeight,\n index: -1,\n zIndex: 1,\n offsetTop: footOffsetTop,\n visible: true,\n fixedColumns: fixedColumns.footer,\n fixedRightColumns: fixedRightColumns.footer,\n scrollableColumns: scrollableColumns.footer,\n scrollLeft: scrollX,\n showScrollbarY: scrollEnabledY\n });\n }\n\n var rows = this._renderRows(bodyOffsetTop, fixedColumns.cell, fixedRightColumns.cell, scrollableColumns.cell, bodyHeight, ariaRowIndexOffset);\n\n var header = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(FixedDataTableRow__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n key: \"header\",\n ariaRowIndex: ariaHeaderIndex,\n isHeaderOrFooter: true,\n isScrolling: scrolling,\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/header'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/header')),\n width: width,\n height: headerHeight,\n cellGroupWrapperHeight: cellGroupWrapperHeight,\n index: -1,\n zIndex: 1,\n offsetTop: groupHeaderHeight,\n scrollLeft: scrollX,\n visible: true,\n fixedColumns: fixedColumns.header,\n fixedRightColumns: fixedRightColumns.header,\n scrollableColumns: scrollableColumns.header,\n touchEnabled: touchScrollEnabled,\n onColumnResize: this._onColumnResize,\n onColumnReorder: onColumnReorder,\n onColumnReorderMove: this._onColumnReorderMove,\n onColumnReorderEnd: this._onColumnReorderEnd,\n isColumnReordering: !!isColumnReordering,\n columnReorderingData: columnReorderingData,\n showScrollbarY: scrollEnabledY\n });\n var topShadow;\n\n if (scrollY) {\n topShadow = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/topShadow'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/topShadow')),\n style: {\n top: bodyOffsetTop\n }\n });\n } // ownerScrollAvailable is true if the rows rendered will overflow the owner element\n // so we show a shadow in that case even if the FDT component can't scroll anymore\n\n\n var ownerScrollAvailable = ownerHeight && ownerHeight < componentHeight && scrollContentHeight > visibleRowsHeight;\n var bottomShadow;\n\n if (ownerScrollAvailable || scrollY < maxScrollY) {\n bottomShadow = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/bottomShadow'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/bottomShadow')),\n style: {\n top: footOffsetTop\n }\n });\n }\n\n var tabIndex = null;\n\n if (this.props.keyboardPageEnabled || this.props.keyboardScrollEnabled) {\n tabIndex = 0;\n }\n\n return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(className, Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/main'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/main')),\n role: \"grid\",\n \"aria-rowcount\": ariaRowCount,\n tabIndex: tabIndex,\n onKeyDown: this._onKeyDown,\n onTouchStart: touchScrollEnabled ? this._touchHandler.onTouchStart : null,\n onTouchEnd: touchScrollEnabled ? this._touchHandler.onTouchEnd : null,\n onTouchCancel: touchScrollEnabled ? this._touchHandler.onTouchCancel : null,\n ref: this._onRef,\n style: {\n height: componentHeight,\n width: width\n }\n }, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/rowsContainer'),\n style: {\n height: scrollbarXOffsetTop,\n width: width\n }\n }, dragKnob, groupHeader, header, rows, footer, topShadow, bottomShadow), scrollbarY, scrollbarX);\n }\n }]);\n\n return FixedDataTable;\n}(react__WEBPACK_IMPORTED_MODULE_4___default.a.Component);\n\n_defineProperty(FixedDataTable, \"propTypes\", {\n // TODO (jordan) Remove propType of width without losing documentation (moved to tableSize)\n\n /**\n * Pixel width of table. If all columns do not fit,\n * a horizontal scrollbar will appear.\n */\n width: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n // TODO (jordan) Remove propType of height without losing documentation (moved to tableSize)\n\n /**\n * Pixel height of table. If all rows do not fit,\n * a vertical scrollbar will appear.\n *\n * Either `height` or `maxHeight` must be specified.\n */\n height: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Class name to be passed into parent container\n */\n className: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.string,\n // TODO (jordan) Remove propType of maxHeight without losing documentation (moved to tableSize)\n\n /**\n * Maximum pixel height of table. If all rows do not fit,\n * a vertical scrollbar will appear.\n *\n * Either `height` or `maxHeight` must be specified.\n */\n maxHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of ownerHeight without losing documentation (moved to tableSize)\n\n /**\n * Pixel height of table's owner, this is used in a managed scrolling\n * situation when you want to slide the table up from below the fold\n * without having to constantly update the height on every scroll tick.\n * Instead, vary this property on scroll. By using `ownerHeight`, we\n * over-render the table while making sure the footer and horizontal\n * scrollbar of the table are visible when the current space for the table\n * in view is smaller than the final, over-flowing height of table. It\n * allows us to avoid resizing and reflowing table when it is moving in the\n * view.\n *\n * This is used if `ownerHeight < height` (or `maxHeight`).\n */\n ownerHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of overflowX & overflowY without losing documentation (moved to scrollFlags)\n overflowX: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.oneOf(['hidden', 'auto']),\n overflowY: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.oneOf(['hidden', 'auto']),\n\n /**\n * Boolean flag indicating of touch scrolling should be enabled\n * This feature is current in beta and may have bugs\n */\n touchScrollEnabled: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * Boolean flags to control if scrolling with keys is enabled\n */\n keyboardScrollEnabled: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n keyboardPageEnabled: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n // TODO (jordan) Remove propType of showScrollbarX & showScrollbarY without losing documentation (moved to scrollFlags)\n\n /**\n * Hide the scrollbar but still enable scroll functionality\n */\n showScrollbarX: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n showScrollbarY: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * Callback when horizontally scrolling the grid.\n *\n * Return false to stop propagation.\n */\n onHorizontalScroll: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback when vertically scrolling the grid.\n *\n * Return false to stop propagation.\n */\n onVerticalScroll: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n // TODO (jordan) Remove propType of rowsCount without losing documentation (moved to rowSettings)\n\n /**\n * Number of rows in the table.\n */\n rowsCount: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n // TODO (jordan) Remove propType of rowHeight without losing documentation (moved to rowSettings)\n\n /**\n * Pixel height of rows unless `rowHeightGetter` is specified and returns\n * different value.\n */\n rowHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n // TODO (jordan) Remove propType of rowHeightGetter without losing documentation (moved to rowSettings)\n\n /**\n * If specified, `rowHeightGetter(index)` is called for each row and the\n * returned value overrides `rowHeight` for particular row.\n */\n rowHeightGetter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n // TODO (jordan) Remove propType of subRowHeight without losing documentation (moved to rowSettings)\n\n /**\n * Pixel height of sub-row unless `subRowHeightGetter` is specified and returns\n * different value. Defaults to 0 and no sub-row being displayed.\n */\n subRowHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of subRowHeightGetter without losing documentation (moved to rowSettings)\n\n /**\n * If specified, `subRowHeightGetter(index)` is called for each row and the\n * returned value overrides `subRowHeight` for particular row.\n */\n subRowHeightGetter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * The row expanded for table row.\n * This can either be a React element, or a function that generates\n * a React Element. By default, the React element passed in can expect to\n * receive the following props:\n *\n * ```\n * props: {\n * rowIndex; number // (the row index)\n * height: number // (supplied from subRowHeight or subRowHeightGetter)\n * width: number // (supplied from the Table)\n * }\n * ```\n *\n * Because you are passing in your own React element, you can feel free to\n * pass in whatever props you may want or need.\n *\n * If you pass in a function, you will receive the same props object as the\n * first argument.\n */\n rowExpanded: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.element, prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func]),\n\n /**\n * To get any additional CSS classes that should be added to a row,\n * `rowClassNameGetter(index)` is called.\n */\n rowClassNameGetter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * If specified, `rowKeyGetter(index)` is called for each row and the\n * returned value overrides `key` for the particular row.\n */\n rowKeyGetter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n // TODO (jordan) Remove propType of groupHeaderHeight without losing documentation (moved to elementHeights)\n\n /**\n * Pixel height of the column group header.\n */\n groupHeaderHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of headerHeight without losing documentation (moved to elementHeights)\n\n /**\n * Pixel height of header.\n */\n headerHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n\n /**\n * Pixel height of fixedDataTableCellGroupLayout/cellGroupWrapper.\n * Default is headerHeight and groupHeaderHeight.\n *\n * This can be used with CSS to make a header cell span both the group & normal header row.\n * Setting this to a value larger than height will cause the content to\n * overflow the height. This is useful when adding a 2nd table as the group\n * header and vertically merging the 2 headers when a column is not part\n * of a group. Here are the necessary CSS changes:\n *\n * Both headers:\n * - cellGroupWrapper needs overflow-x: hidden and pointer-events: none\n * - cellGroup needs pointer-events: auto to reenable them on child els\n * Group header:\n * - Layout/main needs overflow: visible and a higher z-index\n * - CellLayout/main needs overflow-y: visible\n * - cellGroup needs overflow: visible\n */\n cellGroupWrapperHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of footerHeight without losing documentation (moved to elementHeights)\n\n /**\n * Pixel height of footer.\n */\n footerHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Value of horizontal scroll.\n */\n scrollLeft: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of scrollToRow & scrollToColumn without losing documentation\n\n /**\n * Index of column to scroll to.\n */\n scrollToColumn: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Value of vertical scroll.\n */\n scrollTop: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Index of row to scroll to.\n */\n scrollToRow: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Callback that is called when scrolling starts. The current horizontal and vertical scroll values,\n * and the current first and last row indexes will be provided to the callback.\n */\n onScrollStart: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when scrolling ends. The new horizontal and vertical scroll values,\n * and the new first and last row indexes will be provided to the callback.\n */\n onScrollEnd: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * If enabled scroll events will not be propagated outside of the table.\n */\n stopReactWheelPropagation: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * If enabled scroll events will never be bubbled to the browser default handler.\n * If disabled (default when unspecified), scroll events will be bubbled up if the scroll\n * doesn't lead to a change in scroll offsets, which is preferable if you like\n * the page/container to scroll up when the table is already scrolled up max.\n */\n stopScrollDefaultHandling: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * If enabled scroll events will not be propagated outside of the table.\n */\n stopScrollPropagation: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * Callback that is called when `rowHeightGetter` returns a different height\n * for a row than the `rowHeight` prop. This is necessary because initially\n * table estimates heights of some parts of the content.\n */\n onContentHeightChange: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a row is clicked.\n */\n onRowClick: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a contextual-menu event happens on a row.\n */\n onRowContextMenu: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a row is double clicked.\n */\n onRowDoubleClick: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a mouse-down event happens on a row.\n */\n onRowMouseDown: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a mouse-up event happens on a row.\n */\n onRowMouseUp: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a mouse-enter event happens on a row.\n */\n onRowMouseEnter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a mouse-leave event happens on a row.\n */\n onRowMouseLeave: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a touch-start event happens on a row.\n */\n onRowTouchStart: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a touch-end event happens on a row.\n */\n onRowTouchEnd: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a touch-move event happens on a row.\n */\n onRowTouchMove: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when resizer has been released\n * and column needs to be updated.\n *\n * Required if the isResizable property is true on any column.\n *\n * ```\n * function(\n * newColumnWidth: number,\n * columnKey: string,\n * )\n * ```\n */\n onColumnResizeEndCallback: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when reordering has been completed\n * and columns need to be updated.\n *\n * ```\n * function(\n * event {\n * columnBefore: string|undefined, // the column before the new location of this one\n * columnAfter: string|undefined, // the column after the new location of this one\n * reorderColumn: string, // the column key that was just reordered\n * }\n * )\n * ```\n */\n onColumnReorderEndCallback: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Whether a column is currently being resized.\n */\n isColumnResizing: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * Whether columns are currently being reordered.\n */\n isColumnReordering: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n // TODO (jordan) Remove propType of bufferRowCount without losing documentation\n\n /**\n * The number of rows outside the viewport to prerender. Defaults to roughly\n * half of the number of visible rows.\n */\n bufferRowCount: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (pradeep): Move elementHeights to a selector instead of passing it through redux as state variables\n\n /**\n * Row heights of the header, groupheader, footer, and cell group wrapper\n * grouped into a single object.\n *\n * @ignore\n */\n elementHeights: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.shape({\n cellGroupWrapperHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n footerHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n groupHeaderHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n headerHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number\n })\n});\n\n_defineProperty(FixedDataTable, \"defaultProps\",\n/*object*/\n{\n elementHeights: {\n cellGroupWrapperHeight: undefined,\n footerHeight: 0,\n groupHeaderHeight: 0,\n headerHeight: 0\n },\n keyboardScrollEnabled: false,\n keyboardPageEnabled: false,\n touchScrollEnabled: false,\n stopScrollPropagation: false\n});\n\nvar HorizontalScrollbar =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(HorizontalScrollbar, _React$PureComponent);\n\n function HorizontalScrollbar() {\n _classCallCheck(this, HorizontalScrollbar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(HorizontalScrollbar).apply(this, arguments));\n }\n\n _createClass(HorizontalScrollbar, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n this._initialRender = true;\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._initialRender = false;\n }\n }, {\n key: \"render\",\n value: function render()\n /*object*/\n {\n var _this$props10 = this.props,\n offset = _this$props10.offset,\n size = _this$props10.size;\n var outerContainerStyle = {\n height: Scrollbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"].SIZE,\n width: size\n };\n var innerContainerStyle = {\n height: Scrollbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"].SIZE,\n overflow: 'hidden',\n width: size,\n top: offset\n };\n return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/horizontalScrollbar')),\n style: outerContainerStyle\n }, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n style: innerContainerStyle\n }, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(Scrollbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _extends({}, this.props, {\n isOpaque: true,\n orientation: \"horizontal\",\n offset: undefined\n }))));\n }\n }]);\n\n return HorizontalScrollbar;\n}(react__WEBPACK_IMPORTED_MODULE_4___default.a.PureComponent);\n\n_defineProperty(HorizontalScrollbar, \"propTypes\", {\n contentSize: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n offset: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n onScroll: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func.isRequired,\n position: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n size: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FixedDataTable);\n\n//# sourceURL=webpack://FixedDataTable/./src/FixedDataTable.js?"); /***/ }), @@ -2117,7 +2117,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Loca /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var FixedDataTableContainer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! FixedDataTableContainer */ \"./src/FixedDataTableContainer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Table\", function() { return FixedDataTableContainer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var FixedDataTableCellDefault__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! FixedDataTableCellDefault */ \"./src/FixedDataTableCellDefault.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Cell\", function() { return FixedDataTableCellDefault__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var FixedDataTableColumn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! FixedDataTableColumn */ \"./src/FixedDataTableColumn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Column\", function() { return FixedDataTableColumn__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var FixedDataTableColumnGroup__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! FixedDataTableColumnGroup */ \"./src/FixedDataTableColumnGroup.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ColumnGroup\", function() { return FixedDataTableColumnGroup__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/**\n * Copyright Schrodinger, LLC\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FixedDataTableRoot\n */\n\n\n\n\n\n\nvar version = '1.0.0-beta.29';\n\n\n//# sourceURL=webpack://FixedDataTable/./src/FixedDataTableRoot.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var FixedDataTableContainer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! FixedDataTableContainer */ \"./src/FixedDataTableContainer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Table\", function() { return FixedDataTableContainer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var FixedDataTableCellDefault__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! FixedDataTableCellDefault */ \"./src/FixedDataTableCellDefault.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Cell\", function() { return FixedDataTableCellDefault__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var FixedDataTableColumn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! FixedDataTableColumn */ \"./src/FixedDataTableColumn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Column\", function() { return FixedDataTableColumn__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var FixedDataTableColumnGroup__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! FixedDataTableColumnGroup */ \"./src/FixedDataTableColumnGroup.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ColumnGroup\", function() { return FixedDataTableColumnGroup__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/**\n * Copyright Schrodinger, LLC\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FixedDataTableRoot\n */\n\n\n\n\n\n\nvar version = '1.0.0-beta.30';\n\n\n//# sourceURL=webpack://FixedDataTable/./src/FixedDataTableRoot.js?"); /***/ }), diff --git a/dist/fixed-data-table.min.css b/dist/fixed-data-table.min.css index fee26dbf..7735e8e3 100644 --- a/dist/fixed-data-table.min.css +++ b/dist/fixed-data-table.min.css @@ -1,5 +1,5 @@ /** - * FixedDataTable v1.0.0-beta.29 + * FixedDataTable v1.0.0-beta.30 * * Copyright Schrodinger, LLC * All rights reserved. diff --git a/dist/fixed-data-table.min.js b/dist/fixed-data-table.min.js index 9d847981..2bc75766 100644 --- a/dist/fixed-data-table.min.js +++ b/dist/fixed-data-table.min.js @@ -1,5 +1,5 @@ /** - * FixedDataTable v1.0.0-beta.29 + * FixedDataTable v1.0.0-beta.30 * * Copyright Schrodinger, LLC * All rights reserved. @@ -1985,7 +1985,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var DOMM /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var FixedDataTableBufferedRows__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! FixedDataTableBufferedRows */ \"./src/FixedDataTableBufferedRows.js\");\n/* harmony import */ var ColumnResizerLine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ColumnResizerLine */ \"./src/ColumnResizerLine.js\");\n/* harmony import */ var FixedDataTableEventHelper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! FixedDataTableEventHelper */ \"./src/FixedDataTableEventHelper.js\");\n/* harmony import */ var FixedDataTableRow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! FixedDataTableRow */ \"./src/FixedDataTableRow.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var ReactTouchHandler__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ReactTouchHandler */ \"./src/ReactTouchHandler.js\");\n/* harmony import */ var ReactWheelHandler__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ReactWheelHandler */ \"./src/vendor_upstream/dom/ReactWheelHandler.js\");\n/* harmony import */ var Scrollbar__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Scrollbar */ \"./src/Scrollbar.js\");\n/* harmony import */ var ariaAttributes__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ariaAttributes */ \"./src/selectors/ariaAttributes.js\");\n/* harmony import */ var columnTemplates__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! columnTemplates */ \"./src/selectors/columnTemplates.js\");\n/* harmony import */ var cx__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! cx */ \"./src/vendor_upstream/stubs/cx.js\");\n/* harmony import */ var debounceCore__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! debounceCore */ \"./src/vendor_upstream/core/debounceCore.js\");\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! lodash/isNaN */ \"./node_modules/lodash/isNaN.js\");\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(lodash_isNaN__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var joinClasses__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! joinClasses */ \"./src/vendor_upstream/core/joinClasses.js\");\n/* harmony import */ var scrollbarsVisible__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! scrollbarsVisible */ \"./src/selectors/scrollbarsVisible.js\");\n/* harmony import */ var tableHeights__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! tableHeights */ \"./src/selectors/tableHeights.js\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Copyright Schrodinger, LLC\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FixedDataTable\n * @typechecks\n * \n */\n\n/*eslint no-bitwise:1*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ARROW_SCROLL_SPEED = 25;\n/**\n * Data grid component with fixed or scrollable header and columns.\n *\n * The layout of the data table is as follows:\n *\n * ```\n * +---------------------------------------------------+\n * | Fixed Column Group | Scrollable Column Group |\n * | Header | Header |\n * | | |\n * +---------------------------------------------------+\n * | | |\n * | Fixed Header Columns | Scrollable Header Columns |\n * | | |\n * +-----------------------+---------------------------+\n * | | |\n * | Fixed Body Columns | Scrollable Body Columns |\n * | | |\n * +-----------------------+---------------------------+\n * | | |\n * | Fixed Footer Columns | Scrollable Footer Columns |\n * | | |\n * +-----------------------+---------------------------+\n * ```\n *\n * - Fixed Column Group Header: These are the headers for a group\n * of columns if included in the table that do not scroll\n * vertically or horizontally.\n *\n * - Scrollable Column Group Header: The header for a group of columns\n * that do not move while scrolling vertically, but move horizontally\n * with the horizontal scrolling.\n *\n * - Fixed Header Columns: The header columns that do not move while scrolling\n * vertically or horizontally.\n *\n * - Scrollable Header Columns: The header columns that do not move\n * while scrolling vertically, but move horizontally with the horizontal\n * scrolling.\n *\n * - Fixed Body Columns: The body columns that do not move while scrolling\n * horizontally, but move vertically with the vertical scrolling.\n *\n * - Scrollable Body Columns: The body columns that move while scrolling\n * vertically or horizontally.\n */\n\nvar FixedDataTable =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(FixedDataTable, _React$Component);\n\n function FixedDataTable() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, FixedDataTable);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(FixedDataTable)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_shouldHandleTouchX\", function (\n /*number*/\n delta) {\n return (\n /*boolean*/\n _this.props.touchScrollEnabled && _this._shouldHandleWheelX(delta)\n );\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_shouldHandleTouchY\", function (\n /*number*/\n delta) {\n return (\n /*boolean*/\n _this.props.touchScrollEnabled && _this._shouldHandleWheelY(delta)\n );\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_shouldHandleWheelX\", function (\n /*number*/\n delta)\n /*boolean*/\n {\n var _this$props = _this.props,\n maxScrollX = _this$props.maxScrollX,\n scrollFlags = _this$props.scrollFlags,\n scrollX = _this$props.scrollX;\n var overflowX = scrollFlags.overflowX;\n\n if (overflowX === 'hidden') {\n return false;\n }\n\n delta = Math.round(delta);\n\n if (delta === 0) {\n return false;\n }\n\n return delta < 0 && scrollX > 0 || delta >= 0 && scrollX < maxScrollX;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_shouldHandleWheelY\", function (\n /*number*/\n delta)\n /*boolean*/\n {\n var _this$props2 = _this.props,\n maxScrollY = _this$props2.maxScrollY,\n scrollFlags = _this$props2.scrollFlags,\n scrollY = _this$props2.scrollY;\n var overflowY = scrollFlags.overflowY;\n\n if (overflowY === 'hidden' || delta === 0) {\n return false;\n }\n\n delta = Math.round(delta);\n\n if (delta === 0) {\n return false;\n }\n\n return delta < 0 && scrollY > 0 || delta >= 0 && scrollY < maxScrollY;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_reportContentHeight\", function () {\n var _tableHeightsSelector = Object(tableHeights__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(_this.props),\n contentHeight = _tableHeightsSelector.contentHeight;\n\n var onContentHeightChange = _this.props.onContentHeightChange;\n\n if (contentHeight !== _this._contentHeight && onContentHeightChange) {\n onContentHeightChange(contentHeight);\n }\n\n _this._contentHeight = contentHeight;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_renderRows\", function (\n /*number*/\n offsetTop, fixedCellTemplates, fixedRightCellTemplates, scrollableCellTemplates, bodyHeight,\n /*number*/\n ariaRowIndexOffset)\n /*object*/\n {\n var _scrollbarsVisible = Object(scrollbarsVisible__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(_this.props),\n scrollEnabledY = _scrollbarsVisible.scrollEnabledY;\n\n var props = _this.props;\n return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(FixedDataTableBufferedRows__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n ariaRowIndexOffset: ariaRowIndexOffset,\n isScrolling: props.scrolling,\n fixedColumns: fixedCellTemplates,\n fixedRightColumns: fixedRightCellTemplates,\n firstViewportRowIndex: props.firstRowIndex,\n endViewportRowIndex: props.endRowIndex,\n height: bodyHeight,\n offsetTop: offsetTop,\n onRowClick: props.onRowClick,\n onRowContextMenu: props.onRowContextMenu,\n onRowDoubleClick: props.onRowDoubleClick,\n onRowMouseUp: props.onRowMouseUp,\n onRowMouseDown: props.onRowMouseDown,\n onRowMouseEnter: props.onRowMouseEnter,\n onRowMouseLeave: props.onRowMouseLeave,\n onRowTouchStart: props.touchScrollEnabled ? props.onRowTouchStart : null,\n onRowTouchEnd: props.touchScrollEnabled ? props.onRowTouchEnd : null,\n onRowTouchMove: props.touchScrollEnabled ? props.onRowTouchMove : null,\n rowClassNameGetter: props.rowClassNameGetter,\n rowExpanded: props.rowExpanded,\n rowKeyGetter: props.rowKeyGetter,\n rowSettings: props.rowSettings,\n scrollLeft: props.scrollX,\n scrollTop: props.scrollY,\n scrollableColumns: scrollableCellTemplates,\n showLastRowBorder: true,\n width: props.tableSize.width,\n rowsToRender: props.rows,\n rowOffsets: props.rowOffsets,\n showScrollbarY: scrollEnabledY\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onRef\", function (div) {\n _this._divRef = div;\n\n if (_this.props.stopReactWheelPropagation) {\n _this._wheelHandler.setRoot(div);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onColumnResize\", function (\n /*number*/\n combinedWidth,\n /*number*/\n leftOffset,\n /*number*/\n cellWidth,\n /*?number*/\n cellMinWidth,\n /*?number*/\n cellMaxWidth,\n /*number|string*/\n columnKey,\n /*object*/\n event) {\n var coordinates = FixedDataTableEventHelper__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getCoordinatesFromEvent(event);\n var clientX = coordinates.x;\n var clientY = coordinates.y;\n\n _this.props.columnActions.resizeColumn({\n cellMinWidth: cellMinWidth,\n cellMaxWidth: cellMaxWidth,\n cellWidth: cellWidth,\n columnKey: columnKey,\n combinedWidth: combinedWidth,\n clientX: clientX,\n clientY: clientY,\n leftOffset: leftOffset\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onColumnReorder\", function (\n /*string*/\n columnKey,\n /*number*/\n width,\n /*number*/\n left,\n /*object*/\n event) {\n _this.props.columnActions.startColumnReorder({\n scrollStart: _this.props.scrollX,\n columnKey: columnKey,\n width: width,\n left: left\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onColumnReorderMove\", function (\n /*number*/\n deltaX) {\n _this.props.columnActions.moveColumnReorder(deltaX);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onColumnReorderEnd\", function (\n /*object*/\n props,\n /*object*/\n event) {\n var _this$props3 = _this.props,\n columnActions = _this$props3.columnActions,\n _this$props3$columnRe = _this$props3.columnReorderingData,\n cancelReorder = _this$props3$columnRe.cancelReorder,\n columnAfter = _this$props3$columnRe.columnAfter,\n columnBefore = _this$props3$columnRe.columnBefore,\n columnKey = _this$props3$columnRe.columnKey,\n scrollStart = _this$props3$columnRe.scrollStart,\n onColumnReorderEndCallback = _this$props3.onColumnReorderEndCallback,\n onHorizontalScroll = _this$props3.onHorizontalScroll,\n scrollX = _this$props3.scrollX;\n columnActions.stopColumnReorder();\n\n if (cancelReorder) {\n return;\n }\n\n onColumnReorderEndCallback({\n columnAfter: columnAfter,\n columnBefore: columnBefore,\n reorderColumn: columnKey\n });\n\n if (scrollStart !== scrollX && onHorizontalScroll) {\n onHorizontalScroll(scrollX);\n }\n\n ;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (\n /*number*/\n deltaX,\n /*number*/\n deltaY) {\n var _this$props4 = _this.props,\n maxScrollX = _this$props4.maxScrollX,\n maxScrollY = _this$props4.maxScrollY,\n onHorizontalScroll = _this$props4.onHorizontalScroll,\n onVerticalScroll = _this$props4.onVerticalScroll,\n scrollActions = _this$props4.scrollActions,\n scrollFlags = _this$props4.scrollFlags,\n scrollX = _this$props4.scrollX,\n scrollY = _this$props4.scrollY,\n scrolling = _this$props4.scrolling;\n var overflowX = scrollFlags.overflowX,\n overflowY = scrollFlags.overflowY;\n var x = scrollX;\n var y = scrollY;\n\n if (Math.abs(deltaY) > Math.abs(deltaX) && overflowY !== 'hidden') {\n y += deltaY;\n y = y < 0 ? 0 : y;\n y = y > maxScrollY ? maxScrollY : y; //NOTE (jordan) This is a hacky workaround to prevent FDT from setting its internal state\n\n if (onVerticalScroll ? onVerticalScroll(y) : true) {\n scrollActions.scrollToY(y);\n }\n } else if (deltaX && overflowX !== 'hidden') {\n x += deltaX;\n x = x < 0 ? 0 : x;\n x = x > maxScrollX ? maxScrollX : x; // This is a workaround to prevent content blurring. This happens when translate3d\n // is applied with non-rounded values to elements having text.\n\n var roundedX = Math.round(x); //NOTE (asif) This is a hacky workaround to prevent FDT from setting its internal state\n\n if (onHorizontalScroll ? onHorizontalScroll(roundedX) : true) {\n scrollActions.scrollToX(roundedX);\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onHorizontalScroll\", function (\n /*number*/\n scrollPos) {\n var _this$props5 = _this.props,\n onHorizontalScroll = _this$props5.onHorizontalScroll,\n scrollActions = _this$props5.scrollActions,\n scrollX = _this$props5.scrollX,\n scrolling = _this$props5.scrolling;\n\n if (scrollPos === scrollX) {\n return;\n } // This is a workaround to prevent content blurring. This happens when translate3d\n // is applied with non-rounded values to elements having text.\n\n\n var roundedScrollPos = Math.round(scrollPos);\n\n if (onHorizontalScroll ? onHorizontalScroll(roundedScrollPos) : true) {\n scrollActions.scrollToX(roundedScrollPos);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onVerticalScroll\", function (\n /*number*/\n scrollPos) {\n var _this$props6 = _this.props,\n onVerticalScroll = _this$props6.onVerticalScroll,\n scrollActions = _this$props6.scrollActions,\n scrollY = _this$props6.scrollY;\n\n if (scrollPos === scrollY) {\n return;\n }\n\n if (onVerticalScroll ? onVerticalScroll(scrollPos) : true) {\n scrollActions.scrollToY(scrollPos);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_didScroll\", function (\n /* !object */\n nextProps) {\n var onScrollStart = nextProps.onScrollStart,\n scrollX = nextProps.scrollX,\n scrollY = nextProps.scrollY,\n onHorizontalScroll = nextProps.onHorizontalScroll,\n onVerticalScroll = nextProps.onVerticalScroll,\n ownerHeight = nextProps.tableSize.ownerHeight;\n var _this$props7 = _this.props,\n oldEndRowIndex = _this$props7.endRowIndex,\n oldFirstRowIndex = _this$props7.firstRowIndex,\n oldScrollX = _this$props7.scrollX,\n oldScrollY = _this$props7.scrollY,\n oldOwnerHeight = _this$props7.tableSize.ownerHeight; // check if scroll values have changed - we have an extra check on NaN because (NaN !== NaN)\n\n var ownerHeightChanged = ownerHeight !== oldOwnerHeight && !(lodash_isNaN__WEBPACK_IMPORTED_MODULE_13___default()(ownerHeight) && lodash_isNaN__WEBPACK_IMPORTED_MODULE_13___default()(oldOwnerHeight));\n var scrollXChanged = scrollX !== oldScrollX;\n var scrollYChanged = scrollY !== oldScrollY; // if none of the above changed, then a scroll didn't happen at all\n\n if (!ownerHeightChanged && !scrollXChanged && !scrollYChanged) {\n return;\n } // only call onScrollStart if scrolling wasn't on previously\n\n\n if (!_this.props.scrolling && onScrollStart) {\n onScrollStart(oldScrollX, oldScrollY, oldFirstRowIndex, oldEndRowIndex);\n }\n\n if (scrollXChanged && onHorizontalScroll) {\n onHorizontalScroll(scrollX);\n }\n\n if (scrollYChanged && onVerticalScroll) {\n onVerticalScroll(scrollY);\n } // debounced version of didScrollStop as we don't immediately stop scrolling\n\n\n _this._didScrollStop();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_didScrollStopSync\", function () {\n var _this$props8 = _this.props,\n endRowIndex = _this$props8.endRowIndex,\n firstRowIndex = _this$props8.firstRowIndex,\n onScrollEnd = _this$props8.onScrollEnd,\n scrollActions = _this$props8.scrollActions,\n scrollX = _this$props8.scrollX,\n scrollY = _this$props8.scrollY,\n scrolling = _this$props8.scrolling;\n\n if (!scrolling) {\n return;\n }\n\n scrollActions.stopScroll();\n\n if (onScrollEnd) {\n onScrollEnd(scrollX, scrollY, firstRowIndex, endRowIndex);\n }\n });\n\n return _this;\n }\n\n _createClass(FixedDataTable, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n this._didScrollStop = Object(debounceCore__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(this._didScrollStopSync, 200, this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._wheelHandler = new ReactWheelHandler__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this._onScroll, this._shouldHandleWheelX, this._shouldHandleWheelY, this.props.stopScrollDefaultHandling, this.props.stopScrollPropagation);\n this._touchHandler = new ReactTouchHandler__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this._onScroll, this._shouldHandleTouchX, this._shouldHandleTouchY, this.props.stopScrollDefaultHandling, this.props.stopScrollPropagation);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n // TODO (pradeep): Remove these and pass to our table component directly after\n // React provides an API where event handlers can be specified to be non-passive (facebook/react#6436)\n this._divRef && this._divRef.removeEventListener('wheel', this._wheelHandler.onWheel, {\n passive: false\n });\n this._divRef && this._divRef.removeEventListener('touchmove', this._touchHandler.onTouchMove, {\n passive: false\n });\n this._wheelHandler = null;\n this._touchHandler = null; // Cancel any pending debounced scroll handling and handle immediately.\n\n this._didScrollStop.reset();\n\n this._didScrollStopSync();\n }\n }, {\n key: \"_onKeyDown\",\n value: function _onKeyDown(event) {\n var _tableHeightsSelector2 = Object(tableHeights__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(this.props),\n scrollbarYHeight = _tableHeightsSelector2.scrollbarYHeight;\n\n if (this.props.keyboardPageEnabled) {\n switch (event.key) {\n case 'PageDown':\n this._onScroll(0, scrollbarYHeight);\n\n event.preventDefault();\n break;\n\n case 'PageUp':\n this._onScroll(0, scrollbarYHeight * -1);\n\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }\n\n if (this.props.keyboardScrollEnabled) {\n switch (event.key) {\n case 'ArrowDown':\n this._onScroll(0, ARROW_SCROLL_SPEED);\n\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n this._onScroll(0, ARROW_SCROLL_SPEED * -1);\n\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n this._onScroll(ARROW_SCROLL_SPEED, 0);\n\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n this._onScroll(ARROW_SCROLL_SPEED * -1, 0);\n\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._divRef && this._divRef.addEventListener('wheel', this._wheelHandler.onWheel, {\n passive: false\n });\n\n if (this.props.touchScrollEnabled) {\n this._divRef && this._divRef.addEventListener('touchmove', this._touchHandler.onTouchMove, {\n passive: false\n });\n }\n\n this._reportContentHeight();\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(\n /*object*/\n nextProps) {\n this._didScroll(nextProps);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._reportContentHeight();\n }\n }, {\n key: \"render\",\n value: function render()\n /*object*/\n {\n var _ariaAttributesSelect = Object(ariaAttributes__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(this.props),\n ariaGroupHeaderIndex = _ariaAttributesSelect.ariaGroupHeaderIndex,\n ariaHeaderIndex = _ariaAttributesSelect.ariaHeaderIndex,\n ariaFooterIndex = _ariaAttributesSelect.ariaFooterIndex,\n ariaRowCount = _ariaAttributesSelect.ariaRowCount,\n ariaRowIndexOffset = _ariaAttributesSelect.ariaRowIndexOffset;\n\n var _columnTemplatesSelec = Object(columnTemplates__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(this.props),\n fixedColumnGroups = _columnTemplatesSelec.fixedColumnGroups,\n fixedColumns = _columnTemplatesSelec.fixedColumns,\n fixedRightColumnGroups = _columnTemplatesSelec.fixedRightColumnGroups,\n fixedRightColumns = _columnTemplatesSelec.fixedRightColumns,\n scrollableColumnGroups = _columnTemplatesSelec.scrollableColumnGroups,\n scrollableColumns = _columnTemplatesSelec.scrollableColumns;\n\n var _tableHeightsSelector3 = Object(tableHeights__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(this.props),\n bodyHeight = _tableHeightsSelector3.bodyHeight,\n bodyOffsetTop = _tableHeightsSelector3.bodyOffsetTop,\n componentHeight = _tableHeightsSelector3.componentHeight,\n footOffsetTop = _tableHeightsSelector3.footOffsetTop,\n scrollbarXOffsetTop = _tableHeightsSelector3.scrollbarXOffsetTop,\n visibleRowsHeight = _tableHeightsSelector3.visibleRowsHeight;\n\n var _this$props9 = this.props,\n className = _this$props9.className,\n columnReorderingData = _this$props9.columnReorderingData,\n columnResizingData = _this$props9.columnResizingData,\n elementHeights = _this$props9.elementHeights,\n isColumnReordering = _this$props9.isColumnReordering,\n isColumnResizing = _this$props9.isColumnResizing,\n maxScrollX = _this$props9.maxScrollX,\n maxScrollY = _this$props9.maxScrollY,\n onColumnReorderEndCallback = _this$props9.onColumnReorderEndCallback,\n onColumnResizeEndCallback = _this$props9.onColumnResizeEndCallback,\n scrollContentHeight = _this$props9.scrollContentHeight,\n scrollX = _this$props9.scrollX,\n scrollY = _this$props9.scrollY,\n scrolling = _this$props9.scrolling,\n tableSize = _this$props9.tableSize,\n touchScrollEnabled = _this$props9.touchScrollEnabled;\n var ownerHeight = tableSize.ownerHeight,\n width = tableSize.width;\n var cellGroupWrapperHeight = elementHeights.cellGroupWrapperHeight,\n footerHeight = elementHeights.footerHeight,\n groupHeaderHeight = elementHeights.groupHeaderHeight,\n headerHeight = elementHeights.headerHeight;\n\n var _scrollbarsVisible2 = Object(scrollbarsVisible__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(this.props),\n scrollEnabledX = _scrollbarsVisible2.scrollEnabledX,\n scrollEnabledY = _scrollbarsVisible2.scrollEnabledY;\n\n var onColumnReorder = onColumnReorderEndCallback ? this._onColumnReorder : null;\n var groupHeader;\n\n if (groupHeaderHeight > 0) {\n groupHeader = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(FixedDataTableRow__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n key: \"group_header\",\n ariaRowIndex: ariaGroupHeaderIndex,\n isHeaderOrFooter: true,\n isScrolling: scrolling,\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/header'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/header')),\n width: width,\n height: groupHeaderHeight,\n cellGroupWrapperHeight: cellGroupWrapperHeight,\n index: 0,\n zIndex: 1,\n offsetTop: 0,\n scrollLeft: scrollX,\n fixedColumns: fixedColumnGroups,\n fixedRightColumns: fixedRightColumnGroups,\n scrollableColumns: scrollableColumnGroups,\n visible: true,\n onColumnResize: this._onColumnResize,\n onColumnReorder: onColumnReorder,\n onColumnReorderMove: this._onColumnReorderMove,\n showScrollbarY: scrollEnabledY\n });\n }\n\n var scrollbarY;\n\n if (scrollEnabledY) {\n scrollbarY = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(Scrollbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n size: visibleRowsHeight,\n contentSize: scrollContentHeight,\n onScroll: this._onVerticalScroll,\n verticalTop: bodyOffsetTop,\n position: scrollY,\n touchEnabled: touchScrollEnabled\n });\n }\n\n var scrollbarX;\n\n if (scrollEnabledX) {\n scrollbarX = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(HorizontalScrollbar, {\n contentSize: width + maxScrollX,\n offset: scrollbarXOffsetTop,\n onScroll: this._onHorizontalScroll,\n position: scrollX,\n size: width,\n touchEnabled: touchScrollEnabled\n });\n }\n\n var dragKnob = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(ColumnResizerLine__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n height: componentHeight,\n initialWidth: columnResizingData.width || 0,\n minWidth: columnResizingData.minWidth || 0,\n maxWidth: columnResizingData.maxWidth || Number.MAX_VALUE,\n visible: !!isColumnResizing,\n leftOffset: columnResizingData.left || 0,\n knobHeight: headerHeight,\n initialEvent: columnResizingData.initialEvent,\n onColumnResizeEnd: onColumnResizeEndCallback,\n columnKey: columnResizingData.key,\n touchEnabled: touchScrollEnabled\n });\n var footer = null;\n\n if (footerHeight) {\n footer = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(FixedDataTableRow__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n key: \"footer\",\n ariaRowIndex: ariaFooterIndex,\n isHeaderOrFooter: true,\n isScrolling: scrolling,\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/footer'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/footer')),\n width: width,\n height: footerHeight,\n index: -1,\n zIndex: 1,\n offsetTop: footOffsetTop,\n visible: true,\n fixedColumns: fixedColumns.footer,\n fixedRightColumns: fixedRightColumns.footer,\n scrollableColumns: scrollableColumns.footer,\n scrollLeft: scrollX,\n showScrollbarY: scrollEnabledY\n });\n }\n\n var rows = this._renderRows(bodyOffsetTop, fixedColumns.cell, fixedRightColumns.cell, scrollableColumns.cell, bodyHeight, ariaRowIndexOffset);\n\n var header = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(FixedDataTableRow__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n key: \"header\",\n ariaRowIndex: ariaHeaderIndex,\n isHeaderOrFooter: true,\n isScrolling: scrolling,\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/header'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/header')),\n width: width,\n height: headerHeight,\n cellGroupWrapperHeight: cellGroupWrapperHeight,\n index: -1,\n zIndex: 1,\n offsetTop: groupHeaderHeight,\n scrollLeft: scrollX,\n visible: true,\n fixedColumns: fixedColumns.header,\n fixedRightColumns: fixedRightColumns.header,\n scrollableColumns: scrollableColumns.header,\n touchEnabled: touchScrollEnabled,\n onColumnResize: this._onColumnResize,\n onColumnReorder: onColumnReorder,\n onColumnReorderMove: this._onColumnReorderMove,\n onColumnReorderEnd: this._onColumnReorderEnd,\n isColumnReordering: !!isColumnReordering,\n columnReorderingData: columnReorderingData,\n showScrollbarY: scrollEnabledY\n });\n var topShadow;\n\n if (scrollY) {\n topShadow = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/topShadow'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/topShadow')),\n style: {\n top: bodyOffsetTop\n }\n });\n } // ownerScrollAvailable is true if the rows rendered will overflow the owner element\n // so we show a shadow in that case even if the FDT component can't scroll anymore\n\n\n var ownerScrollAvailable = ownerHeight && ownerHeight < componentHeight && scrollContentHeight > visibleRowsHeight;\n var bottomShadow;\n\n if (ownerScrollAvailable || scrollY < maxScrollY) {\n bottomShadow = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/bottomShadow'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/bottomShadow')),\n style: {\n top: footOffsetTop\n }\n });\n }\n\n var tabIndex = null;\n\n if (this.props.keyboardPageEnabled || this.props.keyboardScrollEnabled) {\n tabIndex = 0;\n }\n\n return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(className, Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/main'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/main')),\n role: \"grid\",\n \"aria-rowcount\": ariaRowCount,\n tabIndex: tabIndex,\n onKeyDown: this._onKeyDown,\n onTouchStart: touchScrollEnabled ? this._touchHandler.onTouchStart : null,\n onTouchEnd: touchScrollEnabled ? this._touchHandler.onTouchEnd : null,\n onTouchCancel: touchScrollEnabled ? this._touchHandler.onTouchCancel : null,\n ref: this._onRef,\n style: {\n height: componentHeight,\n width: width\n }\n }, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/rowsContainer'),\n style: {\n height: scrollbarXOffsetTop,\n width: width\n }\n }, dragKnob, groupHeader, header, rows, footer, topShadow, bottomShadow), scrollbarY, scrollbarX);\n }\n }]);\n\n return FixedDataTable;\n}(react__WEBPACK_IMPORTED_MODULE_4___default.a.Component);\n\n_defineProperty(FixedDataTable, \"propTypes\", {\n // TODO (jordan) Remove propType of width without losing documentation (moved to tableSize)\n\n /**\n * Pixel width of table. If all columns do not fit,\n * a horizontal scrollbar will appear.\n */\n width: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n // TODO (jordan) Remove propType of height without losing documentation (moved to tableSize)\n\n /**\n * Pixel height of table. If all rows do not fit,\n * a vertical scrollbar will appear.\n *\n * Either `height` or `maxHeight` must be specified.\n */\n height: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Class name to be passed into parent container\n */\n className: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.string,\n // TODO (jordan) Remove propType of maxHeight without losing documentation (moved to tableSize)\n\n /**\n * Maximum pixel height of table. If all rows do not fit,\n * a vertical scrollbar will appear.\n *\n * Either `height` or `maxHeight` must be specified.\n */\n maxHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of ownerHeight without losing documentation (moved to tableSize)\n\n /**\n * Pixel height of table's owner, this is used in a managed scrolling\n * situation when you want to slide the table up from below the fold\n * without having to constantly update the height on every scroll tick.\n * Instead, vary this property on scroll. By using `ownerHeight`, we\n * over-render the table while making sure the footer and horizontal\n * scrollbar of the table are visible when the current space for the table\n * in view is smaller than the final, over-flowing height of table. It\n * allows us to avoid resizing and reflowing table when it is moving in the\n * view.\n *\n * This is used if `ownerHeight < height` (or `maxHeight`).\n */\n ownerHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of overflowX & overflowY without losing documentation (moved to scrollFlags)\n overflowX: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.oneOf(['hidden', 'auto']),\n overflowY: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.oneOf(['hidden', 'auto']),\n\n /**\n * Boolean flag indicating of touch scrolling should be enabled\n * This feature is current in beta and may have bugs\n */\n touchScrollEnabled: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * Boolean flags to control if scrolling with keys is enabled\n */\n keyboardScrollEnabled: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n keyboardPageEnabled: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n // TODO (jordan) Remove propType of showScrollbarX & showScrollbarY without losing documentation (moved to scrollFlags)\n\n /**\n * Hide the scrollbar but still enable scroll functionality\n */\n showScrollbarX: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n showScrollbarY: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * Callback when horizontally scrolling the grid.\n *\n * Return false to stop propagation.\n */\n onHorizontalScroll: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback when vertically scrolling the grid.\n *\n * Return false to stop propagation.\n */\n onVerticalScroll: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n // TODO (jordan) Remove propType of rowsCount without losing documentation (moved to rowSettings)\n\n /**\n * Number of rows in the table.\n */\n rowsCount: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n // TODO (jordan) Remove propType of rowHeight without losing documentation (moved to rowSettings)\n\n /**\n * Pixel height of rows unless `rowHeightGetter` is specified and returns\n * different value.\n */\n rowHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n // TODO (jordan) Remove propType of rowHeightGetter without losing documentation (moved to rowSettings)\n\n /**\n * If specified, `rowHeightGetter(index)` is called for each row and the\n * returned value overrides `rowHeight` for particular row.\n */\n rowHeightGetter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n // TODO (jordan) Remove propType of subRowHeight without losing documentation (moved to rowSettings)\n\n /**\n * Pixel height of sub-row unless `subRowHeightGetter` is specified and returns\n * different value. Defaults to 0 and no sub-row being displayed.\n */\n subRowHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of subRowHeightGetter without losing documentation (moved to rowSettings)\n\n /**\n * If specified, `subRowHeightGetter(index)` is called for each row and the\n * returned value overrides `subRowHeight` for particular row.\n */\n subRowHeightGetter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * The row expanded for table row.\n * This can either be a React element, or a function that generates\n * a React Element. By default, the React element passed in can expect to\n * receive the following props:\n *\n * ```\n * props: {\n * rowIndex; number // (the row index)\n * height: number // (supplied from subRowHeight or subRowHeightGetter)\n * width: number // (supplied from the Table)\n * }\n * ```\n *\n * Because you are passing in your own React element, you can feel free to\n * pass in whatever props you may want or need.\n *\n * If you pass in a function, you will receive the same props object as the\n * first argument.\n */\n rowExpanded: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.element, prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func]),\n\n /**\n * To get any additional CSS classes that should be added to a row,\n * `rowClassNameGetter(index)` is called.\n */\n rowClassNameGetter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * If specified, `rowKeyGetter(index)` is called for each row and the\n * returned value overrides `key` for the particular row.\n */\n rowKeyGetter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n // TODO (jordan) Remove propType of groupHeaderHeight without losing documentation (moved to elementHeights)\n\n /**\n * Pixel height of the column group header.\n */\n groupHeaderHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of headerHeight without losing documentation (moved to elementHeights)\n\n /**\n * Pixel height of header.\n */\n headerHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n\n /**\n * Pixel height of fixedDataTableCellGroupLayout/cellGroupWrapper.\n * Default is headerHeight and groupHeaderHeight.\n *\n * This can be used with CSS to make a header cell span both the group & normal header row.\n * Setting this to a value larger than height will cause the content to\n * overflow the height. This is useful when adding a 2nd table as the group\n * header and vertically merging the 2 headers when a column is not part\n * of a group. Here are the necessary CSS changes:\n *\n * Both headers:\n * - cellGroupWrapper needs overflow-x: hidden and pointer-events: none\n * - cellGroup needs pointer-events: auto to reenable them on child els\n * Group header:\n * - Layout/main needs overflow: visible and a higher z-index\n * - CellLayout/main needs overflow-y: visible\n * - cellGroup needs overflow: visible\n */\n cellGroupWrapperHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of footerHeight without losing documentation (moved to elementHeights)\n\n /**\n * Pixel height of footer.\n */\n footerHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Value of horizontal scroll.\n */\n scrollLeft: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of scrollToRow & scrollToColumn without losing documentation\n\n /**\n * Index of column to scroll to.\n */\n scrollToColumn: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Value of vertical scroll.\n */\n scrollTop: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Index of row to scroll to.\n */\n scrollToRow: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Callback that is called when scrolling starts. The current horizontal and vertical scroll values,\n * and the current first and last row indexes will be provided to the callback.\n */\n onScrollStart: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when scrolling ends. The new horizontal and vertical scroll values,\n * and the new first and last row indexes will be provided to the callback.\n */\n onScrollEnd: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * If enabled scroll events will not be propagated outside of the table.\n */\n stopReactWheelPropagation: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * If enabled scroll events will never be bubbled to the browser default handler.\n * If disabled (default when unspecified), scroll events will be bubbled up if the scroll\n * doesn't lead to a change in scroll offsets, which is preferable if you like\n * the page/container to scroll up when the table is already scrolled up max.\n */\n stopScrollDefaultHandling: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * If enabled scroll events will not be propagated outside of the table.\n */\n stopScrollPropagation: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * Callback that is called when `rowHeightGetter` returns a different height\n * for a row than the `rowHeight` prop. This is necessary because initially\n * table estimates heights of some parts of the content.\n */\n onContentHeightChange: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a row is clicked.\n */\n onRowClick: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a contextual-menu event happens on a row.\n */\n onRowContextMenu: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a row is double clicked.\n */\n onRowDoubleClick: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a mouse-down event happens on a row.\n */\n onRowMouseDown: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a mouse-up event happens on a row.\n */\n onRowMouseUp: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a mouse-enter event happens on a row.\n */\n onRowMouseEnter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a mouse-leave event happens on a row.\n */\n onRowMouseLeave: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a touch-start event happens on a row.\n */\n onRowTouchStart: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a touch-end event happens on a row.\n */\n onRowTouchEnd: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a touch-move event happens on a row.\n */\n onRowTouchMove: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when resizer has been released\n * and column needs to be updated.\n *\n * Required if the isResizable property is true on any column.\n *\n * ```\n * function(\n * newColumnWidth: number,\n * columnKey: string,\n * )\n * ```\n */\n onColumnResizeEndCallback: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when reordering has been completed\n * and columns need to be updated.\n *\n * ```\n * function(\n * event {\n * columnBefore: string|undefined, // the column before the new location of this one\n * columnAfter: string|undefined, // the column after the new location of this one\n * reorderColumn: string, // the column key that was just reordered\n * }\n * )\n * ```\n */\n onColumnReorderEndCallback: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Whether a column is currently being resized.\n */\n isColumnResizing: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * Whether columns are currently being reordered.\n */\n isColumnReordering: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n // TODO (jordan) Remove propType of bufferRowCount without losing documentation\n\n /**\n * The number of rows outside the viewport to prerender. Defaults to roughly\n * half of the number of visible rows.\n */\n bufferRowCount: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number\n});\n\n_defineProperty(FixedDataTable, \"defaultProps\",\n/*object*/\n{\n elementHeights: {\n cellGroupWrapperHeight: undefined,\n footerHeight: 0,\n groupHeaderHeight: 0,\n headerHeight: 0\n },\n keyboardScrollEnabled: false,\n keyboardPageEnabled: false,\n touchScrollEnabled: false,\n stopScrollPropagation: false\n});\n\nvar HorizontalScrollbar =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(HorizontalScrollbar, _React$PureComponent);\n\n function HorizontalScrollbar() {\n _classCallCheck(this, HorizontalScrollbar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(HorizontalScrollbar).apply(this, arguments));\n }\n\n _createClass(HorizontalScrollbar, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n this._initialRender = true;\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._initialRender = false;\n }\n }, {\n key: \"render\",\n value: function render()\n /*object*/\n {\n var _this$props10 = this.props,\n offset = _this$props10.offset,\n size = _this$props10.size;\n var outerContainerStyle = {\n height: Scrollbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"].SIZE,\n width: size\n };\n var innerContainerStyle = {\n height: Scrollbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"].SIZE,\n overflow: 'hidden',\n width: size,\n top: offset\n };\n return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/horizontalScrollbar')),\n style: outerContainerStyle\n }, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n style: innerContainerStyle\n }, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(Scrollbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _extends({}, this.props, {\n isOpaque: true,\n orientation: \"horizontal\",\n offset: undefined\n }))));\n }\n }]);\n\n return HorizontalScrollbar;\n}(react__WEBPACK_IMPORTED_MODULE_4___default.a.PureComponent);\n\n_defineProperty(HorizontalScrollbar, \"propTypes\", {\n contentSize: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n offset: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n onScroll: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func.isRequired,\n position: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n size: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FixedDataTable);\n\n//# sourceURL=webpack://FixedDataTable/./src/FixedDataTable.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var FixedDataTableBufferedRows__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! FixedDataTableBufferedRows */ \"./src/FixedDataTableBufferedRows.js\");\n/* harmony import */ var ColumnResizerLine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ColumnResizerLine */ \"./src/ColumnResizerLine.js\");\n/* harmony import */ var FixedDataTableEventHelper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! FixedDataTableEventHelper */ \"./src/FixedDataTableEventHelper.js\");\n/* harmony import */ var FixedDataTableRow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! FixedDataTableRow */ \"./src/FixedDataTableRow.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var ReactTouchHandler__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ReactTouchHandler */ \"./src/ReactTouchHandler.js\");\n/* harmony import */ var ReactWheelHandler__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ReactWheelHandler */ \"./src/vendor_upstream/dom/ReactWheelHandler.js\");\n/* harmony import */ var Scrollbar__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Scrollbar */ \"./src/Scrollbar.js\");\n/* harmony import */ var ariaAttributes__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ariaAttributes */ \"./src/selectors/ariaAttributes.js\");\n/* harmony import */ var columnTemplates__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! columnTemplates */ \"./src/selectors/columnTemplates.js\");\n/* harmony import */ var cx__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! cx */ \"./src/vendor_upstream/stubs/cx.js\");\n/* harmony import */ var debounceCore__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! debounceCore */ \"./src/vendor_upstream/core/debounceCore.js\");\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! lodash/isNaN */ \"./node_modules/lodash/isNaN.js\");\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(lodash_isNaN__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var joinClasses__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! joinClasses */ \"./src/vendor_upstream/core/joinClasses.js\");\n/* harmony import */ var scrollbarsVisible__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! scrollbarsVisible */ \"./src/selectors/scrollbarsVisible.js\");\n/* harmony import */ var tableHeights__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! tableHeights */ \"./src/selectors/tableHeights.js\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Copyright Schrodinger, LLC\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FixedDataTable\n * @typechecks\n * \n */\n\n/*eslint no-bitwise:1*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ARROW_SCROLL_SPEED = 25;\n/**\n * Data grid component with fixed or scrollable header and columns.\n *\n * The layout of the data table is as follows:\n *\n * ```\n * +---------------------------------------------------+\n * | Fixed Column Group | Scrollable Column Group |\n * | Header | Header |\n * | | |\n * +---------------------------------------------------+\n * | | |\n * | Fixed Header Columns | Scrollable Header Columns |\n * | | |\n * +-----------------------+---------------------------+\n * | | |\n * | Fixed Body Columns | Scrollable Body Columns |\n * | | |\n * +-----------------------+---------------------------+\n * | | |\n * | Fixed Footer Columns | Scrollable Footer Columns |\n * | | |\n * +-----------------------+---------------------------+\n * ```\n *\n * - Fixed Column Group Header: These are the headers for a group\n * of columns if included in the table that do not scroll\n * vertically or horizontally.\n *\n * - Scrollable Column Group Header: The header for a group of columns\n * that do not move while scrolling vertically, but move horizontally\n * with the horizontal scrolling.\n *\n * - Fixed Header Columns: The header columns that do not move while scrolling\n * vertically or horizontally.\n *\n * - Scrollable Header Columns: The header columns that do not move\n * while scrolling vertically, but move horizontally with the horizontal\n * scrolling.\n *\n * - Fixed Body Columns: The body columns that do not move while scrolling\n * horizontally, but move vertically with the vertical scrolling.\n *\n * - Scrollable Body Columns: The body columns that move while scrolling\n * vertically or horizontally.\n */\n\nvar FixedDataTable =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(FixedDataTable, _React$Component);\n\n function FixedDataTable() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, FixedDataTable);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(FixedDataTable)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_shouldHandleTouchX\", function (\n /*number*/\n delta) {\n return (\n /*boolean*/\n _this.props.touchScrollEnabled && _this._shouldHandleWheelX(delta)\n );\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_shouldHandleTouchY\", function (\n /*number*/\n delta) {\n return (\n /*boolean*/\n _this.props.touchScrollEnabled && _this._shouldHandleWheelY(delta)\n );\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_shouldHandleWheelX\", function (\n /*number*/\n delta)\n /*boolean*/\n {\n var _this$props = _this.props,\n maxScrollX = _this$props.maxScrollX,\n scrollFlags = _this$props.scrollFlags,\n scrollX = _this$props.scrollX;\n var overflowX = scrollFlags.overflowX;\n\n if (overflowX === 'hidden') {\n return false;\n }\n\n delta = Math.round(delta);\n\n if (delta === 0) {\n return false;\n }\n\n return delta < 0 && scrollX > 0 || delta >= 0 && scrollX < maxScrollX;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_shouldHandleWheelY\", function (\n /*number*/\n delta)\n /*boolean*/\n {\n var _this$props2 = _this.props,\n maxScrollY = _this$props2.maxScrollY,\n scrollFlags = _this$props2.scrollFlags,\n scrollY = _this$props2.scrollY;\n var overflowY = scrollFlags.overflowY;\n\n if (overflowY === 'hidden' || delta === 0) {\n return false;\n }\n\n delta = Math.round(delta);\n\n if (delta === 0) {\n return false;\n }\n\n return delta < 0 && scrollY > 0 || delta >= 0 && scrollY < maxScrollY;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_reportContentHeight\", function () {\n var _tableHeightsSelector = Object(tableHeights__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(_this.props),\n contentHeight = _tableHeightsSelector.contentHeight;\n\n var onContentHeightChange = _this.props.onContentHeightChange;\n\n if (contentHeight !== _this._contentHeight && onContentHeightChange) {\n onContentHeightChange(contentHeight);\n }\n\n _this._contentHeight = contentHeight;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_renderRows\", function (\n /*number*/\n offsetTop, fixedCellTemplates, fixedRightCellTemplates, scrollableCellTemplates, bodyHeight,\n /*number*/\n ariaRowIndexOffset)\n /*object*/\n {\n var _scrollbarsVisible = Object(scrollbarsVisible__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(_this.props),\n scrollEnabledY = _scrollbarsVisible.scrollEnabledY;\n\n var props = _this.props;\n return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(FixedDataTableBufferedRows__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n ariaRowIndexOffset: ariaRowIndexOffset,\n isScrolling: props.scrolling,\n fixedColumns: fixedCellTemplates,\n fixedRightColumns: fixedRightCellTemplates,\n firstViewportRowIndex: props.firstRowIndex,\n endViewportRowIndex: props.endRowIndex,\n height: bodyHeight,\n offsetTop: offsetTop,\n onRowClick: props.onRowClick,\n onRowContextMenu: props.onRowContextMenu,\n onRowDoubleClick: props.onRowDoubleClick,\n onRowMouseUp: props.onRowMouseUp,\n onRowMouseDown: props.onRowMouseDown,\n onRowMouseEnter: props.onRowMouseEnter,\n onRowMouseLeave: props.onRowMouseLeave,\n onRowTouchStart: props.touchScrollEnabled ? props.onRowTouchStart : null,\n onRowTouchEnd: props.touchScrollEnabled ? props.onRowTouchEnd : null,\n onRowTouchMove: props.touchScrollEnabled ? props.onRowTouchMove : null,\n rowClassNameGetter: props.rowClassNameGetter,\n rowExpanded: props.rowExpanded,\n rowKeyGetter: props.rowKeyGetter,\n rowSettings: props.rowSettings,\n scrollLeft: props.scrollX,\n scrollTop: props.scrollY,\n scrollableColumns: scrollableCellTemplates,\n showLastRowBorder: true,\n width: props.tableSize.width,\n rowsToRender: props.rows,\n rowOffsets: props.rowOffsets,\n showScrollbarY: scrollEnabledY\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onRef\", function (div) {\n _this._divRef = div;\n\n if (_this.props.stopReactWheelPropagation) {\n _this._wheelHandler.setRoot(div);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onColumnResize\", function (\n /*number*/\n combinedWidth,\n /*number*/\n leftOffset,\n /*number*/\n cellWidth,\n /*?number*/\n cellMinWidth,\n /*?number*/\n cellMaxWidth,\n /*number|string*/\n columnKey,\n /*object*/\n event) {\n var coordinates = FixedDataTableEventHelper__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getCoordinatesFromEvent(event);\n var clientX = coordinates.x;\n var clientY = coordinates.y;\n\n _this.props.columnActions.resizeColumn({\n cellMinWidth: cellMinWidth,\n cellMaxWidth: cellMaxWidth,\n cellWidth: cellWidth,\n columnKey: columnKey,\n combinedWidth: combinedWidth,\n clientX: clientX,\n clientY: clientY,\n leftOffset: leftOffset\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onColumnReorder\", function (\n /*string*/\n columnKey,\n /*number*/\n width,\n /*number*/\n left,\n /*object*/\n event) {\n _this.props.columnActions.startColumnReorder({\n scrollStart: _this.props.scrollX,\n columnKey: columnKey,\n width: width,\n left: left\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onColumnReorderMove\", function (\n /*number*/\n deltaX) {\n _this.props.columnActions.moveColumnReorder(deltaX);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onColumnReorderEnd\", function (\n /*object*/\n props,\n /*object*/\n event) {\n var _this$props3 = _this.props,\n columnActions = _this$props3.columnActions,\n _this$props3$columnRe = _this$props3.columnReorderingData,\n cancelReorder = _this$props3$columnRe.cancelReorder,\n columnAfter = _this$props3$columnRe.columnAfter,\n columnBefore = _this$props3$columnRe.columnBefore,\n columnKey = _this$props3$columnRe.columnKey,\n scrollStart = _this$props3$columnRe.scrollStart,\n onColumnReorderEndCallback = _this$props3.onColumnReorderEndCallback,\n onHorizontalScroll = _this$props3.onHorizontalScroll,\n scrollX = _this$props3.scrollX;\n columnActions.stopColumnReorder();\n\n if (cancelReorder) {\n return;\n }\n\n onColumnReorderEndCallback({\n columnAfter: columnAfter,\n columnBefore: columnBefore,\n reorderColumn: columnKey\n });\n\n if (scrollStart !== scrollX && onHorizontalScroll) {\n onHorizontalScroll(scrollX);\n }\n\n ;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (\n /*number*/\n deltaX,\n /*number*/\n deltaY) {\n var _this$props4 = _this.props,\n maxScrollX = _this$props4.maxScrollX,\n maxScrollY = _this$props4.maxScrollY,\n onHorizontalScroll = _this$props4.onHorizontalScroll,\n onVerticalScroll = _this$props4.onVerticalScroll,\n scrollActions = _this$props4.scrollActions,\n scrollFlags = _this$props4.scrollFlags,\n scrollX = _this$props4.scrollX,\n scrollY = _this$props4.scrollY,\n scrolling = _this$props4.scrolling;\n var overflowX = scrollFlags.overflowX,\n overflowY = scrollFlags.overflowY;\n var x = scrollX;\n var y = scrollY;\n\n if (Math.abs(deltaY) > Math.abs(deltaX) && overflowY !== 'hidden') {\n y += deltaY;\n y = y < 0 ? 0 : y;\n y = y > maxScrollY ? maxScrollY : y; //NOTE (jordan) This is a hacky workaround to prevent FDT from setting its internal state\n\n if (onVerticalScroll ? onVerticalScroll(y) : true) {\n scrollActions.scrollToY(y);\n }\n } else if (deltaX && overflowX !== 'hidden') {\n x += deltaX;\n x = x < 0 ? 0 : x;\n x = x > maxScrollX ? maxScrollX : x; // This is a workaround to prevent content blurring. This happens when translate3d\n // is applied with non-rounded values to elements having text.\n\n var roundedX = Math.round(x); //NOTE (asif) This is a hacky workaround to prevent FDT from setting its internal state\n\n if (onHorizontalScroll ? onHorizontalScroll(roundedX) : true) {\n scrollActions.scrollToX(roundedX);\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onHorizontalScroll\", function (\n /*number*/\n scrollPos) {\n var _this$props5 = _this.props,\n onHorizontalScroll = _this$props5.onHorizontalScroll,\n scrollActions = _this$props5.scrollActions,\n scrollX = _this$props5.scrollX,\n scrolling = _this$props5.scrolling;\n\n if (scrollPos === scrollX) {\n return;\n } // This is a workaround to prevent content blurring. This happens when translate3d\n // is applied with non-rounded values to elements having text.\n\n\n var roundedScrollPos = Math.round(scrollPos);\n\n if (onHorizontalScroll ? onHorizontalScroll(roundedScrollPos) : true) {\n scrollActions.scrollToX(roundedScrollPos);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onVerticalScroll\", function (\n /*number*/\n scrollPos) {\n var _this$props6 = _this.props,\n onVerticalScroll = _this$props6.onVerticalScroll,\n scrollActions = _this$props6.scrollActions,\n scrollY = _this$props6.scrollY;\n\n if (scrollPos === scrollY) {\n return;\n }\n\n if (onVerticalScroll ? onVerticalScroll(scrollPos) : true) {\n scrollActions.scrollToY(scrollPos);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_didScroll\", function (\n /* !object */\n nextProps) {\n var onScrollStart = nextProps.onScrollStart,\n scrollX = nextProps.scrollX,\n scrollY = nextProps.scrollY,\n onHorizontalScroll = nextProps.onHorizontalScroll,\n onVerticalScroll = nextProps.onVerticalScroll,\n ownerHeight = nextProps.tableSize.ownerHeight;\n var _this$props7 = _this.props,\n oldEndRowIndex = _this$props7.endRowIndex,\n oldFirstRowIndex = _this$props7.firstRowIndex,\n oldScrollX = _this$props7.scrollX,\n oldScrollY = _this$props7.scrollY,\n oldOwnerHeight = _this$props7.tableSize.ownerHeight; // check if scroll values have changed - we have an extra check on NaN because (NaN !== NaN)\n\n var ownerHeightChanged = ownerHeight !== oldOwnerHeight && !(lodash_isNaN__WEBPACK_IMPORTED_MODULE_13___default()(ownerHeight) && lodash_isNaN__WEBPACK_IMPORTED_MODULE_13___default()(oldOwnerHeight));\n var scrollXChanged = scrollX !== oldScrollX;\n var scrollYChanged = scrollY !== oldScrollY; // if none of the above changed, then a scroll didn't happen at all\n\n if (!ownerHeightChanged && !scrollXChanged && !scrollYChanged) {\n return;\n } // only call onScrollStart if scrolling wasn't on previously\n\n\n if (!_this.props.scrolling && onScrollStart) {\n onScrollStart(oldScrollX, oldScrollY, oldFirstRowIndex, oldEndRowIndex);\n }\n\n if (scrollXChanged && onHorizontalScroll) {\n onHorizontalScroll(scrollX);\n }\n\n if (scrollYChanged && onVerticalScroll) {\n onVerticalScroll(scrollY);\n } // debounced version of didScrollStop as we don't immediately stop scrolling\n\n\n _this._didScrollStop();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_didScrollStopSync\", function () {\n var _this$props8 = _this.props,\n endRowIndex = _this$props8.endRowIndex,\n firstRowIndex = _this$props8.firstRowIndex,\n onScrollEnd = _this$props8.onScrollEnd,\n scrollActions = _this$props8.scrollActions,\n scrollX = _this$props8.scrollX,\n scrollY = _this$props8.scrollY,\n scrolling = _this$props8.scrolling;\n\n if (!scrolling) {\n return;\n }\n\n scrollActions.stopScroll();\n\n if (onScrollEnd) {\n onScrollEnd(scrollX, scrollY, firstRowIndex, endRowIndex);\n }\n });\n\n return _this;\n }\n\n _createClass(FixedDataTable, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n this._didScrollStop = Object(debounceCore__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(this._didScrollStopSync, 200, this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._wheelHandler = new ReactWheelHandler__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this._onScroll, this._shouldHandleWheelX, this._shouldHandleWheelY, this.props.stopScrollDefaultHandling, this.props.stopScrollPropagation);\n this._touchHandler = new ReactTouchHandler__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this._onScroll, this._shouldHandleTouchX, this._shouldHandleTouchY, this.props.stopScrollDefaultHandling, this.props.stopScrollPropagation);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n // TODO (pradeep): Remove these and pass to our table component directly after\n // React provides an API where event handlers can be specified to be non-passive (facebook/react#6436)\n this._divRef && this._divRef.removeEventListener('wheel', this._wheelHandler.onWheel, {\n passive: false\n });\n this._divRef && this._divRef.removeEventListener('touchmove', this._touchHandler.onTouchMove, {\n passive: false\n });\n this._wheelHandler = null;\n this._touchHandler = null; // Cancel any pending debounced scroll handling and handle immediately.\n\n this._didScrollStop.reset();\n\n this._didScrollStopSync();\n }\n }, {\n key: \"_onKeyDown\",\n value: function _onKeyDown(event) {\n var _tableHeightsSelector2 = Object(tableHeights__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(this.props),\n scrollbarYHeight = _tableHeightsSelector2.scrollbarYHeight;\n\n if (this.props.keyboardPageEnabled) {\n switch (event.key) {\n case 'PageDown':\n this._onScroll(0, scrollbarYHeight);\n\n event.preventDefault();\n break;\n\n case 'PageUp':\n this._onScroll(0, scrollbarYHeight * -1);\n\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }\n\n if (this.props.keyboardScrollEnabled) {\n switch (event.key) {\n case 'ArrowDown':\n this._onScroll(0, ARROW_SCROLL_SPEED);\n\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n this._onScroll(0, ARROW_SCROLL_SPEED * -1);\n\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n this._onScroll(ARROW_SCROLL_SPEED, 0);\n\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n this._onScroll(ARROW_SCROLL_SPEED * -1, 0);\n\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._divRef && this._divRef.addEventListener('wheel', this._wheelHandler.onWheel, {\n passive: false\n });\n\n if (this.props.touchScrollEnabled) {\n this._divRef && this._divRef.addEventListener('touchmove', this._touchHandler.onTouchMove, {\n passive: false\n });\n }\n\n this._reportContentHeight();\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(\n /*object*/\n nextProps) {\n this._didScroll(nextProps);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._reportContentHeight();\n }\n }, {\n key: \"render\",\n value: function render()\n /*object*/\n {\n var _ariaAttributesSelect = Object(ariaAttributes__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(this.props),\n ariaGroupHeaderIndex = _ariaAttributesSelect.ariaGroupHeaderIndex,\n ariaHeaderIndex = _ariaAttributesSelect.ariaHeaderIndex,\n ariaFooterIndex = _ariaAttributesSelect.ariaFooterIndex,\n ariaRowCount = _ariaAttributesSelect.ariaRowCount,\n ariaRowIndexOffset = _ariaAttributesSelect.ariaRowIndexOffset;\n\n var _columnTemplatesSelec = Object(columnTemplates__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(this.props),\n fixedColumnGroups = _columnTemplatesSelec.fixedColumnGroups,\n fixedColumns = _columnTemplatesSelec.fixedColumns,\n fixedRightColumnGroups = _columnTemplatesSelec.fixedRightColumnGroups,\n fixedRightColumns = _columnTemplatesSelec.fixedRightColumns,\n scrollableColumnGroups = _columnTemplatesSelec.scrollableColumnGroups,\n scrollableColumns = _columnTemplatesSelec.scrollableColumns;\n\n var _tableHeightsSelector3 = Object(tableHeights__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(this.props),\n bodyHeight = _tableHeightsSelector3.bodyHeight,\n bodyOffsetTop = _tableHeightsSelector3.bodyOffsetTop,\n componentHeight = _tableHeightsSelector3.componentHeight,\n footOffsetTop = _tableHeightsSelector3.footOffsetTop,\n scrollbarXOffsetTop = _tableHeightsSelector3.scrollbarXOffsetTop,\n visibleRowsHeight = _tableHeightsSelector3.visibleRowsHeight;\n\n var _this$props9 = this.props,\n className = _this$props9.className,\n columnReorderingData = _this$props9.columnReorderingData,\n columnResizingData = _this$props9.columnResizingData,\n elementHeights = _this$props9.elementHeights,\n isColumnReordering = _this$props9.isColumnReordering,\n isColumnResizing = _this$props9.isColumnResizing,\n maxScrollX = _this$props9.maxScrollX,\n maxScrollY = _this$props9.maxScrollY,\n onColumnReorderEndCallback = _this$props9.onColumnReorderEndCallback,\n onColumnResizeEndCallback = _this$props9.onColumnResizeEndCallback,\n scrollContentHeight = _this$props9.scrollContentHeight,\n scrollX = _this$props9.scrollX,\n scrollY = _this$props9.scrollY,\n scrolling = _this$props9.scrolling,\n tableSize = _this$props9.tableSize,\n touchScrollEnabled = _this$props9.touchScrollEnabled;\n var ownerHeight = tableSize.ownerHeight,\n width = tableSize.width;\n var cellGroupWrapperHeight = elementHeights.cellGroupWrapperHeight,\n footerHeight = elementHeights.footerHeight,\n groupHeaderHeight = elementHeights.groupHeaderHeight,\n headerHeight = elementHeights.headerHeight;\n\n var _scrollbarsVisible2 = Object(scrollbarsVisible__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(this.props),\n scrollEnabledX = _scrollbarsVisible2.scrollEnabledX,\n scrollEnabledY = _scrollbarsVisible2.scrollEnabledY;\n\n var onColumnReorder = onColumnReorderEndCallback ? this._onColumnReorder : null;\n var groupHeader;\n\n if (groupHeaderHeight > 0) {\n groupHeader = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(FixedDataTableRow__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n key: \"group_header\",\n ariaRowIndex: ariaGroupHeaderIndex,\n isHeaderOrFooter: true,\n isScrolling: scrolling,\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/header'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/header')),\n width: width,\n height: groupHeaderHeight,\n cellGroupWrapperHeight: cellGroupWrapperHeight,\n index: 0,\n zIndex: 1,\n offsetTop: 0,\n scrollLeft: scrollX,\n fixedColumns: fixedColumnGroups,\n fixedRightColumns: fixedRightColumnGroups,\n scrollableColumns: scrollableColumnGroups,\n visible: true,\n onColumnResize: this._onColumnResize,\n onColumnReorder: onColumnReorder,\n onColumnReorderMove: this._onColumnReorderMove,\n showScrollbarY: scrollEnabledY\n });\n }\n\n var scrollbarY;\n\n if (scrollEnabledY) {\n scrollbarY = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(Scrollbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n size: visibleRowsHeight,\n contentSize: scrollContentHeight,\n onScroll: this._onVerticalScroll,\n verticalTop: bodyOffsetTop,\n position: scrollY,\n touchEnabled: touchScrollEnabled\n });\n }\n\n var scrollbarX;\n\n if (scrollEnabledX) {\n scrollbarX = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(HorizontalScrollbar, {\n contentSize: width + maxScrollX,\n offset: scrollbarXOffsetTop,\n onScroll: this._onHorizontalScroll,\n position: scrollX,\n size: width,\n touchEnabled: touchScrollEnabled\n });\n }\n\n var dragKnob = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(ColumnResizerLine__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n height: componentHeight,\n initialWidth: columnResizingData.width || 0,\n minWidth: columnResizingData.minWidth || 0,\n maxWidth: columnResizingData.maxWidth || Number.MAX_VALUE,\n visible: !!isColumnResizing,\n leftOffset: columnResizingData.left || 0,\n knobHeight: headerHeight,\n initialEvent: columnResizingData.initialEvent,\n onColumnResizeEnd: onColumnResizeEndCallback,\n columnKey: columnResizingData.key,\n touchEnabled: touchScrollEnabled\n });\n var footer = null;\n\n if (footerHeight) {\n footer = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(FixedDataTableRow__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n key: \"footer\",\n ariaRowIndex: ariaFooterIndex,\n isHeaderOrFooter: true,\n isScrolling: scrolling,\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/footer'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/footer')),\n width: width,\n height: footerHeight,\n index: -1,\n zIndex: 1,\n offsetTop: footOffsetTop,\n visible: true,\n fixedColumns: fixedColumns.footer,\n fixedRightColumns: fixedRightColumns.footer,\n scrollableColumns: scrollableColumns.footer,\n scrollLeft: scrollX,\n showScrollbarY: scrollEnabledY\n });\n }\n\n var rows = this._renderRows(bodyOffsetTop, fixedColumns.cell, fixedRightColumns.cell, scrollableColumns.cell, bodyHeight, ariaRowIndexOffset);\n\n var header = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(FixedDataTableRow__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n key: \"header\",\n ariaRowIndex: ariaHeaderIndex,\n isHeaderOrFooter: true,\n isScrolling: scrolling,\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/header'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/header')),\n width: width,\n height: headerHeight,\n cellGroupWrapperHeight: cellGroupWrapperHeight,\n index: -1,\n zIndex: 1,\n offsetTop: groupHeaderHeight,\n scrollLeft: scrollX,\n visible: true,\n fixedColumns: fixedColumns.header,\n fixedRightColumns: fixedRightColumns.header,\n scrollableColumns: scrollableColumns.header,\n touchEnabled: touchScrollEnabled,\n onColumnResize: this._onColumnResize,\n onColumnReorder: onColumnReorder,\n onColumnReorderMove: this._onColumnReorderMove,\n onColumnReorderEnd: this._onColumnReorderEnd,\n isColumnReordering: !!isColumnReordering,\n columnReorderingData: columnReorderingData,\n showScrollbarY: scrollEnabledY\n });\n var topShadow;\n\n if (scrollY) {\n topShadow = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/topShadow'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/topShadow')),\n style: {\n top: bodyOffsetTop\n }\n });\n } // ownerScrollAvailable is true if the rows rendered will overflow the owner element\n // so we show a shadow in that case even if the FDT component can't scroll anymore\n\n\n var ownerScrollAvailable = ownerHeight && ownerHeight < componentHeight && scrollContentHeight > visibleRowsHeight;\n var bottomShadow;\n\n if (ownerScrollAvailable || scrollY < maxScrollY) {\n bottomShadow = react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/bottomShadow'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/bottomShadow')),\n style: {\n top: footOffsetTop\n }\n });\n }\n\n var tabIndex = null;\n\n if (this.props.keyboardPageEnabled || this.props.keyboardScrollEnabled) {\n tabIndex = 0;\n }\n\n return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(className, Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/main'), Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/main')),\n role: \"grid\",\n \"aria-rowcount\": ariaRowCount,\n tabIndex: tabIndex,\n onKeyDown: this._onKeyDown,\n onTouchStart: touchScrollEnabled ? this._touchHandler.onTouchStart : null,\n onTouchEnd: touchScrollEnabled ? this._touchHandler.onTouchEnd : null,\n onTouchCancel: touchScrollEnabled ? this._touchHandler.onTouchCancel : null,\n ref: this._onRef,\n style: {\n height: componentHeight,\n width: width\n }\n }, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('fixedDataTableLayout/rowsContainer'),\n style: {\n height: scrollbarXOffsetTop,\n width: width\n }\n }, dragKnob, groupHeader, header, rows, footer, topShadow, bottomShadow), scrollbarY, scrollbarX);\n }\n }]);\n\n return FixedDataTable;\n}(react__WEBPACK_IMPORTED_MODULE_4___default.a.Component);\n\n_defineProperty(FixedDataTable, \"propTypes\", {\n // TODO (jordan) Remove propType of width without losing documentation (moved to tableSize)\n\n /**\n * Pixel width of table. If all columns do not fit,\n * a horizontal scrollbar will appear.\n */\n width: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n // TODO (jordan) Remove propType of height without losing documentation (moved to tableSize)\n\n /**\n * Pixel height of table. If all rows do not fit,\n * a vertical scrollbar will appear.\n *\n * Either `height` or `maxHeight` must be specified.\n */\n height: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Class name to be passed into parent container\n */\n className: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.string,\n // TODO (jordan) Remove propType of maxHeight without losing documentation (moved to tableSize)\n\n /**\n * Maximum pixel height of table. If all rows do not fit,\n * a vertical scrollbar will appear.\n *\n * Either `height` or `maxHeight` must be specified.\n */\n maxHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of ownerHeight without losing documentation (moved to tableSize)\n\n /**\n * Pixel height of table's owner, this is used in a managed scrolling\n * situation when you want to slide the table up from below the fold\n * without having to constantly update the height on every scroll tick.\n * Instead, vary this property on scroll. By using `ownerHeight`, we\n * over-render the table while making sure the footer and horizontal\n * scrollbar of the table are visible when the current space for the table\n * in view is smaller than the final, over-flowing height of table. It\n * allows us to avoid resizing and reflowing table when it is moving in the\n * view.\n *\n * This is used if `ownerHeight < height` (or `maxHeight`).\n */\n ownerHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of overflowX & overflowY without losing documentation (moved to scrollFlags)\n overflowX: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.oneOf(['hidden', 'auto']),\n overflowY: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.oneOf(['hidden', 'auto']),\n\n /**\n * Boolean flag indicating of touch scrolling should be enabled\n * This feature is current in beta and may have bugs\n */\n touchScrollEnabled: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * Boolean flags to control if scrolling with keys is enabled\n */\n keyboardScrollEnabled: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n keyboardPageEnabled: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n // TODO (jordan) Remove propType of showScrollbarX & showScrollbarY without losing documentation (moved to scrollFlags)\n\n /**\n * Hide the scrollbar but still enable scroll functionality\n */\n showScrollbarX: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n showScrollbarY: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * Callback when horizontally scrolling the grid.\n *\n * Return false to stop propagation.\n */\n onHorizontalScroll: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback when vertically scrolling the grid.\n *\n * Return false to stop propagation.\n */\n onVerticalScroll: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n // TODO (jordan) Remove propType of rowsCount without losing documentation (moved to rowSettings)\n\n /**\n * Number of rows in the table.\n */\n rowsCount: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n // TODO (jordan) Remove propType of rowHeight without losing documentation (moved to rowSettings)\n\n /**\n * Pixel height of rows unless `rowHeightGetter` is specified and returns\n * different value.\n */\n rowHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n // TODO (jordan) Remove propType of rowHeightGetter without losing documentation (moved to rowSettings)\n\n /**\n * If specified, `rowHeightGetter(index)` is called for each row and the\n * returned value overrides `rowHeight` for particular row.\n */\n rowHeightGetter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n // TODO (jordan) Remove propType of subRowHeight without losing documentation (moved to rowSettings)\n\n /**\n * Pixel height of sub-row unless `subRowHeightGetter` is specified and returns\n * different value. Defaults to 0 and no sub-row being displayed.\n */\n subRowHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of subRowHeightGetter without losing documentation (moved to rowSettings)\n\n /**\n * If specified, `subRowHeightGetter(index)` is called for each row and the\n * returned value overrides `subRowHeight` for particular row.\n */\n subRowHeightGetter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * The row expanded for table row.\n * This can either be a React element, or a function that generates\n * a React Element. By default, the React element passed in can expect to\n * receive the following props:\n *\n * ```\n * props: {\n * rowIndex; number // (the row index)\n * height: number // (supplied from subRowHeight or subRowHeightGetter)\n * width: number // (supplied from the Table)\n * }\n * ```\n *\n * Because you are passing in your own React element, you can feel free to\n * pass in whatever props you may want or need.\n *\n * If you pass in a function, you will receive the same props object as the\n * first argument.\n */\n rowExpanded: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.element, prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func]),\n\n /**\n * To get any additional CSS classes that should be added to a row,\n * `rowClassNameGetter(index)` is called.\n */\n rowClassNameGetter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * If specified, `rowKeyGetter(index)` is called for each row and the\n * returned value overrides `key` for the particular row.\n */\n rowKeyGetter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n // TODO (jordan) Remove propType of groupHeaderHeight without losing documentation (moved to elementHeights)\n\n /**\n * Pixel height of the column group header.\n */\n groupHeaderHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of headerHeight without losing documentation (moved to elementHeights)\n\n /**\n * Pixel height of header.\n */\n headerHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n\n /**\n * Pixel height of fixedDataTableCellGroupLayout/cellGroupWrapper.\n * Default is headerHeight and groupHeaderHeight.\n *\n * This can be used with CSS to make a header cell span both the group & normal header row.\n * Setting this to a value larger than height will cause the content to\n * overflow the height. This is useful when adding a 2nd table as the group\n * header and vertically merging the 2 headers when a column is not part\n * of a group. Here are the necessary CSS changes:\n *\n * Both headers:\n * - cellGroupWrapper needs overflow-x: hidden and pointer-events: none\n * - cellGroup needs pointer-events: auto to reenable them on child els\n * Group header:\n * - Layout/main needs overflow: visible and a higher z-index\n * - CellLayout/main needs overflow-y: visible\n * - cellGroup needs overflow: visible\n */\n cellGroupWrapperHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of footerHeight without losing documentation (moved to elementHeights)\n\n /**\n * Pixel height of footer.\n */\n footerHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Value of horizontal scroll.\n */\n scrollLeft: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (jordan) Remove propType of scrollToRow & scrollToColumn without losing documentation\n\n /**\n * Index of column to scroll to.\n */\n scrollToColumn: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Value of vertical scroll.\n */\n scrollTop: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Index of row to scroll to.\n */\n scrollToRow: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n\n /**\n * Callback that is called when scrolling starts. The current horizontal and vertical scroll values,\n * and the current first and last row indexes will be provided to the callback.\n */\n onScrollStart: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when scrolling ends. The new horizontal and vertical scroll values,\n * and the new first and last row indexes will be provided to the callback.\n */\n onScrollEnd: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * If enabled scroll events will not be propagated outside of the table.\n */\n stopReactWheelPropagation: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * If enabled scroll events will never be bubbled to the browser default handler.\n * If disabled (default when unspecified), scroll events will be bubbled up if the scroll\n * doesn't lead to a change in scroll offsets, which is preferable if you like\n * the page/container to scroll up when the table is already scrolled up max.\n */\n stopScrollDefaultHandling: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * If enabled scroll events will not be propagated outside of the table.\n */\n stopScrollPropagation: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * Callback that is called when `rowHeightGetter` returns a different height\n * for a row than the `rowHeight` prop. This is necessary because initially\n * table estimates heights of some parts of the content.\n */\n onContentHeightChange: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a row is clicked.\n */\n onRowClick: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a contextual-menu event happens on a row.\n */\n onRowContextMenu: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a row is double clicked.\n */\n onRowDoubleClick: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a mouse-down event happens on a row.\n */\n onRowMouseDown: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a mouse-up event happens on a row.\n */\n onRowMouseUp: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a mouse-enter event happens on a row.\n */\n onRowMouseEnter: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a mouse-leave event happens on a row.\n */\n onRowMouseLeave: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a touch-start event happens on a row.\n */\n onRowTouchStart: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a touch-end event happens on a row.\n */\n onRowTouchEnd: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when a touch-move event happens on a row.\n */\n onRowTouchMove: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when resizer has been released\n * and column needs to be updated.\n *\n * Required if the isResizable property is true on any column.\n *\n * ```\n * function(\n * newColumnWidth: number,\n * columnKey: string,\n * )\n * ```\n */\n onColumnResizeEndCallback: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Callback that is called when reordering has been completed\n * and columns need to be updated.\n *\n * ```\n * function(\n * event {\n * columnBefore: string|undefined, // the column before the new location of this one\n * columnAfter: string|undefined, // the column after the new location of this one\n * reorderColumn: string, // the column key that was just reordered\n * }\n * )\n * ```\n */\n onColumnReorderEndCallback: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func,\n\n /**\n * Whether a column is currently being resized.\n */\n isColumnResizing: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n\n /**\n * Whether columns are currently being reordered.\n */\n isColumnReordering: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.bool,\n // TODO (jordan) Remove propType of bufferRowCount without losing documentation\n\n /**\n * The number of rows outside the viewport to prerender. Defaults to roughly\n * half of the number of visible rows.\n */\n bufferRowCount: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n // TODO (pradeep): Move elementHeights to a selector instead of passing it through redux as state variables\n\n /**\n * Row heights of the header, groupheader, footer, and cell group wrapper\n * grouped into a single object.\n *\n * @ignore\n */\n elementHeights: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.shape({\n cellGroupWrapperHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n footerHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n groupHeaderHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number,\n headerHeight: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number\n })\n});\n\n_defineProperty(FixedDataTable, \"defaultProps\",\n/*object*/\n{\n elementHeights: {\n cellGroupWrapperHeight: undefined,\n footerHeight: 0,\n groupHeaderHeight: 0,\n headerHeight: 0\n },\n keyboardScrollEnabled: false,\n keyboardPageEnabled: false,\n touchScrollEnabled: false,\n stopScrollPropagation: false\n});\n\nvar HorizontalScrollbar =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(HorizontalScrollbar, _React$PureComponent);\n\n function HorizontalScrollbar() {\n _classCallCheck(this, HorizontalScrollbar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(HorizontalScrollbar).apply(this, arguments));\n }\n\n _createClass(HorizontalScrollbar, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n this._initialRender = true;\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._initialRender = false;\n }\n }, {\n key: \"render\",\n value: function render()\n /*object*/\n {\n var _this$props10 = this.props,\n offset = _this$props10.offset,\n size = _this$props10.size;\n var outerContainerStyle = {\n height: Scrollbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"].SIZE,\n width: size\n };\n var innerContainerStyle = {\n height: Scrollbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"].SIZE,\n overflow: 'hidden',\n width: size,\n top: offset\n };\n return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n className: Object(joinClasses__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(Object(cx__WEBPACK_IMPORTED_MODULE_11__[\"default\"])('public/fixedDataTable/horizontalScrollbar')),\n style: outerContainerStyle\n }, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(\"div\", {\n style: innerContainerStyle\n }, react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(Scrollbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _extends({}, this.props, {\n isOpaque: true,\n orientation: \"horizontal\",\n offset: undefined\n }))));\n }\n }]);\n\n return HorizontalScrollbar;\n}(react__WEBPACK_IMPORTED_MODULE_4___default.a.PureComponent);\n\n_defineProperty(HorizontalScrollbar, \"propTypes\", {\n contentSize: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n offset: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n onScroll: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.func.isRequired,\n position: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired,\n size: prop_types__WEBPACK_IMPORTED_MODULE_5___default.a.number.isRequired\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FixedDataTable);\n\n//# sourceURL=webpack://FixedDataTable/./src/FixedDataTable.js?"); /***/ }), @@ -2117,7 +2117,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Loca /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var FixedDataTableContainer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! FixedDataTableContainer */ \"./src/FixedDataTableContainer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Table\", function() { return FixedDataTableContainer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var FixedDataTableCellDefault__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! FixedDataTableCellDefault */ \"./src/FixedDataTableCellDefault.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Cell\", function() { return FixedDataTableCellDefault__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var FixedDataTableColumn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! FixedDataTableColumn */ \"./src/FixedDataTableColumn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Column\", function() { return FixedDataTableColumn__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var FixedDataTableColumnGroup__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! FixedDataTableColumnGroup */ \"./src/FixedDataTableColumnGroup.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ColumnGroup\", function() { return FixedDataTableColumnGroup__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/**\n * Copyright Schrodinger, LLC\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FixedDataTableRoot\n */\n\n\n\n\n\n\nvar version = '1.0.0-beta.29';\n\n\n//# sourceURL=webpack://FixedDataTable/./src/FixedDataTableRoot.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var FixedDataTableContainer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! FixedDataTableContainer */ \"./src/FixedDataTableContainer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Table\", function() { return FixedDataTableContainer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var FixedDataTableCellDefault__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! FixedDataTableCellDefault */ \"./src/FixedDataTableCellDefault.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Cell\", function() { return FixedDataTableCellDefault__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var FixedDataTableColumn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! FixedDataTableColumn */ \"./src/FixedDataTableColumn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Column\", function() { return FixedDataTableColumn__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var FixedDataTableColumnGroup__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! FixedDataTableColumnGroup */ \"./src/FixedDataTableColumnGroup.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ColumnGroup\", function() { return FixedDataTableColumnGroup__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/**\n * Copyright Schrodinger, LLC\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FixedDataTableRoot\n */\n\n\n\n\n\n\nvar version = '1.0.0-beta.30';\n\n\n//# sourceURL=webpack://FixedDataTable/./src/FixedDataTableRoot.js?"); /***/ }), diff --git a/package.json b/package.json index c7878e70..0caf6369 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fixed-data-table-2", - "version": "1.0.0-beta.29", + "version": "1.0.0-beta.30", "description": "A React table component designed to allow presenting thousands of rows of data.", "main": "main.js", "peerDependencies": { diff --git a/src/FixedDataTableRoot.js b/src/FixedDataTableRoot.js index 811cbcf9..d6e44ab3 100644 --- a/src/FixedDataTableRoot.js +++ b/src/FixedDataTableRoot.js @@ -16,7 +16,7 @@ import Cell from 'FixedDataTableCellDefault'; import Column from 'FixedDataTableColumn'; import ColumnGroup from 'FixedDataTableColumnGroup'; -const version = '1.0.0-beta.29'; +const version = '1.0.0-beta.30'; export { Cell,