konva
Version:
<p align="center"> <img src="https://raw.githubusercontent.com/konvajs/konvajs.github.io/master/apple-touch-icon-180x180.png" alt="Konva logo" height="180" /> </p>
96 lines (95 loc) • 3.16 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var Animation_1 = require("./Animation");
var Global_1 = require("./Global");
exports.DD = {
startPointerPos: {
x: 0,
y: 0
},
anim: new Animation_1.Animation(function () {
var b = this.dirty;
this.dirty = false;
return b;
}),
isDragging: false,
justDragged: false,
offset: {
x: 0,
y: 0
},
node: null,
_drag: function (evt) {
var node = exports.DD.node;
if (node) {
if (!exports.DD.isDragging) {
var pos = node.getStage().getPointerPosition();
if (!pos) {
node.getStage().setPointersPositions(evt);
pos = node.getStage().getPointerPosition();
}
var dragDistance = node.dragDistance();
var distance = Math.max(Math.abs(pos.x - exports.DD.startPointerPos.x), Math.abs(pos.y - exports.DD.startPointerPos.y));
if (distance < dragDistance) {
return;
}
}
node.getStage().setPointersPositions(evt);
if (!exports.DD.isDragging) {
exports.DD.isDragging = true;
node.fire('dragstart', {
type: 'dragstart',
target: node,
evt: evt
}, true);
if (!node.isDragging()) {
return;
}
}
node._setDragPosition(evt);
node.fire('dragmove', {
type: 'dragmove',
target: node,
evt: evt
}, true);
}
},
_endDragBefore: function (evt) {
var node = exports.DD.node;
if (node) {
exports.DD.anim.stop();
if (exports.DD.isDragging) {
exports.DD.isDragging = false;
exports.DD.justDragged = true;
Global_1.Konva.listenClickTap = false;
if (evt) {
evt.dragEndNode = node;
}
}
exports.DD.node = null;
var drawNode = node.getLayer() || (node instanceof Global_1.Konva['Stage'] && node);
if (drawNode) {
drawNode.draw();
}
}
},
_endDragAfter: function (evt) {
evt = evt || {};
var dragEndNode = evt.dragEndNode;
if (evt && dragEndNode) {
dragEndNode.fire('dragend', {
type: 'dragend',
target: dragEndNode,
evt: evt
}, true);
}
}
};
if (Global_1.Konva.isBrowser) {
window.addEventListener('mouseup', exports.DD._endDragBefore, true);
window.addEventListener('touchend', exports.DD._endDragBefore, true);
window.addEventListener('mousemove', exports.DD._drag);
window.addEventListener('touchmove', exports.DD._drag);
window.addEventListener('mouseup', exports.DD._endDragAfter, false);
window.addEventListener('touchend', exports.DD._endDragAfter, false);
}
;