@wix/design-system
Version:
@wix/design-system
61 lines (59 loc) • 3.05 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.getStickyColumnStyle = exports.getStickyColumnOffset = exports.CELL_PADDING = exports.CELL_EDGE_PADDING = void 0;
exports.virtualRowsAreEqual = virtualRowsAreEqual;
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _shallowequal = _interopRequireDefault(require("shallowequal"));
var _DataTableSt = require("./DataTable.st.css.js");
var _excluded = ["style", "data", "index"],
_excluded2 = ["style", "data", "index"],
_excluded3 = ["data"],
_excluded4 = ["data"];
function virtualRowsAreEqual(prevProps, nextProps) {
var prevStyle = prevProps.style,
prevData = prevProps.data,
prevIndex = prevProps.index,
prevRest = (0, _objectWithoutProperties2.default)(prevProps, _excluded);
var nextStyle = nextProps.style,
nextData = nextProps.data,
nextIndex = nextProps.index,
nextRest = (0, _objectWithoutProperties2.default)(nextProps, _excluded2);
var nextItemData = nextData.data,
restNextItemData = (0, _objectWithoutProperties2.default)(nextData, _excluded3);
var prevItemData = prevData.data,
restPrevItemData = (0, _objectWithoutProperties2.default)(prevData, _excluded4);
return nextIndex === prevIndex && (0, _shallowequal.default)(prevStyle, nextStyle) && (0, _shallowequal.default)(prevItemData[prevIndex], nextItemData[nextIndex]) && (0, _shallowequal.default)(restPrevItemData, restNextItemData) && (0, _shallowequal.default)(prevRest, nextRest);
}
var CELL_PADDING = exports.CELL_PADDING = parseInt(_DataTableSt.stVars.cellHorizontalPadding, 10);
var CELL_EDGE_PADDING = exports.CELL_EDGE_PADDING = parseInt(_DataTableSt.stVars.cellHorizontalEdgePadding, 10);
/**
* The cell padding is themeable, so the offset has to stay symbolic — a number
* computed from CELL_PADDING would misplace sticky columns in themes that
* resolve `--wds-table-cell-padding-inline` to anything other than 12px.
*/
var getStickyColumnOffset = (widths, cellPaddings, edgePaddings) => "calc(".concat(widths, "px + ").concat(edgePaddings * CELL_EDGE_PADDING, "px + ").concat(cellPaddings, " * var(--wds-table-cell-padding-inline, ").concat(CELL_PADDING, "px))");
exports.getStickyColumnOffset = getStickyColumnOffset;
var getStickyColumnStyle = exports.getStickyColumnStyle = function getStickyColumnStyle(columns, column) {
var getColumnWidth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : col => parseInt(col.width, 10);
var widths = 0;
var cellPaddings = 0;
var edgePaddings = 0;
for (var i = 0; i < columns.length; i++) {
var col = columns[i];
if (col === column) {
break;
}
if (i === 0) {
edgePaddings += 1;
cellPaddings += 1;
} else {
cellPaddings += 2;
}
widths += getColumnWidth(col);
}
return {
left: getStickyColumnOffset(widths, cellPaddings, edgePaddings)
};
};
//# sourceMappingURL=DataTable.utils.js.map