Updated the public API to no-longer extract nodes

This commit is contained in:
Colin Eberhardt
2015-08-13 08:39:28 +01:00
parent 0de0186fbd
commit f9bb74aedf
9 changed files with 121 additions and 88 deletions

View File

@@ -80,42 +80,33 @@ var computeLayout = (function() {
return 0;
}
// When transpiled to Java / C the node type has layout, children and style
// properties. For the JavaScript version this function adds these properties
// if they don't already exist.
function fillNodes(node) {
node.layout = {
width: undefined,
height: undefined,
top: 0,
left: 0,
right: 0,
bottom: 0
};
if (!node.layout) {
node.layout = {
width: undefined,
height: undefined,
top: 0,
left: 0,
right: 0,
bottom: 0
};
}
if (!node.style) {
node.style = {};
}
if (!node.children || node.style.measure) {
if (!node.children) {
node.children = [];
}
node.children.forEach(fillNodes);
return node;
}
function extractNodes(node) {
var layout = node.layout;
delete node.layout;
if (node.children && node.children.length > 0) {
layout.children = node.children.map(extractNodes);
} else {
delete node.children;
}
delete layout.right;
delete layout.bottom;
delete layout.direction;
return layout;
}
function getPositiveSpacing(node, type, suffix, locations) {
for (var i = 0; i < locations.length; ++i) {
var location = locations[i];
@@ -981,11 +972,13 @@ var computeLayout = (function() {
return {
computeLayout: layoutNode,
fillNodes: fillNodes,
extractNodes: extractNodes
fillNodes: fillNodes
};
})();
// This module export is only used for the purposes of unit testing this file. When
// the library is packaged this file is included within css-layout.js which forms
// the public API.
if (typeof exports === 'object') {
module.exports = computeLayout;
}