all files / mapbox-gl-draw/src/lib/ move_feature.js

100% Statements 21/21
91.67% Branches 11/12
100% Functions 6/6
100% Lines 14/14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26   41×   149× 92× 41×   41×     36× 18×     18× 16×          
const Constants = require('../constants');
 
module.exports = function(feature, lngDelta, latDelta) {
  const featureCoordinates = feature.getCoordinates();
 
  const moveCoordinate = (coord) => [coord[0] + lngDelta, coord[1] + latDelta];
  const moveRing = (ring) => ring.map(coord => moveCoordinate(coord));
  const moveMultiPolygon = (multi) => multi.map(ring => moveRing(ring));
 
  if (feature.type === Constants.geojsonTypes.POINT) {
    return feature.incomingCoords(moveCoordinate(featureCoordinates));
  }
 
  if (feature.type === Constants.geojsonTypes.LINE_STRING || feature.type === Constants.geojsonTypes.MULTI_POINT) {
    return feature.incomingCoords(featureCoordinates.map(moveCoordinate));
  }
 
  if (feature.type === Constants.geojsonTypes.POLYGON || feature.type === Constants.geojsonTypes.MULTI_LINE_STRING) {
    return feature.incomingCoords(featureCoordinates.map(moveRing));
  }
 
  if (feature.type === Constants.geojsonTypes.MULTI_POLYGON) E{
    return feature.incomingCoords(featureCoordinates.map(moveMultiPolygon));
  }
};