From c29300e8cf22008278e87f353db4d6d6b385e396 Mon Sep 17 00:00:00 2001 From: Anton Lavrenov Date: Sat, 17 Dec 2022 10:24:49 -0500 Subject: [PATCH] fix transformer clone. close #1457 --- package.json | 22 +++++++++++----------- src/shapes/Transformer.ts | 5 +++++ test/unit/Transformer-test.ts | 25 +++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 7a351feb..00bd637b 100644 --- a/package.json +++ b/package.json @@ -88,11 +88,11 @@ } ], "devDependencies": { - "@parcel/transformer-image": "2.7.0", - "@size-limit/preset-big-lib": "^8.0.0", - "@types/mocha": "^9.1.1", - "canvas": "^2.9.3", - "chai": "4.3.6", + "@parcel/transformer-image": "2.8.2", + "@size-limit/preset-big-lib": "^8.1.0", + "@types/mocha": "^10.0.1", + "canvas": "^2.10.2", + "chai": "4.3.7", "filehound": "^1.17.6", "gulp": "^4.0.2", "gulp-concat": "^2.6.1", @@ -105,19 +105,19 @@ "gulp-uglify": "^3.0.2", "gulp-uglify-es": "^3.0.0", "gulp-util": "^3.0.8", - "mocha": "10.0.0", + "mocha": "10.2.0", "mocha-headless-chrome": "^4.0.0", - "parcel": "2.7.0", + "parcel": "2.8.2", "process": "^0.11.10", - "rollup": "^2.77.2", + "rollup": "^3.7.5", "rollup-plugin-commonjs": "^10.1.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.6.3", - "rollup-plugin-typescript2": "^0.32.1", - "size-limit": "^8.0.0", + "rollup-plugin-typescript2": "^0.34.1", + "size-limit": "^8.1.0", "ts-mocha": "^10.0.0", "ts-node": "^10.9.1", - "typescript": "^4.7.4" + "typescript": "^4.9.4" }, "keywords": [ "canvas", diff --git a/src/shapes/Transformer.ts b/src/shapes/Transformer.ts index 51a0224b..42e67062 100644 --- a/src/shapes/Transformer.ts +++ b/src/shapes/Transformer.ts @@ -1219,6 +1219,11 @@ export class Transformer extends Group { 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() { if (this.nodes().length > 0) { return super.getClientRect(); diff --git a/test/unit/Transformer-test.ts b/test/unit/Transformer-test.ts index f796e9ec..f80b89dc 100644 --- a/test/unit/Transformer-test.ts +++ b/test/unit/Transformer-test.ts @@ -4744,4 +4744,29 @@ describe('Transformer', function () { assert.notDeepEqual(layerClientRect, rectClientRect); 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); + }); });