in modules/edit-modes/src/lib/immutable-feature-collection.ts [314:346]
function immutablyAddPosition(
coordinates: any,
positionIndexes: number[] | null | undefined,
positionToAdd: Position,
isPolygonal: boolean
): any {
if (!positionIndexes) {
return coordinates;
}
if (positionIndexes.length === 0) {
throw Error('Must specify the index of the position to remove');
}
if (positionIndexes.length === 1) {
const updated = [
...coordinates.slice(0, positionIndexes[0]),
positionToAdd,
...coordinates.slice(positionIndexes[0]),
];
return updated;
}
// recursively update inner array
return [
...coordinates.slice(0, positionIndexes[0]),
immutablyAddPosition(
coordinates[positionIndexes[0]],
positionIndexes.slice(1, positionIndexes.length),
positionToAdd,
isPolygonal
),
...coordinates.slice(positionIndexes[0] + 1),
];
}