MCPcopy Create free account
hub / github.com/microsoft/SandDance / transformParagraph

Function transformParagraph

docs/app/js/sanddance-app.js:106112–106169  ·  view source on GitHub ↗
(paragraph, lineHeight, wordBreak, maxWidth, iconMapping)

Source from the content-addressed store, hash-verified

106110 };
106111}
106112function transformParagraph(paragraph, lineHeight, wordBreak, maxWidth, iconMapping) {
106113 var result = new Array(paragraph.length);
106114 var autoWrappingEnabled = (wordBreak === "break-word" || wordBreak === "break-all") && isFinite(maxWidth) && maxWidth > 0;
106115 var size = [
106116 0,
106117 0
106118 ];
106119 var rowOffsetTop = 0;
106120 var lineStartIndex = 0;
106121 for(var i = 0; i <= paragraph.length; i++){
106122 var _char2 = paragraph[i];
106123 var line = void 0;
106124 if (_char2 === "\n" || _char2 === undefined) line = paragraph.slice(lineStartIndex, i);
106125 if (line) {
106126 var rows = autoWrappingEnabled ? autoWrapping(line, wordBreak, maxWidth, iconMapping).rows : [
106127 line
106128 ];
106129 var _iterator2 = _createForOfIteratorHelper(rows), _step2;
106130 try {
106131 for(_iterator2.s(); !(_step2 = _iterator2.n()).done;){
106132 var row = _step2.value;
106133 var _transformRow = transformRow(row, iconMapping, lineHeight), rowWidth = _transformRow.rowWidth, rowHeight = _transformRow.rowHeight, leftOffsets = _transformRow.leftOffsets;
106134 var _iterator3 = _createForOfIteratorHelper(leftOffsets), _step3;
106135 try {
106136 for(_iterator3.s(); !(_step3 = _iterator3.n()).done;){
106137 var x = _step3.value;
106138 result[lineStartIndex++] = {
106139 x: x,
106140 y: rowOffsetTop + rowHeight / 2,
106141 rowWidth: rowWidth
106142 };
106143 }
106144 } catch (err) {
106145 _iterator3.e(err);
106146 } finally{
106147 _iterator3.f();
106148 }
106149 rowOffsetTop = rowOffsetTop + rowHeight * lineHeight;
106150 size[0] = autoWrappingEnabled ? maxWidth : Math.max(size[0], rowWidth);
106151 }
106152 } catch (err) {
106153 _iterator2.e(err);
106154 } finally{
106155 _iterator2.f();
106156 }
106157 }
106158 if (_char2 === "\n") result[lineStartIndex++] = {
106159 x: 0,
106160 y: 0,
106161 rowWidth: 0
106162 };
106163 }
106164 size[1] = rowOffsetTop;
106165 return {
106166 characters: result,
106167 size: size
106168 };
106169}

Callers

nothing calls this directly

Calls 4

autoWrappingFunction · 0.70
transformRowFunction · 0.70
maxMethod · 0.45

Tested by

no test coverage detected