@turf/line-slice-along 7.3.1 → 7.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,29 +1,29 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});// index.js
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// index.ts
2
2
  var _bearing = require('@turf/bearing');
3
3
  var _distance = require('@turf/distance');
4
4
  var _destination = require('@turf/destination');
5
5
  var _helpers = require('@turf/helpers');
6
- function lineSliceAlong(line, startDist, stopDist, options) {
7
- options = options || {};
6
+ function lineSliceAlong(line, startDist, stopDist, options = {}) {
8
7
  if (!_helpers.isObject.call(void 0, options)) throw new Error("options is invalid");
8
+ const { units = "kilometers" } = options;
9
9
  var coords;
10
10
  var slice = [];
11
11
  if (line.type === "Feature") coords = line.geometry.coordinates;
12
12
  else if (line.type === "LineString") coords = line.coordinates;
13
13
  else throw new Error("input must be a LineString Feature or Geometry");
14
- var origCoordsLength = coords.length;
15
- var travelled = 0;
16
- var overshot, direction, interpolated;
17
- for (var i = 0; i < coords.length; i++) {
14
+ const origCoordsLength = coords.length;
15
+ let travelled = 0;
16
+ let overshot, direction, interpolated;
17
+ for (let i = 0; i < coords.length; i++) {
18
18
  if (startDist >= travelled && i === coords.length - 1) break;
19
19
  else if (travelled > startDist && slice.length === 0) {
20
- overshot = startDist - travelled;
21
- if (!overshot) {
20
+ let overshot2 = startDist - travelled;
21
+ if (!overshot2) {
22
22
  slice.push(coords[i]);
23
23
  return _helpers.lineString.call(void 0, slice);
24
24
  }
25
25
  direction = _bearing.bearing.call(void 0, coords[i], coords[i - 1]) - 180;
26
- interpolated = _destination.destination.call(void 0, coords[i], overshot, direction, options);
26
+ interpolated = _destination.destination.call(void 0, coords[i], overshot2, direction, { units });
27
27
  slice.push(interpolated.geometry.coordinates);
28
28
  }
29
29
  if (travelled >= stopDist) {
@@ -33,7 +33,7 @@ function lineSliceAlong(line, startDist, stopDist, options) {
33
33
  return _helpers.lineString.call(void 0, slice);
34
34
  }
35
35
  direction = _bearing.bearing.call(void 0, coords[i], coords[i - 1]) - 180;
36
- interpolated = _destination.destination.call(void 0, coords[i], overshot, direction, options);
36
+ interpolated = _destination.destination.call(void 0, coords[i], overshot, direction, { units });
37
37
  slice.push(interpolated.geometry.coordinates);
38
38
  return _helpers.lineString.call(void 0, slice);
39
39
  }
@@ -43,7 +43,7 @@ function lineSliceAlong(line, startDist, stopDist, options) {
43
43
  if (i === coords.length - 1) {
44
44
  return _helpers.lineString.call(void 0, slice);
45
45
  }
46
- travelled += _distance.distance.call(void 0, coords[i], coords[i + 1], options);
46
+ travelled += _distance.distance.call(void 0, coords[i], coords[i + 1], { units });
47
47
  }
48
48
  if (travelled < startDist && coords.length === origCoordsLength)
49
49
  throw new Error("Start position is beyond line");
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-line-slice-along/dist/cjs/index.cjs","../../index.js"],"names":[],"mappings":"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","file":"/home/runner/work/turf/turf/packages/turf-line-slice-along/dist/cjs/index.cjs","sourcesContent":[null,"import { bearing } from \"@turf/bearing\";\nimport { distance } from \"@turf/distance\";\nimport { destination } from \"@turf/destination\";\nimport { lineString, isObject } from \"@turf/helpers\";\n\n/**\n * Takes a {@link LineString|line}, a specified distance along the line to a start {@link Point},\n * and a specified distance along the line to a stop point\n * and returns a subsection of the line in-between those points.\n *\n * This can be useful for extracting only the part of a route between two distances.\n *\n * @function\n * @param {Feature<LineString>|LineString} line input line\n * @param {number} startDist distance along the line to starting point\n * @param {number} stopDist distance along the line to ending point\n * @param {Object} [options={}] Optional parameters\n * @param {Units} [options.units='kilometers'] Supports all valid Turf {@link https://turfjs.org/docs/api/types/Units Units}\n * @returns {Feature<LineString>} sliced line\n * @example\n * var line = turf.lineString([[7, 45], [9, 45], [14, 40], [14, 41]]);\n * var start = 12.5;\n * var stop = 25;\n * var sliced = turf.lineSliceAlong(line, start, stop, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [line, start, stop, sliced]\n */\nfunction lineSliceAlong(line, startDist, stopDist, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n\n var coords;\n var slice = [];\n\n // Validation\n if (line.type === \"Feature\") coords = line.geometry.coordinates;\n else if (line.type === \"LineString\") coords = line.coordinates;\n else throw new Error(\"input must be a LineString Feature or Geometry\");\n var origCoordsLength = coords.length;\n var travelled = 0;\n var overshot, direction, interpolated;\n for (var i = 0; i < coords.length; i++) {\n if (startDist >= travelled && i === coords.length - 1) break;\n else if (travelled > startDist && slice.length === 0) {\n overshot = startDist - travelled;\n if (!overshot) {\n slice.push(coords[i]);\n return lineString(slice);\n }\n direction = bearing(coords[i], coords[i - 1]) - 180;\n interpolated = destination(coords[i], overshot, direction, options);\n slice.push(interpolated.geometry.coordinates);\n }\n\n if (travelled >= stopDist) {\n overshot = stopDist - travelled;\n if (!overshot) {\n slice.push(coords[i]);\n return lineString(slice);\n }\n direction = bearing(coords[i], coords[i - 1]) - 180;\n interpolated = destination(coords[i], overshot, direction, options);\n slice.push(interpolated.geometry.coordinates);\n return lineString(slice);\n }\n\n if (travelled >= startDist) {\n slice.push(coords[i]);\n }\n\n if (i === coords.length - 1) {\n return lineString(slice);\n }\n\n travelled += distance(coords[i], coords[i + 1], options);\n }\n\n if (travelled < startDist && coords.length === origCoordsLength)\n throw new Error(\"Start position is beyond line\");\n\n var last = coords[coords.length - 1];\n return lineString([last, last]);\n}\n\nexport { lineSliceAlong };\nexport default lineSliceAlong;\n"]}
1
+ {"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-line-slice-along/dist/cjs/index.cjs","../../index.ts"],"names":["overshot"],"mappings":"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","file":"/home/runner/work/turf/turf/packages/turf-line-slice-along/dist/cjs/index.cjs","sourcesContent":[null,"import { bearing } from \"@turf/bearing\";\nimport { distance } from \"@turf/distance\";\nimport { destination } from \"@turf/destination\";\nimport { lineString, isObject, Units } from \"@turf/helpers\";\nimport { Feature, LineString, Point, Position } from \"geojson\";\n\n/**\n * Takes a {@link LineString|line}, a specified distance along the line to a start {@link Point},\n * and a specified distance along the line to a stop point\n * and returns a subsection of the line in-between those points.\n *\n * This can be useful for extracting only the part of a route between two distances.\n *\n * @function\n * @param {Feature<LineString>|LineString} line input line\n * @param {number} startDist distance along the line to starting point\n * @param {number} stopDist distance along the line to ending point\n * @param {Object} [options={}] Optional parameters\n * @param {Units} [options.units='kilometers'] Supports all valid Turf {@link https://turfjs.org/docs/api/types/Units Units}\n * @returns {Feature<LineString>} sliced line\n * @example\n * var line = turf.lineString([[7, 45], [9, 45], [14, 40], [14, 41]]);\n * var start = 12.5;\n * var stop = 25;\n * var sliced = turf.lineSliceAlong(line, start, stop, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [line, start, stop, sliced]\n */\nfunction lineSliceAlong(\n line: Feature<LineString> | LineString,\n startDist: number,\n stopDist: number,\n options: { units?: Units } = {}\n): Feature<LineString> {\n // Optional parameters\n if (!isObject(options)) throw new Error(\"options is invalid\");\n const { units = \"kilometers\" } = options;\n\n var coords: Position[];\n var slice: Position[] = [];\n\n // Validation\n if (line.type === \"Feature\") coords = line.geometry.coordinates;\n else if (line.type === \"LineString\") coords = line.coordinates;\n else throw new Error(\"input must be a LineString Feature or Geometry\");\n const origCoordsLength = coords.length;\n let travelled = 0;\n let overshot: number, direction: number, interpolated: Feature<Point>;\n for (let i = 0; i < coords.length; i++) {\n if (startDist >= travelled && i === coords.length - 1) break;\n else if (travelled > startDist && slice.length === 0) {\n let overshot = startDist - travelled;\n if (!overshot) {\n slice.push(coords[i]);\n return lineString(slice);\n }\n direction = bearing(coords[i], coords[i - 1]) - 180;\n interpolated = destination(coords[i], overshot, direction, { units });\n slice.push(interpolated.geometry.coordinates);\n }\n\n if (travelled >= stopDist) {\n overshot = stopDist - travelled;\n if (!overshot) {\n slice.push(coords[i]);\n return lineString(slice);\n }\n direction = bearing(coords[i], coords[i - 1]) - 180;\n interpolated = destination(coords[i], overshot, direction, { units });\n slice.push(interpolated.geometry.coordinates);\n return lineString(slice);\n }\n\n if (travelled >= startDist) {\n slice.push(coords[i]);\n }\n\n if (i === coords.length - 1) {\n return lineString(slice);\n }\n\n travelled += distance(coords[i], coords[i + 1], { units });\n }\n\n if (travelled < startDist && coords.length === origCoordsLength)\n throw new Error(\"Start position is beyond line\");\n\n var last = coords[coords.length - 1];\n return lineString([last, last]);\n}\n\nexport { lineSliceAlong };\nexport default lineSliceAlong;\n"]}
@@ -1,16 +1,31 @@
1
- import { Feature, LineString } from 'geojson';
2
1
  import { Units } from '@turf/helpers';
2
+ import { Feature, LineString } from 'geojson';
3
3
 
4
4
  /**
5
- * http://turfjs.org/docs/
5
+ * Takes a {@link LineString|line}, a specified distance along the line to a start {@link Point},
6
+ * and a specified distance along the line to a stop point
7
+ * and returns a subsection of the line in-between those points.
8
+ *
9
+ * This can be useful for extracting only the part of a route between two distances.
10
+ *
11
+ * @function
12
+ * @param {Feature<LineString>|LineString} line input line
13
+ * @param {number} startDist distance along the line to starting point
14
+ * @param {number} stopDist distance along the line to ending point
15
+ * @param {Object} [options={}] Optional parameters
16
+ * @param {Units} [options.units='kilometers'] Supports all valid Turf {@link https://turfjs.org/docs/api/types/Units Units}
17
+ * @returns {Feature<LineString>} sliced line
18
+ * @example
19
+ * var line = turf.lineString([[7, 45], [9, 45], [14, 40], [14, 41]]);
20
+ * var start = 12.5;
21
+ * var stop = 25;
22
+ * var sliced = turf.lineSliceAlong(line, start, stop, {units: 'miles'});
23
+ *
24
+ * //addToMap
25
+ * var addToMap = [line, start, stop, sliced]
6
26
  */
7
- declare function lineSliceAlong(
8
- line: Feature<LineString> | LineString,
9
- startDist: number,
10
- stopDist: number,
11
- options?: {
27
+ declare function lineSliceAlong(line: Feature<LineString> | LineString, startDist: number, stopDist: number, options?: {
12
28
  units?: Units;
13
- }
14
- ): Feature<LineString>;
29
+ }): Feature<LineString>;
15
30
 
16
31
  export { lineSliceAlong as default, lineSliceAlong };
@@ -1,16 +1,31 @@
1
- import { Feature, LineString } from 'geojson';
2
1
  import { Units } from '@turf/helpers';
2
+ import { Feature, LineString } from 'geojson';
3
3
 
4
4
  /**
5
- * http://turfjs.org/docs/
5
+ * Takes a {@link LineString|line}, a specified distance along the line to a start {@link Point},
6
+ * and a specified distance along the line to a stop point
7
+ * and returns a subsection of the line in-between those points.
8
+ *
9
+ * This can be useful for extracting only the part of a route between two distances.
10
+ *
11
+ * @function
12
+ * @param {Feature<LineString>|LineString} line input line
13
+ * @param {number} startDist distance along the line to starting point
14
+ * @param {number} stopDist distance along the line to ending point
15
+ * @param {Object} [options={}] Optional parameters
16
+ * @param {Units} [options.units='kilometers'] Supports all valid Turf {@link https://turfjs.org/docs/api/types/Units Units}
17
+ * @returns {Feature<LineString>} sliced line
18
+ * @example
19
+ * var line = turf.lineString([[7, 45], [9, 45], [14, 40], [14, 41]]);
20
+ * var start = 12.5;
21
+ * var stop = 25;
22
+ * var sliced = turf.lineSliceAlong(line, start, stop, {units: 'miles'});
23
+ *
24
+ * //addToMap
25
+ * var addToMap = [line, start, stop, sliced]
6
26
  */
7
- declare function lineSliceAlong(
8
- line: Feature<LineString> | LineString,
9
- startDist: number,
10
- stopDist: number,
11
- options?: {
27
+ declare function lineSliceAlong(line: Feature<LineString> | LineString, startDist: number, stopDist: number, options?: {
12
28
  units?: Units;
13
- }
14
- ): Feature<LineString>;
29
+ }): Feature<LineString>;
15
30
 
16
31
  export { lineSliceAlong as default, lineSliceAlong };
package/dist/esm/index.js CHANGED
@@ -1,29 +1,29 @@
1
- // index.js
1
+ // index.ts
2
2
  import { bearing } from "@turf/bearing";
3
3
  import { distance } from "@turf/distance";
4
4
  import { destination } from "@turf/destination";
5
5
  import { lineString, isObject } from "@turf/helpers";
6
- function lineSliceAlong(line, startDist, stopDist, options) {
7
- options = options || {};
6
+ function lineSliceAlong(line, startDist, stopDist, options = {}) {
8
7
  if (!isObject(options)) throw new Error("options is invalid");
8
+ const { units = "kilometers" } = options;
9
9
  var coords;
10
10
  var slice = [];
11
11
  if (line.type === "Feature") coords = line.geometry.coordinates;
12
12
  else if (line.type === "LineString") coords = line.coordinates;
13
13
  else throw new Error("input must be a LineString Feature or Geometry");
14
- var origCoordsLength = coords.length;
15
- var travelled = 0;
16
- var overshot, direction, interpolated;
17
- for (var i = 0; i < coords.length; i++) {
14
+ const origCoordsLength = coords.length;
15
+ let travelled = 0;
16
+ let overshot, direction, interpolated;
17
+ for (let i = 0; i < coords.length; i++) {
18
18
  if (startDist >= travelled && i === coords.length - 1) break;
19
19
  else if (travelled > startDist && slice.length === 0) {
20
- overshot = startDist - travelled;
21
- if (!overshot) {
20
+ let overshot2 = startDist - travelled;
21
+ if (!overshot2) {
22
22
  slice.push(coords[i]);
23
23
  return lineString(slice);
24
24
  }
25
25
  direction = bearing(coords[i], coords[i - 1]) - 180;
26
- interpolated = destination(coords[i], overshot, direction, options);
26
+ interpolated = destination(coords[i], overshot2, direction, { units });
27
27
  slice.push(interpolated.geometry.coordinates);
28
28
  }
29
29
  if (travelled >= stopDist) {
@@ -33,7 +33,7 @@ function lineSliceAlong(line, startDist, stopDist, options) {
33
33
  return lineString(slice);
34
34
  }
35
35
  direction = bearing(coords[i], coords[i - 1]) - 180;
36
- interpolated = destination(coords[i], overshot, direction, options);
36
+ interpolated = destination(coords[i], overshot, direction, { units });
37
37
  slice.push(interpolated.geometry.coordinates);
38
38
  return lineString(slice);
39
39
  }
@@ -43,7 +43,7 @@ function lineSliceAlong(line, startDist, stopDist, options) {
43
43
  if (i === coords.length - 1) {
44
44
  return lineString(slice);
45
45
  }
46
- travelled += distance(coords[i], coords[i + 1], options);
46
+ travelled += distance(coords[i], coords[i + 1], { units });
47
47
  }
48
48
  if (travelled < startDist && coords.length === origCoordsLength)
49
49
  throw new Error("Start position is beyond line");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../index.js"],"sourcesContent":["import { bearing } from \"@turf/bearing\";\nimport { distance } from \"@turf/distance\";\nimport { destination } from \"@turf/destination\";\nimport { lineString, isObject } from \"@turf/helpers\";\n\n/**\n * Takes a {@link LineString|line}, a specified distance along the line to a start {@link Point},\n * and a specified distance along the line to a stop point\n * and returns a subsection of the line in-between those points.\n *\n * This can be useful for extracting only the part of a route between two distances.\n *\n * @function\n * @param {Feature<LineString>|LineString} line input line\n * @param {number} startDist distance along the line to starting point\n * @param {number} stopDist distance along the line to ending point\n * @param {Object} [options={}] Optional parameters\n * @param {Units} [options.units='kilometers'] Supports all valid Turf {@link https://turfjs.org/docs/api/types/Units Units}\n * @returns {Feature<LineString>} sliced line\n * @example\n * var line = turf.lineString([[7, 45], [9, 45], [14, 40], [14, 41]]);\n * var start = 12.5;\n * var stop = 25;\n * var sliced = turf.lineSliceAlong(line, start, stop, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [line, start, stop, sliced]\n */\nfunction lineSliceAlong(line, startDist, stopDist, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n\n var coords;\n var slice = [];\n\n // Validation\n if (line.type === \"Feature\") coords = line.geometry.coordinates;\n else if (line.type === \"LineString\") coords = line.coordinates;\n else throw new Error(\"input must be a LineString Feature or Geometry\");\n var origCoordsLength = coords.length;\n var travelled = 0;\n var overshot, direction, interpolated;\n for (var i = 0; i < coords.length; i++) {\n if (startDist >= travelled && i === coords.length - 1) break;\n else if (travelled > startDist && slice.length === 0) {\n overshot = startDist - travelled;\n if (!overshot) {\n slice.push(coords[i]);\n return lineString(slice);\n }\n direction = bearing(coords[i], coords[i - 1]) - 180;\n interpolated = destination(coords[i], overshot, direction, options);\n slice.push(interpolated.geometry.coordinates);\n }\n\n if (travelled >= stopDist) {\n overshot = stopDist - travelled;\n if (!overshot) {\n slice.push(coords[i]);\n return lineString(slice);\n }\n direction = bearing(coords[i], coords[i - 1]) - 180;\n interpolated = destination(coords[i], overshot, direction, options);\n slice.push(interpolated.geometry.coordinates);\n return lineString(slice);\n }\n\n if (travelled >= startDist) {\n slice.push(coords[i]);\n }\n\n if (i === coords.length - 1) {\n return lineString(slice);\n }\n\n travelled += distance(coords[i], coords[i + 1], options);\n }\n\n if (travelled < startDist && coords.length === origCoordsLength)\n throw new Error(\"Start position is beyond line\");\n\n var last = coords[coords.length - 1];\n return lineString([last, last]);\n}\n\nexport { lineSliceAlong };\nexport default lineSliceAlong;\n"],"mappings":";AAAA,SAAS,eAAe;AACxB,SAAS,gBAAgB;AACzB,SAAS,mBAAmB;AAC5B,SAAS,YAAY,gBAAgB;AAyBrC,SAAS,eAAe,MAAM,WAAW,UAAU,SAAS;AAE1D,YAAU,WAAW,CAAC;AACtB,MAAI,CAAC,SAAS,OAAO,EAAG,OAAM,IAAI,MAAM,oBAAoB;AAE5D,MAAI;AACJ,MAAI,QAAQ,CAAC;AAGb,MAAI,KAAK,SAAS,UAAW,UAAS,KAAK,SAAS;AAAA,WAC3C,KAAK,SAAS,aAAc,UAAS,KAAK;AAAA,MAC9C,OAAM,IAAI,MAAM,gDAAgD;AACrE,MAAI,mBAAmB,OAAO;AAC9B,MAAI,YAAY;AAChB,MAAI,UAAU,WAAW;AACzB,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,QAAI,aAAa,aAAa,MAAM,OAAO,SAAS,EAAG;AAAA,aAC9C,YAAY,aAAa,MAAM,WAAW,GAAG;AACpD,iBAAW,YAAY;AACvB,UAAI,CAAC,UAAU;AACb,cAAM,KAAK,OAAO,CAAC,CAAC;AACpB,eAAO,WAAW,KAAK;AAAA,MACzB;AACA,kBAAY,QAAQ,OAAO,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI;AAChD,qBAAe,YAAY,OAAO,CAAC,GAAG,UAAU,WAAW,OAAO;AAClE,YAAM,KAAK,aAAa,SAAS,WAAW;AAAA,IAC9C;AAEA,QAAI,aAAa,UAAU;AACzB,iBAAW,WAAW;AACtB,UAAI,CAAC,UAAU;AACb,cAAM,KAAK,OAAO,CAAC,CAAC;AACpB,eAAO,WAAW,KAAK;AAAA,MACzB;AACA,kBAAY,QAAQ,OAAO,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI;AAChD,qBAAe,YAAY,OAAO,CAAC,GAAG,UAAU,WAAW,OAAO;AAClE,YAAM,KAAK,aAAa,SAAS,WAAW;AAC5C,aAAO,WAAW,KAAK;AAAA,IACzB;AAEA,QAAI,aAAa,WAAW;AAC1B,YAAM,KAAK,OAAO,CAAC,CAAC;AAAA,IACtB;AAEA,QAAI,MAAM,OAAO,SAAS,GAAG;AAC3B,aAAO,WAAW,KAAK;AAAA,IACzB;AAEA,iBAAa,SAAS,OAAO,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,OAAO;AAAA,EACzD;AAEA,MAAI,YAAY,aAAa,OAAO,WAAW;AAC7C,UAAM,IAAI,MAAM,+BAA+B;AAEjD,MAAI,OAAO,OAAO,OAAO,SAAS,CAAC;AACnC,SAAO,WAAW,CAAC,MAAM,IAAI,CAAC;AAChC;AAGA,IAAO,gBAAQ;","names":[]}
1
+ {"version":3,"sources":["../../index.ts"],"sourcesContent":["import { bearing } from \"@turf/bearing\";\nimport { distance } from \"@turf/distance\";\nimport { destination } from \"@turf/destination\";\nimport { lineString, isObject, Units } from \"@turf/helpers\";\nimport { Feature, LineString, Point, Position } from \"geojson\";\n\n/**\n * Takes a {@link LineString|line}, a specified distance along the line to a start {@link Point},\n * and a specified distance along the line to a stop point\n * and returns a subsection of the line in-between those points.\n *\n * This can be useful for extracting only the part of a route between two distances.\n *\n * @function\n * @param {Feature<LineString>|LineString} line input line\n * @param {number} startDist distance along the line to starting point\n * @param {number} stopDist distance along the line to ending point\n * @param {Object} [options={}] Optional parameters\n * @param {Units} [options.units='kilometers'] Supports all valid Turf {@link https://turfjs.org/docs/api/types/Units Units}\n * @returns {Feature<LineString>} sliced line\n * @example\n * var line = turf.lineString([[7, 45], [9, 45], [14, 40], [14, 41]]);\n * var start = 12.5;\n * var stop = 25;\n * var sliced = turf.lineSliceAlong(line, start, stop, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [line, start, stop, sliced]\n */\nfunction lineSliceAlong(\n line: Feature<LineString> | LineString,\n startDist: number,\n stopDist: number,\n options: { units?: Units } = {}\n): Feature<LineString> {\n // Optional parameters\n if (!isObject(options)) throw new Error(\"options is invalid\");\n const { units = \"kilometers\" } = options;\n\n var coords: Position[];\n var slice: Position[] = [];\n\n // Validation\n if (line.type === \"Feature\") coords = line.geometry.coordinates;\n else if (line.type === \"LineString\") coords = line.coordinates;\n else throw new Error(\"input must be a LineString Feature or Geometry\");\n const origCoordsLength = coords.length;\n let travelled = 0;\n let overshot: number, direction: number, interpolated: Feature<Point>;\n for (let i = 0; i < coords.length; i++) {\n if (startDist >= travelled && i === coords.length - 1) break;\n else if (travelled > startDist && slice.length === 0) {\n let overshot = startDist - travelled;\n if (!overshot) {\n slice.push(coords[i]);\n return lineString(slice);\n }\n direction = bearing(coords[i], coords[i - 1]) - 180;\n interpolated = destination(coords[i], overshot, direction, { units });\n slice.push(interpolated.geometry.coordinates);\n }\n\n if (travelled >= stopDist) {\n overshot = stopDist - travelled;\n if (!overshot) {\n slice.push(coords[i]);\n return lineString(slice);\n }\n direction = bearing(coords[i], coords[i - 1]) - 180;\n interpolated = destination(coords[i], overshot, direction, { units });\n slice.push(interpolated.geometry.coordinates);\n return lineString(slice);\n }\n\n if (travelled >= startDist) {\n slice.push(coords[i]);\n }\n\n if (i === coords.length - 1) {\n return lineString(slice);\n }\n\n travelled += distance(coords[i], coords[i + 1], { units });\n }\n\n if (travelled < startDist && coords.length === origCoordsLength)\n throw new Error(\"Start position is beyond line\");\n\n var last = coords[coords.length - 1];\n return lineString([last, last]);\n}\n\nexport { lineSliceAlong };\nexport default lineSliceAlong;\n"],"mappings":";AAAA,SAAS,eAAe;AACxB,SAAS,gBAAgB;AACzB,SAAS,mBAAmB;AAC5B,SAAS,YAAY,gBAAuB;AA0B5C,SAAS,eACP,MACA,WACA,UACA,UAA6B,CAAC,GACT;AAErB,MAAI,CAAC,SAAS,OAAO,EAAG,OAAM,IAAI,MAAM,oBAAoB;AAC5D,QAAM,EAAE,QAAQ,aAAa,IAAI;AAEjC,MAAI;AACJ,MAAI,QAAoB,CAAC;AAGzB,MAAI,KAAK,SAAS,UAAW,UAAS,KAAK,SAAS;AAAA,WAC3C,KAAK,SAAS,aAAc,UAAS,KAAK;AAAA,MAC9C,OAAM,IAAI,MAAM,gDAAgD;AACrE,QAAM,mBAAmB,OAAO;AAChC,MAAI,YAAY;AAChB,MAAI,UAAkB,WAAmB;AACzC,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,QAAI,aAAa,aAAa,MAAM,OAAO,SAAS,EAAG;AAAA,aAC9C,YAAY,aAAa,MAAM,WAAW,GAAG;AACpD,UAAIA,YAAW,YAAY;AAC3B,UAAI,CAACA,WAAU;AACb,cAAM,KAAK,OAAO,CAAC,CAAC;AACpB,eAAO,WAAW,KAAK;AAAA,MACzB;AACA,kBAAY,QAAQ,OAAO,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI;AAChD,qBAAe,YAAY,OAAO,CAAC,GAAGA,WAAU,WAAW,EAAE,MAAM,CAAC;AACpE,YAAM,KAAK,aAAa,SAAS,WAAW;AAAA,IAC9C;AAEA,QAAI,aAAa,UAAU;AACzB,iBAAW,WAAW;AACtB,UAAI,CAAC,UAAU;AACb,cAAM,KAAK,OAAO,CAAC,CAAC;AACpB,eAAO,WAAW,KAAK;AAAA,MACzB;AACA,kBAAY,QAAQ,OAAO,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI;AAChD,qBAAe,YAAY,OAAO,CAAC,GAAG,UAAU,WAAW,EAAE,MAAM,CAAC;AACpE,YAAM,KAAK,aAAa,SAAS,WAAW;AAC5C,aAAO,WAAW,KAAK;AAAA,IACzB;AAEA,QAAI,aAAa,WAAW;AAC1B,YAAM,KAAK,OAAO,CAAC,CAAC;AAAA,IACtB;AAEA,QAAI,MAAM,OAAO,SAAS,GAAG;AAC3B,aAAO,WAAW,KAAK;AAAA,IACzB;AAEA,iBAAa,SAAS,OAAO,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;AAAA,EAC3D;AAEA,MAAI,YAAY,aAAa,OAAO,WAAW;AAC7C,UAAM,IAAI,MAAM,+BAA+B;AAEjD,MAAI,OAAO,OAAO,OAAO,SAAS,CAAC;AACnC,SAAO,WAAW,CAAC,MAAM,IAAI,CAAC;AAChC;AAGA,IAAO,gBAAQ;","names":["overshot"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@turf/line-slice-along",
3
- "version": "7.3.1",
3
+ "version": "7.3.2",
4
4
  "description": "Useful for extracting only the part of a route between two distances.",
5
5
  "author": "Turf Authors",
6
6
  "license": "MIT",
@@ -50,22 +50,24 @@
50
50
  "test:tape": "tsx test.ts"
51
51
  },
52
52
  "devDependencies": {
53
- "@turf/along": "7.3.1",
54
- "@turf/length": "7.3.1",
53
+ "@turf/along": "7.3.2",
54
+ "@turf/length": "7.3.2",
55
55
  "@types/benchmark": "^2.1.5",
56
56
  "@types/tape": "^5.8.1",
57
57
  "benchmark": "^2.1.4",
58
58
  "load-json-file": "^7.0.1",
59
59
  "tape": "^5.9.0",
60
60
  "tsup": "^8.4.0",
61
- "tsx": "^4.19.4"
61
+ "tsx": "^4.19.4",
62
+ "typescript": "^5.8.3"
62
63
  },
63
64
  "dependencies": {
64
- "@turf/bearing": "7.3.1",
65
- "@turf/destination": "7.3.1",
66
- "@turf/distance": "7.3.1",
67
- "@turf/helpers": "7.3.1",
68
- "@types/geojson": "^7946.0.10"
65
+ "@turf/bearing": "7.3.2",
66
+ "@turf/destination": "7.3.2",
67
+ "@turf/distance": "7.3.2",
68
+ "@turf/helpers": "7.3.2",
69
+ "@types/geojson": "^7946.0.10",
70
+ "tslib": "^2.8.1"
69
71
  },
70
- "gitHead": "b7f1b4eafb760431e03955499d8eac9489438219"
72
+ "gitHead": "099d9915467bacf45d554be4533fa9998c4efc88"
71
73
  }