function helper(node, cmp, totalOffset, depth) {
			// Update the contour with ourselves
			var realX = node.targetX + totalOffset;
			if (depth < contour.length) {
				contour[depth] = cmp(contour[depth], realX);
			} else {
				contour.push(realX);
			}

			// Update the contour with our children
			totalOffset += node.offsetX;
			node.children.forEach(
				child => helper(child, cmp, totalOffset, depth + 1)
			);
		}
// Evaluates a node and its children, affecting the `contour` variable
Evaluates a node and its children, affecting the `contour` variable
Evaluates a node and its children affecting the ` contour ` variable
function helper(node, cmp, totalOffset, depth) {
			var realX = node.targetX + totalOffset;
			if (depth < contour.length) {
				contour[depth] = cmp(contour[depth], realX);
			} else {
				contour.push(realX);
			}
			totalOffset += node.offsetX;
			node.children.forEach(
				child => helper(child, cmp, totalOffset, depth + 1)
			);
		}
function helper ( node , cmp , totalOffset , depth ) { var realX = node . targetX + totalOffset ; if ( depth < contour . length ) { contour [ depth ] = cmp ( contour [ depth ] , realX ) ; } else { contour . push ( realX ) ; } totalOffset += node . offsetX ; node . children . forEach ( child => helper ( child , cmp , totalOffset , depth + 1 ) ) ; }
Evaluates a node and its children, affecting the `contour` variable
Evaluates a node and its children affecting the ` contour ` variable
// Update the contour with ourselves // Update the contour with our children