Source: helper/getShiftedMultiPoint.js

import { LineString, MultiPoint } from "ol/geom";

/**
 * Removes the last coordinate of a given geometry (Line or Polygon).
 * When we draw the last coordinate if tat mouse cursor.
 * @private
 * @param {ol.Geometry} geometry An openlayers geometry.
 * @returns {ol.Geometry.MultiPoint} An openlayers MultiPoint geometry.
 */
const getShiftedMultipoint = (geometry) => {
  // Include all but the last vertex to the coordinate (e.g. at mouse position)
  // to prevent snapping on mouse cursor node
  const isPolygon = geometry.getType() === "Polygon";
  const lineGeometry = isPolygon
    ? new LineString(geometry.getCoordinates()[0])
    : geometry;

  const coordinates = [];
  lineGeometry.forEachSegment((start) => {
    coordinates.push(start);
  });
  if (isPolygon) {
    coordinates.pop();
  }
  return new MultiPoint(coordinates);
};

export default getShiftedMultipoint;