diff --git a/src/components/SVG/Base.js b/src/components/SVG/Base.js index 429c4e4..ea01c58 100644 --- a/src/components/SVG/Base.js +++ b/src/components/SVG/Base.js @@ -13,21 +13,21 @@ class Base extends React.PureComponent { } async setBBox(box, recalculate = {}) { - let bbox = this._currentBBox() || Map({ width: 0, height: 0}); + const bbox = (this._currentBBox() || Map({ width: 0, height: 0})).withMutations(bbox => { + bbox.merge(box); - bbox = bbox.merge(box); + if (!bbox.has('axisY') || recalculate.axisY) { + bbox.set('axisY', bbox.get('height') / 2); + } - if (!bbox.has('axisY') || recalculate.axisY) { - bbox = bbox.set('axisY', bbox.get('height') / 2); - } + if (!bbox.has('axisX1') || recalculate.axisX1) { + bbox.set('axisX1', 0); + } - if (!bbox.has('axisX1') || recalculate.axisX1) { - bbox = bbox.set('axisX1', 0); - } - - if (!bbox.has('axisX2') || recalculate.axisX2) { - bbox = bbox.set('axisX2', bbox.get('width')); - } + if (!bbox.has('axisX2') || recalculate.axisX2) { + bbox.set('axisX2', bbox.get('width')); + } + }); this.tempBBox = bbox; // Want to get the updated bbox while setState is pending await this.setStateAsync({ bbox }); diff --git a/src/components/SVG/HorizontalLayout.js b/src/components/SVG/HorizontalLayout.js index f0753a5..d7d0fbc 100644 --- a/src/components/SVG/HorizontalLayout.js +++ b/src/components/SVG/HorizontalLayout.js @@ -21,9 +21,11 @@ class HorizontalLayout extends Base { } updateChildTransforms(childBoxes) { - return childBoxes.reduce((transforms, box, i) => ( - transforms.set(i, `translate(${ box.offsetX } ${ box.offsetY })`) - ), this.state.childTransforms); + return this.state.childTransforms.withMutations(transforms => ( + childBoxes.forEach((box, i) => ( + transforms.set(i, `translate(${ box.offsetX } ${ box.offsetY })`) + )) + )); } updateConnectorPaths(childBoxes) { diff --git a/src/components/SVG/VerticalLayout.js b/src/components/SVG/VerticalLayout.js index 6a9eb62..30f94eb 100644 --- a/src/components/SVG/VerticalLayout.js +++ b/src/components/SVG/VerticalLayout.js @@ -23,9 +23,11 @@ class VerticalLayout extends Base { } updateChildTransforms(childBoxes) { - return childBoxes.reduce((transforms, box, i) => ( - transforms.set(i, `translate(${ box.offsetX } ${ box.offsetY })`) - ), this.state.childTransforms); + return this.state.childTransforms.withMutations(transforms => ( + childBoxes.forEach((box, i) => ( + transforms.set(i, `translate(${ box.offsetX } ${ box.offsetY })`) + )) + )); } makeCurve(box) {