45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
![]() |
let toolData = {
|
||
|
doubleClickInner: (event) => {
|
||
|
var nearestPoint = event.target.getNearestPoint(event.point);
|
||
|
|
||
|
if (nearestPoint.getDistance(event.point) > event.nodeDist) return;
|
||
|
|
||
|
event.target.segments.forEach(segment => {
|
||
|
segment.selected = false;
|
||
|
});
|
||
|
|
||
|
let closestPoint = event.target.segments[0];
|
||
|
let closestDist = 10000;
|
||
|
|
||
|
event.target.segments.forEach(segment => {
|
||
|
let dist = segment.point.getDistance(nearestPoint);
|
||
|
if (dist < closestDist) {
|
||
|
closestDist = dist;
|
||
|
closestPoint = segment.point;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
let newPoint;
|
||
|
|
||
|
if (nearestPoint.getDistance(closestPoint) > event.grabDist) {
|
||
|
newPoint = event.target.divideAt(event.target.getLocationOf(nearestPoint));
|
||
|
} else {
|
||
|
newPoint = closestPoint;
|
||
|
}
|
||
|
|
||
|
newPoint.selected = true;
|
||
|
},
|
||
|
|
||
|
mouseDrag : ( {selectedItems, delta} ) => {
|
||
|
selectedItems.forEach(item => {
|
||
|
if (item.className == 'Path') {
|
||
|
item.segments.forEach(segment => {
|
||
|
if (segment.selected)
|
||
|
segment.point = segment.point.add(delta)
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export { toolData };
|