Skip to content

Commit 0fe1f5c

Browse files
transformer changes
1 parent 39f7705 commit 0fe1f5c

File tree

3 files changed

+19
-6
lines changed

3 files changed

+19
-6
lines changed

src/components/KonvaStage.jsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
Stage, Layer, Group, Label, Text, Rect, Transformer,
55
} from 'react-konva';
66
import Rectangle from './Rectangle.jsx';
7+
import TransformerComponent from './TransformerComponent.jsx';
78

89
class KonvaStage extends Component {
910
constructor(props) {
@@ -115,6 +116,7 @@ class KonvaStage extends Component {
115116
stroke={focusComponent.color}
116117
x={0}
117118
y={0}
119+
name={'-1'}
118120
width={focusComponent.position.width}
119121
height={focusComponent.position.height}
120122
strokeWidth={2}
@@ -130,6 +132,7 @@ class KonvaStage extends Component {
130132
y={-15}
131133
/>
132134
</Label>
135+
<TransformerComponent rectClass={'componentRect'} />
133136
</Group>
134137
)}
135138
{components

src/components/Rectangle.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ class Rectangle extends Component {
7070
>
7171
<Rect
7272
name={`${childId}`}
73+
className={'childRect'}
7374
x={0}
7475
y={0}
7576
// absolutePosition={{ x, y }}
@@ -121,7 +122,7 @@ class Rectangle extends Component {
121122
))}
122123
{focusChild
123124
&& focusChild.childId === childId
124-
&& draggable && <TransformerComponent focusChild={focusChild} />}
125+
&& draggable && <TransformerComponent focusChild={focusChild} rectClass={'childRect'} />}
125126
</Group>
126127
);
127128
}

src/components/TransformerComponent.jsx

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,28 @@ import { Transformer } from 'react-konva';
44

55
export default class TransformerComponent extends Component {
66
componentDidMount() {
7-
this.checkNode();
7+
this.checkNode(this.props.rectClass);
88
}
99

1010
componentDidUpdate() {
11-
this.checkNode();
11+
this.checkNode(this.props.rectClass);
1212
}
1313

1414
// this function makes sure the transformer follows along with the focusChild
15-
checkNode() {
15+
checkNode(rectClass) {
1616
const stage = this.transformer.getStage();
1717
const { focusChild } = this.props;
18-
const selectedNode = stage.findOne(`.${focusChild.childId}`);
18+
19+
// depending on the rectClass prop, this transformer is either attached to
20+
// a childRect or the focused component's componentRect
21+
let selectedNode;
22+
if (rectClass === 'componentRect') {
23+
selectedNode = stage.findOne(`.${-1}`);
24+
} else if (rectClass === 'childRect') {
25+
selectedNode = stage.findOne(`.${focusChild.childId}`);
26+
} else {
27+
return;
28+
}
1929

2030
if (selectedNode === this.transformer.node()) {
2131
return;
@@ -32,7 +42,6 @@ export default class TransformerComponent extends Component {
3242
return (
3343
<Transformer
3444
rotateEnabled={false}
35-
onMouseUp={this.handleMouseUp}
3645
ref={(node) => {
3746
this.transformer = node;
3847
}}

0 commit comments

Comments
 (0)