UNPKG

antd

Version:

An enterprise-class UI design language and React components implementation

71 lines (70 loc) 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); var _warning = require("../../_util/warning"); // Calculate the sum of span in a row function getCalcRows(rowItems, mergedColumn) { let rows = []; let tmpRow = []; let exceed = false; let count = 0; rowItems.filter(n => n).forEach(rowItem => { const { filled, ...restItem } = rowItem; if (filled) { tmpRow.push(restItem); rows.push(tmpRow); // reset tmpRow = []; count = 0; return; } const restSpan = mergedColumn - count; count += rowItem.span || 1; if (count >= mergedColumn) { if (count > mergedColumn) { exceed = true; tmpRow.push({ ...restItem, span: restSpan }); } else { tmpRow.push(restItem); } rows.push(tmpRow); // reset tmpRow = []; count = 0; } else { tmpRow.push(restItem); } }); if (tmpRow.length > 0) { rows.push(tmpRow); } rows = rows.map(rows => { const count = rows.reduce((acc, item) => acc + (item.span || 1), 0); if (count < mergedColumn) { // If the span of the last element in the current row is less than the column, then add its span to the remaining columns const last = rows[rows.length - 1]; last.span = mergedColumn - (count - (last.span || 1)); return rows; } return rows; }); return [rows, exceed]; } const useRow = (mergedColumn, items) => { const [rows, exceed] = (0, _react.useMemo)(() => getCalcRows(items, mergedColumn), [items, mergedColumn]); if (process.env.NODE_ENV !== 'production') { const warning = (0, _warning.devUseWarning)('Descriptions'); process.env.NODE_ENV !== "production" ? warning(!exceed, 'usage', 'Sum of column `span` in a line not match `column` of Descriptions.') : void 0; } return rows; }; var _default = exports.default = useRow;