UNPKG

@native-html/heuristic-table-plugin

Version:

🔠 A 100% native component using heuristics to render tables in react-native-render-html

71 lines (49 loc) • 3.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = computeColumnWidths; var _pipe = _interopRequireDefault(require("ramda/src/pipe")); var _map = _interopRequireDefault(require("ramda/src/map")); var _prop = _interopRequireDefault(require("ramda/src/prop")); var _sum = _interopRequireDefault(require("ramda/src/sum")); var _min = _interopRequireDefault(require("ramda/src/min")); var _reduce = _interopRequireDefault(require("ramda/src/reduce")); var _converge = _interopRequireDefault(require("ramda/src/converge")); var _subtract = _interopRequireDefault(require("ramda/src/subtract")); var _partialRight = _interopRequireDefault(require("ramda/src/partialRight")); var _divide = _interopRequireDefault(require("ramda/src/divide")); var _add = _interopRequireDefault(require("ramda/src/add")); var _zip = _interopRequireDefault(require("ramda/src/zip")); var _multiply = _interopRequireDefault(require("ramda/src/multiply")); var _identity = _interopRequireDefault(require("ramda/src/identity")); var _reduceColumnConstraints = _interopRequireDefault(require("./reduceColumnConstraints")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const mapMinWidths = (0, _map.default)((0, _prop.default)('minWidth')); const mapspreads = (0, _map.default)((0, _prop.default)('spread')); // Compute the normal content density for each column, // that is content density with the zero reference as // the shortest column. const mapNormalContentDensity = (0, _converge.default)((m, list) => { return (0, _map.default)((0, _partialRight.default)(_subtract.default, [m]))(list); }, [(0, _reduce.default)(_min.default, Infinity), _identity.default]); const weightContentDensity = (0, _converge.default)((s, list) => { return (0, _map.default)((0, _partialRight.default)(_divide.default, [s]))(list); }, [_sum.default, _identity.default]); const mapWeightedColumnCoeffs = (0, _pipe.default)((0, _map.default)((0, _prop.default)('contentDensity')), mapNormalContentDensity, weightContentDensity); const totalMinWidths = (0, _pipe.default)(mapMinWidths, _sum.default); function computeColumnWidths(display) { const contentWidth = display.contentWidth; let shouldClampWidth = !display.forceStretch; const columnConstraints = (0, _reduceColumnConstraints.default)(display.cells); const minWidths = mapMinWidths(columnConstraints); const spreads = mapspreads(columnConstraints); const sumOfMinWidths = totalMinWidths(columnConstraints); if (contentWidth < sumOfMinWidths) { return minWidths; } const widthToAssign = contentWidth - sumOfMinWidths; const clampWidths = (0, _pipe.default)((0, _zip.default)(spreads), (0, _map.default)((0, _reduce.default)(_min.default, Infinity))); const columns = (0, _pipe.default)(mapWeightedColumnCoeffs, (0, _map.default)((0, _multiply.default)(widthToAssign)), (0, _zip.default)(minWidths), (0, _map.default)((0, _reduce.default)(_add.default, 0)), shouldClampWidth ? clampWidths : _identity.default)(columnConstraints); return columns; } //# sourceMappingURL=computeColumnWidths.js.map