Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0c62890

Browse files
committed
cache ref to tester div and tester ref on drawing module object
- so that Drawing.bBox does not have to query the DOM to fing them on every call.
1 parent 3fdb308 commit 0c62890

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

src/components/drawing/index.js

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -579,16 +579,17 @@ drawing.makeTester = function(gd) {
579579
tester.node()._cache = {};
580580
}
581581

582-
gd._tester = tester;
583-
gd._testref = testref;
582+
drawing.tester = gd._tester = tester;
583+
drawing.testref = gd._testref = testref;
584584
};
585585

586586
// use our offscreen tester to get a clientRect for an element,
587587
// in a reference frame where it isn't translated and its anchor
588588
// point is at (0,0)
589589
// always returns a copy of the bbox, so the caller can modify it safely
590-
var savedBBoxes = [],
591-
maxSavedBBoxes = 10000;
590+
var savedBBoxes = [];
591+
var maxSavedBBoxes = 10000;
592+
592593
drawing.bBox = function(node) {
593594
// cache elements we've already measured so we don't have to
594595
// remeasure the same thing many times
@@ -597,22 +598,24 @@ drawing.bBox = function(node) {
597598
return Lib.extendFlat({}, savedBBoxes[saveNum.value]);
598599
}
599600

600-
var test3 = d3.select('#js-plotly-tester'),
601-
tester = test3.node();
601+
var tester3 = drawing.tester;
602+
var tester = tester3.node();
602603

603604
// copy the node to test into the tester
604605
var testNode = node.cloneNode(true);
605606
tester.appendChild(testNode);
607+
606608
// standardize its position... do we really want to do this?
607609
d3.select(testNode).attr({
608610
x: 0,
609611
y: 0,
610612
transform: ''
611613
});
612614

613-
var testRect = testNode.getBoundingClientRect(),
614-
refRect = test3.select('.js-reference-point')
615-
.node().getBoundingClientRect();
615+
var testRect = testNode.getBoundingClientRect();
616+
var refRect = drawing.testref
617+
.node()
618+
.getBoundingClientRect();
616619

617620
tester.removeChild(testNode);
618621

0 commit comments

Comments
 (0)