UNPKG

nsn-comp

Version:

NSN核心组件

65 lines (52 loc) 1.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.computeLine = void 0; var _nsnConst = require("nsn-const"); var _bisection = require("./bisection"); var isSupportLineClamp = document.body.style.webkitLineClamp !== undefined; var computeLine = function computeLine(comp, elements) { var lines = comp.props.lines; var normal = elements.normal, shadow = elements.shadow, contentContainer = elements.contentContainer, content = elements.content; if (lines && !isSupportLineClamp) { var _ref = normal || {}, innerText = _ref.innerText, textContent = _ref.textContent, _ref$offsetHeight = _ref.offsetHeight, totalHeight = _ref$offsetHeight === void 0 ? 0 : _ref$offsetHeight; var text = innerText || textContent || _nsnConst.NConst.EMPTY; var textLength = text.length; var lineHeight = contentContainer ? parseInt(getComputedStyle(contentContainer).lineHeight, 10) : 10; var targetHeight = lines * lineHeight; if (content) { content.style.height = "".concat(targetHeight, "px"); } if (totalHeight <= targetHeight) { comp.setState({ text: text, targetCount: textLength }); return; } // bisection var _ref2 = shadow || {}, firstElementChild = _ref2.firstElementChild; var shadowNode = firstElementChild; var targetCount = (0, _bisection.bisection)({ targetHeight: targetHeight, text: text, shadowNode: shadowNode, midIndex: Math.ceil(textLength / 2), beginIndex: 0, endIndex: textLength }); comp.setState({ text: text, targetCount: targetCount }); } }; exports.computeLine = computeLine;