Introduce getDimWithMargin helper

This commit is contained in:
Christopher Chedeau
2014-04-15 16:44:24 -07:00
parent 9313d3d11e
commit e55a6fbf27

View File

@@ -70,6 +70,12 @@ function computeLayout(node) {
return node.style.flex === 1; return node.style.flex === 1;
} }
function getDimWithMargin(node, axis) {
return node.layout[dim[axis]] +
getMargin(leading[axis], node) +
getMargin(trailing[axis], node);
}
var axis = { var axis = {
left: 'horizontal', left: 'horizontal',
right: 'horizontal', right: 'horizontal',
@@ -115,9 +121,7 @@ function computeLayout(node) {
children.forEach(function(child) { children.forEach(function(child) {
if (node.layout[dim[mainAxis]] === undefined || !getFlex(child)) { if (node.layout[dim[mainAxis]] === undefined || !getFlex(child)) {
layoutNode(child); layoutNode(child);
mainContentDim += child.layout[dim[mainAxis]] + mainContentDim += getDimWithMargin(child, mainAxis);
getMargin(leading[mainAxis], child) +
getMargin(trailing[mainAxis], child);
} else { } else {
flexibleChildrenCount++; flexibleChildrenCount++;
} }
@@ -156,16 +160,10 @@ function computeLayout(node) {
var mainPos = leadingMainDim; var mainPos = leadingMainDim;
children.forEach(function(child) { children.forEach(function(child) {
child.layout[pos[mainAxis]] += mainPos; child.layout[pos[mainAxis]] += mainPos;
mainPos += child.layout[dim[mainAxis]] + mainPos += getDimWithMargin(child, mainAxis) + betweenMainDim;
getMargin(leading[mainAxis], child) +
getMargin(trailing[mainAxis], child) +
betweenMainDim;
if (child.layout[dim[crossAxis]] !== undefined) { if (child.layout[dim[crossAxis]] !== undefined) {
var childCrossDim = child.layout[dim[crossAxis]] + var childCrossDim = getDimWithMargin(child, crossAxis);
getMargin(leading[crossAxis], child) +
getMargin(trailing[crossAxis], child);
if (childCrossDim > crossDim) { if (childCrossDim > crossDim) {
crossDim = childCrossDim; crossDim = childCrossDim;
} }
@@ -182,9 +180,7 @@ function computeLayout(node) {
children.forEach(function(child) { children.forEach(function(child) {
var alignItem = getAlignItem(node, child); var alignItem = getAlignItem(node, child);
var remainingCrossDim = node.layout[dim[crossAxis]] - var remainingCrossDim = node.layout[dim[crossAxis]] -
child.layout[dim[crossAxis]] - getDimWithMargin(child, crossAxis);
getMargin(leading[crossAxis], child) -
getMargin(trailing[crossAxis], child);
var leadingCrossDim = 0; var leadingCrossDim = 0;
if (alignItem === 'flex-start') { if (alignItem === 'flex-start') {
// Do nothing // Do nothing
@@ -193,9 +189,7 @@ function computeLayout(node) {
} else if (alignItem === 'flex-end') { } else if (alignItem === 'flex-end') {
leadingCrossDim = remainingCrossDim; leadingCrossDim = remainingCrossDim;
} else if (alignItem === 'stretch') { } else if (alignItem === 'stretch') {
child.layout[dim[crossAxis]] = node.layout[dim[crossAxis]] - child.layout[dim[crossAxis]] = getDimWithMargin(node, crossAxis);
getMargin(leading[crossAxis], child) -
getMargin(trailing[crossAxis], child);
} }
child.layout[pos[crossAxis]] += leadingCrossDim; child.layout[pos[crossAxis]] += leadingCrossDim;
}); });