@awsui/components-react
Version:
On July 19th, 2022, we launched [Cloudscape Design System](https://cloudscape.design). Cloudscape is an evolution of AWS-UI. It consists of user interface guidelines, front-end components, design resources, and development tools for building intuitive, en
44 lines • 2.46 kB
JavaScript
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
import { getLogicalBoundingClientRect } from '@awsui/component-toolkit/internal';
export function isCellStatesEqual(s1, s2) {
if (s1 && s2) {
return (s1.padInlineStart === s2.padInlineStart &&
s1.lastInsetInlineStart === s2.lastInsetInlineStart &&
s1.lastInsetInlineEnd === s2.lastInsetInlineEnd &&
s1.offset.insetInlineStart === s2.offset.insetInlineStart &&
s1.offset.insetInlineEnd === s2.offset.insetInlineEnd);
}
return s1 === s2;
}
export function isWrapperStatesEqual(s1, s2) {
return (s1.scrollPaddingInlineStart === s2.scrollPaddingInlineStart &&
s1.scrollPaddingInlineEnd === s2.scrollPaddingInlineEnd);
}
export function updateCellOffsets(cells, props) {
var _a, _b, _c, _d;
const totalColumns = props.visibleColumns.length;
const firstColumnsWidths = [];
for (let i = 0; i < Math.min(totalColumns, props.stickyColumnsFirst); i++) {
const element = cells.get(props.visibleColumns[i]);
const cellWidth = element ? getLogicalBoundingClientRect(element).inlineSize : 0;
firstColumnsWidths[i] = ((_a = firstColumnsWidths[i - 1]) !== null && _a !== void 0 ? _a : 0) + cellWidth;
}
const lastColumnsWidths = [];
for (let i = 0; i < Math.min(totalColumns, props.stickyColumnsLast); i++) {
const element = cells.get(props.visibleColumns[totalColumns - 1 - i]);
const cellWidth = element ? getLogicalBoundingClientRect(element).inlineSize : 0;
lastColumnsWidths[i] = ((_b = lastColumnsWidths[i - 1]) !== null && _b !== void 0 ? _b : 0) + cellWidth;
}
const stickyWidthInlineStart = (_c = firstColumnsWidths[props.stickyColumnsFirst - 1]) !== null && _c !== void 0 ? _c : 0;
const stickyWidthInlineEnd = (_d = lastColumnsWidths[props.stickyColumnsLast - 1]) !== null && _d !== void 0 ? _d : 0;
const offsets = props.visibleColumns.reduce((map, columnId, columnIndex) => {
var _a, _b;
return map.set(columnId, {
first: (_a = firstColumnsWidths[columnIndex - 1]) !== null && _a !== void 0 ? _a : 0,
last: (_b = lastColumnsWidths[totalColumns - 1 - columnIndex - 1]) !== null && _b !== void 0 ? _b : 0,
});
}, new Map());
return { offsets, stickyWidthInlineStart, stickyWidthInlineEnd };
}
//# sourceMappingURL=utils.js.map