in modules/edit-modes/src/lib/extrude-mode.ts [59:103]
handleStartDragging(event: StartDraggingEvent, props: ModeProps<FeatureCollection>) {
const selectedFeatureIndexes = props.selectedIndexes;
const editHandle = getPickedIntermediateEditHandle(event.picks);
if (selectedFeatureIndexes.length && editHandle) {
const { positionIndexes, featureIndex } = editHandle.properties;
const size = this.coordinatesSize(positionIndexes, featureIndex, props.data);
// p1 and p1 are end points for edge
const p1 = this.getPointForPositionIndexes(
this.prevPositionIndexes(positionIndexes, size),
featureIndex,
props.data
);
const p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data);
if (p1 && p2) {
let updatedData = new ImmutableFeatureCollection(props.data);
if (!this.isOrthogonal(positionIndexes, featureIndex, size, props.data)) {
updatedData = updatedData.addPosition(featureIndex, positionIndexes, p2);
}
if (
!this.isOrthogonal(
this.prevPositionIndexes(positionIndexes, size),
featureIndex,
size,
props.data
)
) {
updatedData = updatedData.addPosition(featureIndex, positionIndexes, p1);
this.isPointAdded = true;
}
props.onEdit({
updatedData: updatedData.getObject(),
editType: 'startExtruding',
editContext: {
featureIndexes: [featureIndex],
positionIndexes,
position: p1,
},
});
}
}
}