From bc84f68250ea20df3a7c69215db55d759c52b14e Mon Sep 17 00:00:00 2001 From: Jeff Avallone Date: Sat, 13 Dec 2014 08:19:27 -0500 Subject: [PATCH] Adding a delay before positioning the regex This gives the page time to render the loading indicator before doing all the positioning work; providing a better experience for users when rendering complicated regexs like that Perl email regex. --- src/js/regexper.js | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/js/regexper.js b/src/js/regexper.js index 73d3ad8..513513f 100644 --- a/src/js/regexper.js +++ b/src/js/regexper.js @@ -81,9 +81,7 @@ export default class Regexper { renderRegexp(expression) { var snap = Snap(this.svg), - deferred = Q.defer(), - padding = this.padding, - result; + padding = this.padding; snap.selectAll('g').remove(); @@ -95,17 +93,25 @@ export default class Regexper { return result; }, this.showError.bind(this)) .then((result) => { - var box; + var deferred = Q.defer(); - result.position(); + setTimeout(() => { + var box; - box = result.getBBox(); - result.container.transform(Snap.matrix() - .translate(padding - box.x, padding - box.y)); - snap.attr({ - width: box.width + padding * 2, - height: box.height + padding * 2 + result.position(); + + box = result.getBBox(); + result.container.transform(Snap.matrix() + .translate(padding - box.x, padding - box.y)); + snap.attr({ + width: box.width + padding * 2, + height: box.height + padding * 2 + }); + + deferred.resolve(); }); + + return deferred.promise; }); } }