| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | 
							- 'use strict';
 
- var invariant = require('@turf/invariant');
 
- var helpers = require('@turf/helpers');
 
- var nearestPointOnLine = require('@turf/nearest-point-on-line');
 
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
 
- var nearestPointOnLine__default = /*#__PURE__*/_interopDefaultLegacy(nearestPointOnLine);
 
- /**
 
-  * Takes a {@link LineString|line}, a start {@link Point}, and a stop point
 
-  * and returns a subsection of the line in-between those points.
 
-  * The start & stop points don't need to fall exactly on the line.
 
-  *
 
-  * This can be useful for extracting only the part of a route between waypoints.
 
-  *
 
-  * @name lineSlice
 
-  * @param {Coord} startPt starting point
 
-  * @param {Coord} stopPt stopping point
 
-  * @param {Feature<LineString>|LineString} line line to slice
 
-  * @returns {Feature<LineString>} sliced line
 
-  * @example
 
-  * var line = turf.lineString([
 
-  *     [-77.031669, 38.878605],
 
-  *     [-77.029609, 38.881946],
 
-  *     [-77.020339, 38.884084],
 
-  *     [-77.025661, 38.885821],
 
-  *     [-77.021884, 38.889563],
 
-  *     [-77.019824, 38.892368]
 
-  * ]);
 
-  * var start = turf.point([-77.029609, 38.881946]);
 
-  * var stop = turf.point([-77.021884, 38.889563]);
 
-  *
 
-  * var sliced = turf.lineSlice(start, stop, line);
 
-  *
 
-  * //addToMap
 
-  * var addToMap = [start, stop, line]
 
-  */
 
- function lineSlice(startPt, stopPt, line) {
 
-   // Validation
 
-   var coords = invariant.getCoords(line);
 
-   if (invariant.getType(line) !== "LineString")
 
-     throw new Error("line must be a LineString");
 
-   var startVertex = nearestPointOnLine__default['default'](line, startPt);
 
-   var stopVertex = nearestPointOnLine__default['default'](line, stopPt);
 
-   var ends;
 
-   if (startVertex.properties.index <= stopVertex.properties.index) {
 
-     ends = [startVertex, stopVertex];
 
-   } else {
 
-     ends = [stopVertex, startVertex];
 
-   }
 
-   var clipCoords = [ends[0].geometry.coordinates];
 
-   for (
 
-     var i = ends[0].properties.index + 1;
 
-     i < ends[1].properties.index + 1;
 
-     i++
 
-   ) {
 
-     clipCoords.push(coords[i]);
 
-   }
 
-   clipCoords.push(ends[1].geometry.coordinates);
 
-   return helpers.lineString(clipCoords, line.properties);
 
- }
 
- module.exports = lineSlice;
 
- module.exports.default = lineSlice;
 
 
  |