in modules/edit-modes/src/lib/modify-mode.ts [135:188]
handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {
const pickedExistingHandle = getPickedExistingEditHandle(event.picks);
const pickedIntermediateHandle = getPickedIntermediateEditHandle(event.picks);
if (pickedExistingHandle) {
const { featureIndex, positionIndexes } = pickedExistingHandle.properties;
let updatedData;
try {
updatedData = new ImmutableFeatureCollection(props.data)
.removePosition(featureIndex, positionIndexes)
.getObject();
} catch (ignored) {
// This happens if user attempts to remove the last point
}
if (updatedData) {
props.onEdit({
updatedData,
editType: 'removePosition',
editContext: {
featureIndexes: [featureIndex],
positionIndexes,
position: pickedExistingHandle.geometry.coordinates,
},
});
}
} else if (pickedIntermediateHandle) {
const { featureIndex, positionIndexes } = pickedIntermediateHandle.properties;
const feature = props.data.features[featureIndex];
const canAddPosition = !(
props.modeConfig?.lockRectangles && feature?.properties.shape === 'Rectangle'
);
if (canAddPosition) {
const updatedData = new ImmutableFeatureCollection(props.data)
.addPosition(featureIndex, positionIndexes, pickedIntermediateHandle.geometry.coordinates)
.getObject();
if (updatedData) {
props.onEdit({
updatedData,
editType: 'addPosition',
editContext: {
featureIndexes: [featureIndex],
positionIndexes,
position: pickedIntermediateHandle.geometry.coordinates,
},
});
}
}
}
}