@shopify/polaris
Version:
Shopify’s product component library
43 lines (39 loc) • 1.27 kB
JavaScript
function measureColumn(tableData) {
return function (column, index) {
var {
firstVisibleColumnIndex,
tableLeftVisibleEdge: tableStart,
tableRightVisibleEdge: tableEnd
} = tableData;
var leftEdge = column.offsetLeft;
var rightEdge = leftEdge + column.offsetWidth;
var isVisibleLeft = isEdgeVisible(leftEdge, tableStart, tableEnd);
var isVisibleRight = isEdgeVisible(rightEdge, tableStart, tableEnd);
var isVisible = isVisibleLeft || isVisibleRight;
if (isVisible) {
tableData.firstVisibleColumnIndex = Math.min(firstVisibleColumnIndex, index);
}
return {
leftEdge,
rightEdge,
isVisible
};
};
}
function isEdgeVisible(position, start, end) {
var minVisiblePixels = 30;
return position >= start + minVisiblePixels && position <= end - minVisiblePixels;
}
function getPrevAndCurrentColumns(tableData, columnData) {
var {
firstVisibleColumnIndex
} = tableData;
var previousColumnIndex = Math.max(firstVisibleColumnIndex - 1, 0);
var previousColumn = columnData[previousColumnIndex];
var currentColumn = columnData[firstVisibleColumnIndex];
return {
previousColumn,
currentColumn
};
}
export { getPrevAndCurrentColumns, isEdgeVisible, measureColumn };