in modules/react-map-gl-draw/src/edit-modes/utils.ts [10:56]
export function parseEventElement(evt: MjolnirEvent, features: Feature[], guides: Feature[]) {
const elem = evt.target;
if (!elem || !elem.dataset || !elem.dataset.type) {
return null;
}
let featureIndex = elem.dataset.featureIndex;
// @ts-expect-error
featureIndex = isNumeric(featureIndex) ? Number(featureIndex) : -1;
let index = elem.dataset.index;
// @ts-expect-error
index = isNumeric(index) ? Number(index) : undefined;
const type = elem.dataset.type;
const tentativeFeature =
guides && guides.find((g) => g.properties.guideType === GUIDE_TYPE.TENTATIVE);
let object = null;
let isGuide = false;
switch (type) {
case ELEMENT_TYPE.EDIT_HANDLE:
object = guides.find((g) => {
const indexes = g.properties.positionIndexes;
if (indexes) {
return indexes[indexes.length - 1] === index;
}
return false;
});
isGuide = true;
break;
case ELEMENT_TYPE.SEGMENT:
case ELEMENT_TYPE.FEATURE:
case ELEMENT_TYPE.FILL:
object = features[featureIndex] || tentativeFeature;
break;
default:
}
return {
object,
isGuide,
type,
index,
featureIndex,
};
}