mirror of
https://github.com/konvajs/konva.git
synced 2025-06-28 15:23:44 +08:00
Add getActiveAnchor()
method to Konva.Transformer
This commit is contained in:
parent
4b58220e31
commit
2019f8042b
@ -6,6 +6,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|||||||
## Not released:
|
## Not released:
|
||||||
|
|
||||||
* Add `rotationSnapTolerance` property to `Konva.Transformer`.
|
* Add `rotationSnapTolerance` property to `Konva.Transformer`.
|
||||||
|
* Add `getActiveAnchor()` method to `Konva.Transformer`
|
||||||
|
|
||||||
## 4.1.6 - 2020-02-25
|
## 4.1.6 - 2020-02-25
|
||||||
|
|
||||||
|
37
konva.js
37
konva.js
@ -8,7 +8,7 @@
|
|||||||
* Konva JavaScript Framework v4.1.6
|
* Konva JavaScript Framework v4.1.6
|
||||||
* http://konvajs.org/
|
* http://konvajs.org/
|
||||||
* Licensed under the MIT
|
* Licensed under the MIT
|
||||||
* Date: Tue Feb 25 2020
|
* Date: Tue Mar 03 2020
|
||||||
*
|
*
|
||||||
* Original work Copyright (C) 2011 - 2013 by Eric Rowell (KineticJS)
|
* Original work Copyright (C) 2011 - 2013 by Eric Rowell (KineticJS)
|
||||||
* Modified work Copyright (C) 2014 - present by Anton Lavrenov (Konva)
|
* Modified work Copyright (C) 2014 - present by Anton Lavrenov (Konva)
|
||||||
@ -134,7 +134,7 @@
|
|||||||
*/
|
*/
|
||||||
dragDistance: 3,
|
dragDistance: 3,
|
||||||
/**
|
/**
|
||||||
* Use degree values for angle properties. You may set this property to false if you want to use radiant values.
|
* Use degree values for angle properties. You may set this property to false if you want to use radian values.
|
||||||
* @property angleDeg
|
* @property angleDeg
|
||||||
* @default true
|
* @default true
|
||||||
* @memberof Konva
|
* @memberof Konva
|
||||||
@ -2309,7 +2309,7 @@
|
|||||||
catch (err) {
|
catch (err) {
|
||||||
Util.error('Unable to get data URL. ' +
|
Util.error('Unable to get data URL. ' +
|
||||||
err.message +
|
err.message +
|
||||||
'. For more info read https://konvajs.org/docs/posts/Tainted_Canvas.html.');
|
' For more info read https://konvajs.org/docs/posts/Tainted_Canvas.html.');
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2893,7 +2893,7 @@
|
|||||||
catch (e) {
|
catch (e) {
|
||||||
Util.error('Unable to apply filter. ' +
|
Util.error('Unable to apply filter. ' +
|
||||||
e.message +
|
e.message +
|
||||||
'. This post my help you https://konvajs.org/docs/posts/Tainted_Canvas.html.');
|
' This post my help you https://konvajs.org/docs/posts/Tainted_Canvas.html.');
|
||||||
}
|
}
|
||||||
this._filterUpToDate = true;
|
this._filterUpToDate = true;
|
||||||
}
|
}
|
||||||
@ -14702,6 +14702,7 @@
|
|||||||
* @param {Boolean} [config.resizeEnabled] Default is true
|
* @param {Boolean} [config.resizeEnabled] Default is true
|
||||||
* @param {Boolean} [config.rotateEnabled] Default is true
|
* @param {Boolean} [config.rotateEnabled] Default is true
|
||||||
* @param {Array} [config.rotationSnaps] Array of angles for rotation snaps. Default is []
|
* @param {Array} [config.rotationSnaps] Array of angles for rotation snaps. Default is []
|
||||||
|
* @param {Number} [config.rotationSnapTolerance] Snapping tolerance. If closer than this it will snap. Default is 5
|
||||||
* @param {Number} [config.rotateAnchorOffset] Default is 50
|
* @param {Number} [config.rotateAnchorOffset] Default is 50
|
||||||
* @param {Number} [config.padding] Default is 0
|
* @param {Number} [config.padding] Default is 0
|
||||||
* @param {Boolean} [config.borderEnabled] Should we draw border? Default is true
|
* @param {Boolean} [config.borderEnabled] Should we draw border? Default is true
|
||||||
@ -14790,6 +14791,17 @@
|
|||||||
Transformer.prototype.getNode = function () {
|
Transformer.prototype.getNode = function () {
|
||||||
return this._node;
|
return this._node;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* return the name of current active anchor
|
||||||
|
* @method
|
||||||
|
* @name Konva.Transformer#detach
|
||||||
|
* @returns {String | Null}
|
||||||
|
* @example
|
||||||
|
* transformer.detach();
|
||||||
|
*/
|
||||||
|
Transformer.prototype.getActiveAnchor = function () {
|
||||||
|
return this._movingAnchorName;
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* detach transformer from an attached node
|
* detach transformer from an attached node
|
||||||
* @method
|
* @method
|
||||||
@ -15048,7 +15060,7 @@
|
|||||||
var alpha = Konva.getAngle(this.getNode().rotation());
|
var alpha = Konva.getAngle(this.getNode().rotation());
|
||||||
var newAlpha = Util._degToRad(newRotation);
|
var newAlpha = Util._degToRad(newRotation);
|
||||||
var snaps = this.rotationSnaps();
|
var snaps = this.rotationSnaps();
|
||||||
var offset = 0.1;
|
var offset = Konva.getAngle(this.rotationSnapTolerance());
|
||||||
for (var i = 0; i < snaps.length; i++) {
|
for (var i = 0; i < snaps.length; i++) {
|
||||||
var angle = Konva.getAngle(snaps[i]);
|
var angle = Konva.getAngle(snaps[i]);
|
||||||
var dif = Math.abs(angle - Util._degToRad(newRotation)) % (Math.PI * 2);
|
var dif = Math.abs(angle - Util._degToRad(newRotation)) % (Math.PI * 2);
|
||||||
@ -15128,6 +15140,7 @@
|
|||||||
if (node) {
|
if (node) {
|
||||||
node.fire('transformend', { evt: e, target: node });
|
node.fire('transformend', { evt: e, target: node });
|
||||||
}
|
}
|
||||||
|
this._movingAnchorName = null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Transformer.prototype._fitNodeInto = function (newAttrs, evt) {
|
Transformer.prototype._fitNodeInto = function (newAttrs, evt) {
|
||||||
@ -15412,6 +15425,20 @@
|
|||||||
* transformer.rotateAnchorOffset(100);
|
* transformer.rotateAnchorOffset(100);
|
||||||
*/
|
*/
|
||||||
Factory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, getNumberValidator());
|
Factory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, getNumberValidator());
|
||||||
|
/**
|
||||||
|
* get/set distance for rotation tolerance
|
||||||
|
* @name Konva.Transformer#rotationSnapTolerance
|
||||||
|
* @method
|
||||||
|
* @param {Number} tolerance
|
||||||
|
* @returns {Number}
|
||||||
|
* @example
|
||||||
|
* // get
|
||||||
|
* var rotationSnapTolerance = transformer.rotationSnapTolerance();
|
||||||
|
*
|
||||||
|
* // set
|
||||||
|
* transformer.rotationSnapTolerance(100);
|
||||||
|
*/
|
||||||
|
Factory.addGetterSetter(Transformer, 'rotationSnapTolerance', 5, getNumberValidator());
|
||||||
/**
|
/**
|
||||||
* get/set visibility of border
|
* get/set visibility of border
|
||||||
* @name Konva.Transformer#borderEnabled
|
* @name Konva.Transformer#borderEnabled
|
||||||
|
4
konva.min.js
vendored
4
konva.min.js
vendored
File diff suppressed because one or more lines are too long
@ -252,6 +252,17 @@ export class Transformer extends Group {
|
|||||||
getNode() {
|
getNode() {
|
||||||
return this._node;
|
return this._node;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* return the name of current active anchor
|
||||||
|
* @method
|
||||||
|
* @name Konva.Transformer#detach
|
||||||
|
* @returns {String | Null}
|
||||||
|
* @example
|
||||||
|
* transformer.detach();
|
||||||
|
*/
|
||||||
|
getActiveAnchor() {
|
||||||
|
return this._movingAnchorName;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* detach transformer from an attached node
|
* detach transformer from an attached node
|
||||||
* @method
|
* @method
|
||||||
@ -707,6 +718,7 @@ export class Transformer extends Group {
|
|||||||
if (node) {
|
if (node) {
|
||||||
node.fire('transformend', { evt: e, target: node });
|
node.fire('transformend', { evt: e, target: node });
|
||||||
}
|
}
|
||||||
|
this._movingAnchorName = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_fitNodeInto(newAttrs, evt) {
|
_fitNodeInto(newAttrs, evt) {
|
||||||
|
@ -889,7 +889,7 @@ suite('Transformer', function() {
|
|||||||
var layer = new Konva.Layer();
|
var layer = new Konva.Layer();
|
||||||
stage.add(layer);
|
stage.add(layer);
|
||||||
|
|
||||||
const rect = new Konva.Rect({
|
var rect = new Konva.Rect({
|
||||||
x: 50,
|
x: 50,
|
||||||
y: 50,
|
y: 50,
|
||||||
width: 180,
|
width: 180,
|
||||||
@ -1524,16 +1524,19 @@ suite('Transformer', function() {
|
|||||||
rect.on('transformstart', function(e) {
|
rect.on('transformstart', function(e) {
|
||||||
callCount += 1;
|
callCount += 1;
|
||||||
assert.equal(e.target, rect);
|
assert.equal(e.target, rect);
|
||||||
|
assert.equal(tr.getActiveAnchor(), 'top-left');
|
||||||
});
|
});
|
||||||
|
|
||||||
rect.on('transform', function(e) {
|
rect.on('transform', function(e) {
|
||||||
callCount += 1;
|
callCount += 1;
|
||||||
assert.equal(e.target, rect);
|
assert.equal(e.target, rect);
|
||||||
|
assert.equal(tr.getActiveAnchor(), 'top-left');
|
||||||
});
|
});
|
||||||
|
|
||||||
rect.on('transformend', function(e) {
|
rect.on('transformend', function(e) {
|
||||||
callCount += 1;
|
callCount += 1;
|
||||||
assert.equal(e.target, rect);
|
assert.equal(e.target, rect);
|
||||||
|
assert.equal(tr.getActiveAnchor(), 'top-left');
|
||||||
});
|
});
|
||||||
|
|
||||||
tr.on('transformstart', function(e) {
|
tr.on('transformstart', function(e) {
|
||||||
@ -1572,6 +1575,7 @@ suite('Transformer', function() {
|
|||||||
y: 60
|
y: 60
|
||||||
});
|
});
|
||||||
assert.equal(callCount, 6);
|
assert.equal(callCount, 6);
|
||||||
|
assert.equal(tr.getActiveAnchor(), null);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('on force update should clear transform', function() {
|
test('on force update should clear transform', function() {
|
||||||
|
Loading…
Reference in New Issue
Block a user