UNPKG

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>

103 lines (102 loc) 3.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Global_1 = require("./Global"); var Util_1 = require("./Util"); exports.DD = { get isDragging() { var flag = false; exports.DD._dragElements.forEach(function (elem) { if (elem.isDragging) { flag = true; } }); return flag; }, justDragged: false, get node() { var node; exports.DD._dragElements.forEach(function (elem) { node = elem.node; }); return node; }, _dragElements: new Map(), _drag: function (evt) { exports.DD._dragElements.forEach(function (elem, key) { var node = elem.node; var stage = node.getStage(); stage.setPointersPositions(evt); if (elem.pointerId === undefined) { elem.pointerId = Util_1.Util._getFirstPointerId(evt); } var pos = stage._changedPointerPositions.find(function (pos) { return pos.id === elem.pointerId; }); if (!pos) { return; } if (!elem.isDragging) { var dragDistance = node.dragDistance(); var distance = Math.max(Math.abs(pos.x - elem.startPointerPos.x), Math.abs(pos.y - elem.startPointerPos.y)); if (distance < dragDistance) { return; } elem.isDragging = true; node.fire('dragstart', { type: 'dragstart', target: node, evt: evt }, true); if (!node.isDragging()) { return; } } node._setDragPosition(evt, elem); node.fire('dragmove', { type: 'dragmove', target: node, evt: evt }, true); }); }, _endDragBefore: function (evt) { exports.DD._dragElements.forEach(function (elem, key) { var node = elem.node; var stage = node.getStage(); stage.setPointersPositions(evt); var pos = stage._changedPointerPositions.find(function (pos) { return pos.id === elem.pointerId; }); if (!pos) { return; } if (elem.isDragging) { exports.DD.justDragged = true; Global_1.Konva.listenClickTap = false; } elem.dragStopped = true; elem.isDragging = false; var drawNode = elem.node.getLayer() || (elem.node instanceof Global_1.Konva['Stage'] && elem.node); if (drawNode) { drawNode.draw(); } }); }, _endDragAfter: function (evt) { exports.DD._dragElements.forEach(function (elem, key) { if (elem.dragStopped) { elem.node.fire('dragend', { type: 'dragend', target: elem.node, evt: evt }, true); exports.DD._dragElements.delete(key); } }); } }; 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); }