fix transformer clone. close #1457

This commit is contained in:
Anton Lavrenov 2022-12-17 10:24:49 -05:00
parent 066fec0248
commit c29300e8cf
3 changed files with 41 additions and 11 deletions

View File

@ -88,11 +88,11 @@
} }
], ],
"devDependencies": { "devDependencies": {
"@parcel/transformer-image": "2.7.0", "@parcel/transformer-image": "2.8.2",
"@size-limit/preset-big-lib": "^8.0.0", "@size-limit/preset-big-lib": "^8.1.0",
"@types/mocha": "^9.1.1", "@types/mocha": "^10.0.1",
"canvas": "^2.9.3", "canvas": "^2.10.2",
"chai": "4.3.6", "chai": "4.3.7",
"filehound": "^1.17.6", "filehound": "^1.17.6",
"gulp": "^4.0.2", "gulp": "^4.0.2",
"gulp-concat": "^2.6.1", "gulp-concat": "^2.6.1",
@ -105,19 +105,19 @@
"gulp-uglify": "^3.0.2", "gulp-uglify": "^3.0.2",
"gulp-uglify-es": "^3.0.0", "gulp-uglify-es": "^3.0.0",
"gulp-util": "^3.0.8", "gulp-util": "^3.0.8",
"mocha": "10.0.0", "mocha": "10.2.0",
"mocha-headless-chrome": "^4.0.0", "mocha-headless-chrome": "^4.0.0",
"parcel": "2.7.0", "parcel": "2.8.2",
"process": "^0.11.10", "process": "^0.11.10",
"rollup": "^2.77.2", "rollup": "^3.7.5",
"rollup-plugin-commonjs": "^10.1.0", "rollup-plugin-commonjs": "^10.1.0",
"rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-node-resolve": "^5.2.0",
"rollup-plugin-sourcemaps": "^0.6.3", "rollup-plugin-sourcemaps": "^0.6.3",
"rollup-plugin-typescript2": "^0.32.1", "rollup-plugin-typescript2": "^0.34.1",
"size-limit": "^8.0.0", "size-limit": "^8.1.0",
"ts-mocha": "^10.0.0", "ts-mocha": "^10.0.0",
"ts-node": "^10.9.1", "ts-node": "^10.9.1",
"typescript": "^4.7.4" "typescript": "^4.9.4"
}, },
"keywords": [ "keywords": [
"canvas", "canvas",

View File

@ -1219,6 +1219,11 @@ export class Transformer extends Group {
return Node.prototype.toObject.call(this); return Node.prototype.toObject.call(this);
} }
// overwrite clone to NOT use method from Container
clone(obj?: any) {
var node = Node.prototype.clone.call(this, obj);
return node as this;
}
getClientRect() { getClientRect() {
if (this.nodes().length > 0) { if (this.nodes().length > 0) {
return super.getClientRect(); return super.getClientRect();

View File

@ -4744,4 +4744,29 @@ describe('Transformer', function () {
assert.notDeepEqual(layerClientRect, rectClientRect); assert.notDeepEqual(layerClientRect, rectClientRect);
assert.deepEqual(layerClientRect, trClientRect); assert.deepEqual(layerClientRect, trClientRect);
}); });
it.only('cloning of transformer should double create child elements', function () {
var stage = addStage();
var layer = new Konva.Layer();
stage.add(layer);
var rect = new Konva.Rect({
x: 100,
y: 60,
draggable: true,
width: 100,
height: 100,
fill: 'yellow',
});
layer.add(rect);
var tr = new Konva.Transformer({
nodes: [rect],
});
layer.add(tr);
const clone = tr.clone();
assert.equal(clone.getChildren().length, tr.getChildren().length);
assert.equal(clone.nodes().length, 0);
});
}); });