From 3b0347eebcaeac1df75382e580bc2893bd512da7 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 12 Feb 2016 17:12:03 -0500 Subject: [PATCH] Persist dimensions in property to avoid reflow --- js/lib/d3.dimensions.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/js/lib/d3.dimensions.js b/js/lib/d3.dimensions.js index d54a05e25..eef257401 100644 --- a/js/lib/d3.dimensions.js +++ b/js/lib/d3.dimensions.js @@ -3,8 +3,15 @@ d3.selection.prototype.dimensions = function (dimensions) { var node = this.node(); if (!node) return; - var cr = node.getBoundingClientRect(); - return [cr.width, cr.height]; + var prop = this.property('__dimensions__'); + if (!prop) { + var cr = node.getBoundingClientRect(); + prop = [cr.width, cr.height]; + this.property('__dimensions__', prop); + } + return prop; } + + this.property('__dimensions__', [dimensions[0], dimensions[1]]); return this.attr({width: dimensions[0], height: dimensions[1]}); };