UNPKG

phaser3-rex-plugins

Version:
93 lines (80 loc) 2.88 kB
import { GetDisplayWidth, GetDisplayHeight } from '../../../plugins/utils/size/GetDisplaySize.js'; var RunChildrenWrap = function (lineWidth, out) { if (out === undefined) { out = { lines: [], width: 0, height: 0 } } else { out.lines.length = 0; out.width = 0; out.height = 0; } var children = this.sizerChildren; var itemSpace = this.space.item, lineSpace = this.space.line, indentLeftOdd = this.space.indentLeftOdd, indentLeftEven = this.space.indentLeftEven, indentTopOdd = this.space.indentTopOdd, indentTopEven = this.space.indentTopEven; var child, childWidth, childHeight, remainder = 0, indentLeft; var lines = out.lines, lastLine = undefined, newLine; for (var i = 0, cnt = children.length; i < cnt; i++) { child = children[i]; if (child === '\n') { child = undefined; childWidth = 0; newLine = true; } else { if (child.rexSizer.hidden) { continue; } if (child.isRexSizer) { child.layout(); // Use original size } childWidth = GetChildWidth(child); newLine = (remainder < childWidth) || (lastLine === undefined); } // New line if (newLine) { if (lastLine) { lastLine.width = lineWidth - (remainder + itemSpace); out.width = Math.max(out.width, lastLine.width); out.height += lastLine.height + lineSpace; } lastLine = { children: [], // width: 0, height: 0 }; lines.push(lastLine); var indentLeft = (lines.length % 2) ? indentLeftOdd : indentLeftEven; remainder = lineWidth - indentLeft; } remainder -= (childWidth + itemSpace); if (child) { lastLine.children.push(child); childHeight = GeChildHeight(child); lastLine.height = Math.max(lastLine.height, childHeight); } } if (lastLine) { lastLine.width = lineWidth - (remainder + itemSpace); out.width = Math.max(out.width, lastLine.width); out.height += lastLine.height; } out.height += Math.max(indentTopOdd, indentTopEven); return out; } var GetChildWidth = function (child) { var padding = child.rexSizer.padding; return GetDisplayWidth(child) + padding.left + padding.right; } var GeChildHeight = function (child) { var padding = child.rexSizer.padding; return GetDisplayHeight(child) + padding.top + padding.bottom; } export default RunChildrenWrap;