node-red-contrib-web-worldmap 5.0.8 → 5.0.9

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.
Files changed (36) hide show
  1. package/.github/dependabot.yml +11 -0
  2. package/CHANGELOG.md +1 -0
  3. package/README.md +1 -0
  4. package/node_modules/@turf/bezier-spline/dist/cjs/index.cjs.map +1 -1
  5. package/node_modules/@turf/bezier-spline/dist/cjs/index.d.cts +1 -1
  6. package/node_modules/@turf/bezier-spline/dist/esm/index.d.ts +1 -1
  7. package/node_modules/@turf/bezier-spline/dist/esm/index.js.map +1 -1
  8. package/node_modules/@turf/bezier-spline/package.json +10 -10
  9. package/node_modules/@turf/helpers/README.md +199 -154
  10. package/node_modules/@turf/helpers/dist/cjs/index.cjs +10 -7
  11. package/node_modules/@turf/helpers/dist/cjs/index.cjs.map +1 -1
  12. package/node_modules/@turf/helpers/dist/cjs/index.d.cts +149 -110
  13. package/node_modules/@turf/helpers/dist/esm/index.d.ts +149 -110
  14. package/node_modules/@turf/helpers/dist/esm/index.js +10 -7
  15. package/node_modules/@turf/helpers/dist/esm/index.js.map +1 -1
  16. package/node_modules/@turf/helpers/package.json +8 -8
  17. package/node_modules/@turf/invariant/README.md +4 -0
  18. package/node_modules/@turf/invariant/dist/cjs/index.cjs.map +1 -1
  19. package/node_modules/@turf/invariant/dist/cjs/index.d.cts +6 -6
  20. package/node_modules/@turf/invariant/dist/esm/index.d.ts +6 -6
  21. package/node_modules/@turf/invariant/dist/esm/index.js.map +1 -1
  22. package/node_modules/@turf/invariant/package.json +9 -9
  23. package/node_modules/@types/geojson/README.md +1 -1
  24. package/node_modules/@types/geojson/index.d.ts +4 -1
  25. package/node_modules/@types/geojson/package.json +4 -3
  26. package/node_modules/express/History.md +10 -1
  27. package/node_modules/express/package.json +6 -2
  28. package/node_modules/path-to-regexp/index.js +13 -3
  29. package/node_modules/path-to-regexp/package.json +1 -1
  30. package/package.json +3 -3
  31. package/worldmap/index.html +2 -2
  32. package/worldmap/leaflet/leaflet-side-by-side.js +148 -147
  33. package/worldmap/worldmap.js +55 -50
  34. package/worldmap.js +8 -7
  35. package/worldmap/leaflet/dialog-polyfill.css +0 -37
  36. package/worldmap/leaflet/dialog-polyfill.js +0 -736
@@ -0,0 +1,11 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "" # See documentation for possible values
9
+ directory: "/" # Location of package manifests
10
+ schedule:
11
+ interval: "weekly"
package/CHANGELOG.md CHANGED
@@ -1,5 +1,6 @@
1
1
  ### Change Log for Node-RED Worldmap
2
2
 
3
+ - v5.0.9 - Slight tidy on flags, bump turf dep.
3
4
  - v5.0.8 - Fix flag handling for SIDC 2525D, add example.
4
5
  - v5.0.7 - Allow Tooltip options (see new example). #PR295.
5
6
  - v5.0.6 - Tweak SIDC flag handling slightly to show direction if available and moving.
package/README.md CHANGED
@@ -13,6 +13,7 @@ Feel free to [![](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%
13
13
 
14
14
  ### Updates
15
15
 
16
+ - v5.0.9 - Slight tidy on flags, bump turf dep.
16
17
  - v5.0.8 - Fix flag handling for SIDC 2525D, add example.
17
18
  - v5.0.7 - Allow Tooltip options (see new example). #PR295.
18
19
  - v5.0.6 - Tweak SIDC flag handling slightly to show direction if available and moving.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../index.ts","../../lib/spline.ts"],"names":[],"mappings":"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","sourcesContent":["import { Feature, LineString, GeoJsonProperties } from \"geojson\";\nimport { lineString } from \"@turf/helpers\";\nimport { getGeom } from \"@turf/invariant\";\nimport { Spline } from \"./lib/spline.js\";\n\n/**\n * Takes a {@link LineString|line} and returns a curved version\n * by applying a [Bezier spline](http://en.wikipedia.org/wiki/B%C3%A9zier_spline)\n * algorithm.\n *\n * The bezier spline implementation is by [Leszek Rybicki](http://leszek.rybicki.cc/).\n *\n * @name bezierSpline\n * @param {Feature<LineString>} line input LineString\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] Translate properties to output\n * @param {number} [options.resolution=10000] time in milliseconds between points\n * @param {number} [options.sharpness=0.85] a measure of how curvy the path should be between splines\n * @returns {Feature<LineString>} curved line\n * @example\n * var line = turf.lineString([\n * [-76.091308, 18.427501],\n * [-76.695556, 18.729501],\n * [-76.552734, 19.40443],\n * [-74.61914, 19.134789],\n * [-73.652343, 20.07657],\n * [-73.157958, 20.210656]\n * ]);\n *\n * var curved = turf.bezierSpline(line);\n *\n * //addToMap\n * var addToMap = [line, curved]\n * curved.properties = { stroke: '#0F0' };\n */\nfunction bezierSpline<P extends GeoJsonProperties = GeoJsonProperties>(\n line: Feature<LineString> | LineString,\n options: {\n properties?: P;\n resolution?: number;\n sharpness?: number;\n } = {}\n): Feature<LineString, P> {\n // Optional params\n const resolution = options.resolution || 10000;\n const sharpness = options.sharpness || 0.85;\n\n const coords: [number, number][] = [];\n const points = getGeom(line).coordinates.map((pt) => {\n return { x: pt[0], y: pt[1] };\n });\n const spline = new Spline({\n duration: resolution,\n points,\n sharpness,\n });\n\n const pushCoord = (time: number) => {\n var pos = spline.pos(time);\n if (Math.floor(time / 100) % 2 === 0) {\n coords.push([pos.x, pos.y]);\n }\n };\n\n for (var i = 0; i < spline.duration; i += 10) {\n pushCoord(i);\n }\n pushCoord(spline.duration);\n\n return lineString(coords, options.properties);\n}\n\nexport { bezierSpline };\nexport default bezierSpline;\n","interface Point {\n x: number;\n y: number;\n z: number;\n}\n\n/**\n * BezierSpline\n * https://github.com/leszekr/bezier-spline-js\n *\n * @private\n * @copyright\n * Copyright (c) 2013 Leszek Rybicki\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nclass Spline {\n public duration: number;\n public points: Point[];\n public sharpness: number;\n public centers: Point[];\n public controls: Array<[Point, Point]>;\n public stepLength: number;\n public length: number;\n public delay: number;\n public steps: number[];\n\n constructor(options?: any) {\n this.points = options.points || [];\n this.duration = options.duration || 10000;\n this.sharpness = options.sharpness || 0.85;\n this.centers = [];\n this.controls = [];\n this.stepLength = options.stepLength || 60;\n this.length = this.points.length;\n this.delay = 0;\n\n // this is to ensure compatibility with the 2d version\n for (let i = 0; i < this.length; i++) {\n this.points[i].z = this.points[i].z || 0;\n }\n for (let i = 0; i < this.length - 1; i++) {\n const p1 = this.points[i];\n const p2 = this.points[i + 1];\n this.centers.push({\n x: (p1.x + p2.x) / 2,\n y: (p1.y + p2.y) / 2,\n z: (p1.z + p2.z) / 2,\n });\n }\n this.controls.push([this.points[0], this.points[0]]);\n for (let i = 0; i < this.centers.length - 1; i++) {\n const dx =\n this.points[i + 1].x - (this.centers[i].x + this.centers[i + 1].x) / 2;\n const dy =\n this.points[i + 1].y - (this.centers[i].y + this.centers[i + 1].y) / 2;\n const dz =\n this.points[i + 1].z - (this.centers[i].y + this.centers[i + 1].z) / 2;\n this.controls.push([\n {\n x:\n (1.0 - this.sharpness) * this.points[i + 1].x +\n this.sharpness * (this.centers[i].x + dx),\n y:\n (1.0 - this.sharpness) * this.points[i + 1].y +\n this.sharpness * (this.centers[i].y + dy),\n z:\n (1.0 - this.sharpness) * this.points[i + 1].z +\n this.sharpness * (this.centers[i].z + dz),\n },\n {\n x:\n (1.0 - this.sharpness) * this.points[i + 1].x +\n this.sharpness * (this.centers[i + 1].x + dx),\n y:\n (1.0 - this.sharpness) * this.points[i + 1].y +\n this.sharpness * (this.centers[i + 1].y + dy),\n z:\n (1.0 - this.sharpness) * this.points[i + 1].z +\n this.sharpness * (this.centers[i + 1].z + dz),\n },\n ]);\n }\n this.controls.push([\n this.points[this.length - 1],\n this.points[this.length - 1],\n ]);\n this.steps = this.cacheSteps(this.stepLength);\n return this;\n }\n /**\n * Caches an array of equidistant (more or less) points on the curve.\n */\n public cacheSteps(mindist: number) {\n const steps = [];\n let laststep = this.pos(0);\n steps.push(0);\n for (let t = 0; t < this.duration; t += 10) {\n const step = this.pos(t);\n const dist = Math.sqrt(\n (step.x - laststep.x) * (step.x - laststep.x) +\n (step.y - laststep.y) * (step.y - laststep.y) +\n (step.z - laststep.z) * (step.z - laststep.z)\n );\n if (dist > mindist) {\n steps.push(t);\n laststep = step;\n }\n }\n return steps;\n }\n\n /**\n * returns angle and speed in the given point in the curve\n */\n public vector(t: number) {\n const p1 = this.pos(t + 10);\n const p2 = this.pos(t - 10);\n return {\n angle: (180 * Math.atan2(p1.y - p2.y, p1.x - p2.x)) / 3.14,\n speed: Math.sqrt(\n (p2.x - p1.x) * (p2.x - p1.x) +\n (p2.y - p1.y) * (p2.y - p1.y) +\n (p2.z - p1.z) * (p2.z - p1.z)\n ),\n };\n }\n\n /**\n * Gets the position of the point, given time.\n *\n * WARNING: The speed is not constant. The time it takes between control points is constant.\n *\n * For constant speed, use Spline.steps[i];\n */\n public pos(time: number) {\n let t = time - this.delay;\n if (t < 0) {\n t = 0;\n }\n if (t > this.duration) {\n t = this.duration - 1;\n }\n // t = t-this.delay;\n const t2 = t / this.duration;\n if (t2 >= 1) {\n return this.points[this.length - 1];\n }\n\n const n = Math.floor((this.points.length - 1) * t2);\n const t1 = (this.length - 1) * t2 - n;\n return bezier(\n t1,\n this.points[n],\n this.controls[n][1],\n this.controls[n + 1][0],\n this.points[n + 1]\n );\n }\n}\n\nfunction bezier(t: number, p1: Point, c1: Point, c2: Point, p2: Point) {\n const b = B(t);\n const pos = {\n x: p2.x * b[0] + c2.x * b[1] + c1.x * b[2] + p1.x * b[3],\n y: p2.y * b[0] + c2.y * b[1] + c1.y * b[2] + p1.y * b[3],\n z: p2.z * b[0] + c2.z * b[1] + c1.z * b[2] + p1.z * b[3],\n };\n return pos;\n}\nfunction B(t: number) {\n const t2 = t * t;\n const t3 = t2 * t;\n return [\n t3,\n 3 * t2 * (1 - t),\n 3 * t * (1 - t) * (1 - t),\n (1 - t) * (1 - t) * (1 - t),\n ];\n}\n\nexport { Spline, Point };\nexport default Spline;\n"]}
1
+ {"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-bezier-spline/dist/cjs/index.cjs","../../index.ts","../../lib/spline.ts"],"names":[],"mappings":"AAAA;ACCA,wCAA2B;AAC3B,4CAAwB;ADCxB;AACA;AE4BA,IAAM,OAAA,EAAN,MAAa;AAAA,EAWX,WAAA,CAAY,OAAA,EAAe;AACzB,IAAA,IAAA,CAAK,OAAA,EAAS,OAAA,CAAQ,OAAA,GAAU,CAAC,CAAA;AACjC,IAAA,IAAA,CAAK,SAAA,EAAW,OAAA,CAAQ,SAAA,GAAY,GAAA;AACpC,IAAA,IAAA,CAAK,UAAA,EAAY,OAAA,CAAQ,UAAA,GAAa,IAAA;AACtC,IAAA,IAAA,CAAK,QAAA,EAAU,CAAC,CAAA;AAChB,IAAA,IAAA,CAAK,SAAA,EAAW,CAAC,CAAA;AACjB,IAAA,IAAA,CAAK,WAAA,EAAa,OAAA,CAAQ,WAAA,GAAc,EAAA;AACxC,IAAA,IAAA,CAAK,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,MAAA;AAC1B,IAAA,IAAA,CAAK,MAAA,EAAQ,CAAA;AAGb,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,IAAA,CAAK,MAAA,EAAQ,CAAA,EAAA,EAAK;AACpC,MAAA,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,CAAE,EAAA,EAAI,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,CAAE,EAAA,GAAK,CAAA;AAAA,IACzC;AACA,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,IAAA,CAAK,OAAA,EAAS,CAAA,EAAG,CAAA,EAAA,EAAK;AACxC,MAAA,MAAM,GAAA,EAAK,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA;AACxB,MAAA,MAAM,GAAA,EAAK,IAAA,CAAK,MAAA,CAAO,EAAA,EAAI,CAAC,CAAA;AAC5B,MAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK;AAAA,QAChB,CAAA,EAAA,CAAI,EAAA,CAAG,EAAA,EAAI,EAAA,CAAG,CAAA,EAAA,EAAK,CAAA;AAAA,QACnB,CAAA,EAAA,CAAI,EAAA,CAAG,EAAA,EAAI,EAAA,CAAG,CAAA,EAAA,EAAK,CAAA;AAAA,QACnB,CAAA,EAAA,CAAI,EAAA,CAAG,EAAA,EAAI,EAAA,CAAG,CAAA,EAAA,EAAK;AAAA,MACrB,CAAC,CAAA;AAAA,IACH;AACA,IAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,CAAC,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,EAAG,IAAA,CAAK,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA;AACnD,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAS,CAAA,EAAG,CAAA,EAAA,EAAK;AAChD,MAAA,MAAM,GAAA,EACJ,IAAA,CAAK,MAAA,CAAO,EAAA,EAAI,CAAC,CAAA,CAAE,EAAA,EAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,CAAE,EAAA,EAAI,IAAA,CAAK,OAAA,CAAQ,EAAA,EAAI,CAAC,CAAA,CAAE,CAAA,EAAA,EAAK,CAAA;AACvE,MAAA,MAAM,GAAA,EACJ,IAAA,CAAK,MAAA,CAAO,EAAA,EAAI,CAAC,CAAA,CAAE,EAAA,EAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,CAAE,EAAA,EAAI,IAAA,CAAK,OAAA,CAAQ,EAAA,EAAI,CAAC,CAAA,CAAE,CAAA,EAAA,EAAK,CAAA;AACvE,MAAA,MAAM,GAAA,EACJ,IAAA,CAAK,MAAA,CAAO,EAAA,EAAI,CAAC,CAAA,CAAE,EAAA,EAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,CAAE,EAAA,EAAI,IAAA,CAAK,OAAA,CAAQ,EAAA,EAAI,CAAC,CAAA,CAAE,CAAA,EAAA,EAAK,CAAA;AACvE,MAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK;AAAA,QACjB;AAAA,UACE,CAAA,EAAA,CACG,EAAA,EAAM,IAAA,CAAK,SAAA,EAAA,EAAa,IAAA,CAAK,MAAA,CAAO,EAAA,EAAI,CAAC,CAAA,CAAE,EAAA,EAC5C,IAAA,CAAK,UAAA,EAAA,CAAa,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,CAAE,EAAA,EAAI,EAAA,CAAA;AAAA,UACxC,CAAA,EAAA,CACG,EAAA,EAAM,IAAA,CAAK,SAAA,EAAA,EAAa,IAAA,CAAK,MAAA,CAAO,EAAA,EAAI,CAAC,CAAA,CAAE,EAAA,EAC5C,IAAA,CAAK,UAAA,EAAA,CAAa,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,CAAE,EAAA,EAAI,EAAA,CAAA;AAAA,UACxC,CAAA,EAAA,CACG,EAAA,EAAM,IAAA,CAAK,SAAA,EAAA,EAAa,IAAA,CAAK,MAAA,CAAO,EAAA,EAAI,CAAC,CAAA,CAAE,EAAA,EAC5C,IAAA,CAAK,UAAA,EAAA,CAAa,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,CAAE,EAAA,EAAI,EAAA;AAAA,QAC1C,CAAA;AAAA,QACA;AAAA,UACE,CAAA,EAAA,CACG,EAAA,EAAM,IAAA,CAAK,SAAA,EAAA,EAAa,IAAA,CAAK,MAAA,CAAO,EAAA,EAAI,CAAC,CAAA,CAAE,EAAA,EAC5C,IAAA,CAAK,UAAA,EAAA,CAAa,IAAA,CAAK,OAAA,CAAQ,EAAA,EAAI,CAAC,CAAA,CAAE,EAAA,EAAI,EAAA,CAAA;AAAA,UAC5C,CAAA,EAAA,CACG,EAAA,EAAM,IAAA,CAAK,SAAA,EAAA,EAAa,IAAA,CAAK,MAAA,CAAO,EAAA,EAAI,CAAC,CAAA,CAAE,EAAA,EAC5C,IAAA,CAAK,UAAA,EAAA,CAAa,IAAA,CAAK,OAAA,CAAQ,EAAA,EAAI,CAAC,CAAA,CAAE,EAAA,EAAI,EAAA,CAAA;AAAA,UAC5C,CAAA,EAAA,CACG,EAAA,EAAM,IAAA,CAAK,SAAA,EAAA,EAAa,IAAA,CAAK,MAAA,CAAO,EAAA,EAAI,CAAC,CAAA,CAAE,EAAA,EAC5C,IAAA,CAAK,UAAA,EAAA,CAAa,IAAA,CAAK,OAAA,CAAQ,EAAA,EAAI,CAAC,CAAA,CAAE,EAAA,EAAI,EAAA;AAAA,QAC9C;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AACA,IAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK;AAAA,MACjB,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,CAAC,CAAA;AAAA,MAC3B,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,CAAC;AAAA,IAC7B,CAAC,CAAA;AACD,IAAA,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,UAAU,CAAA;AAC5C,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIO,UAAA,CAAW,OAAA,EAAiB;AACjC,IAAA,MAAM,MAAA,EAAQ,CAAC,CAAA;AACf,IAAA,IAAI,SAAA,EAAW,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA;AACzB,IAAA,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AACZ,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,IAAA,CAAK,QAAA,EAAU,EAAA,GAAK,EAAA,EAAI;AAC1C,MAAA,MAAM,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA;AACvB,MAAA,MAAM,KAAA,EAAO,IAAA,CAAK,IAAA;AAAA,QAAA,CACf,IAAA,CAAK,EAAA,EAAI,QAAA,CAAS,CAAA,EAAA,EAAA,CAAM,IAAA,CAAK,EAAA,EAAI,QAAA,CAAS,CAAA,EAAA,EAAA,CACxC,IAAA,CAAK,EAAA,EAAI,QAAA,CAAS,CAAA,EAAA,EAAA,CAAM,IAAA,CAAK,EAAA,EAAI,QAAA,CAAS,CAAA,EAAA,EAAA,CAC1C,IAAA,CAAK,EAAA,EAAI,QAAA,CAAS,CAAA,EAAA,EAAA,CAAM,IAAA,CAAK,EAAA,EAAI,QAAA,CAAS,CAAA;AAAA,MAC/C,CAAA;AACA,MAAA,GAAA,CAAI,KAAA,EAAO,OAAA,EAAS;AAClB,QAAA,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AACZ,QAAA,SAAA,EAAW,IAAA;AAAA,MACb;AAAA,IACF;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKO,MAAA,CAAO,CAAA,EAAW;AACvB,IAAA,MAAM,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,EAAE,CAAA;AAC1B,IAAA,MAAM,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,EAAE,CAAA;AAC1B,IAAA,OAAO;AAAA,MACL,KAAA,EAAQ,IAAA,EAAM,IAAA,CAAK,KAAA,CAAM,EAAA,CAAG,EAAA,EAAI,EAAA,CAAG,CAAA,EAAG,EAAA,CAAG,EAAA,EAAI,EAAA,CAAG,CAAC,EAAA,EAAK,IAAA;AAAA,MACtD,KAAA,EAAO,IAAA,CAAK,IAAA;AAAA,QAAA,CACT,EAAA,CAAG,EAAA,EAAI,EAAA,CAAG,CAAA,EAAA,EAAA,CAAM,EAAA,CAAG,EAAA,EAAI,EAAA,CAAG,CAAA,EAAA,EAAA,CACxB,EAAA,CAAG,EAAA,EAAI,EAAA,CAAG,CAAA,EAAA,EAAA,CAAM,EAAA,CAAG,EAAA,EAAI,EAAA,CAAG,CAAA,EAAA,EAAA,CAC1B,EAAA,CAAG,EAAA,EAAI,EAAA,CAAG,CAAA,EAAA,EAAA,CAAM,EAAA,CAAG,EAAA,EAAI,EAAA,CAAG,CAAA;AAAA,MAC/B;AAAA,IACF,CAAA;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,GAAA,CAAI,IAAA,EAAc;AACvB,IAAA,IAAI,EAAA,EAAI,KAAA,EAAO,IAAA,CAAK,KAAA;AACpB,IAAA,GAAA,CAAI,EAAA,EAAI,CAAA,EAAG;AACT,MAAA,EAAA,EAAI,CAAA;AAAA,IACN;AACA,IAAA,GAAA,CAAI,EAAA,EAAI,IAAA,CAAK,QAAA,EAAU;AACrB,MAAA,EAAA,EAAI,IAAA,CAAK,SAAA,EAAW,CAAA;AAAA,IACtB;AAEA,IAAA,MAAM,GAAA,EAAK,EAAA,EAAI,IAAA,CAAK,QAAA;AACpB,IAAA,GAAA,CAAI,GAAA,GAAM,CAAA,EAAG;AACX,MAAA,OAAO,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,CAAC,CAAA;AAAA,IACpC;AAEA,IAAA,MAAM,EAAA,EAAI,IAAA,CAAK,KAAA,CAAA,CAAO,IAAA,CAAK,MAAA,CAAO,OAAA,EAAS,CAAA,EAAA,EAAK,EAAE,CAAA;AAClD,IAAA,MAAM,GAAA,EAAA,CAAM,IAAA,CAAK,OAAA,EAAS,CAAA,EAAA,EAAK,GAAA,EAAK,CAAA;AACpC,IAAA,OAAO,MAAA;AAAA,MACL,EAAA;AAAA,MACA,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA;AAAA,MACb,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,CAAE,CAAC,CAAA;AAAA,MAClB,IAAA,CAAK,QAAA,CAAS,EAAA,EAAI,CAAC,CAAA,CAAE,CAAC,CAAA;AAAA,MACtB,IAAA,CAAK,MAAA,CAAO,EAAA,EAAI,CAAC;AAAA,IACnB,CAAA;AAAA,EACF;AACF,CAAA;AAEA,SAAS,MAAA,CAAO,CAAA,EAAW,EAAA,EAAW,EAAA,EAAW,EAAA,EAAW,EAAA,EAAW;AACrE,EAAA,MAAM,EAAA,EAAI,CAAA,CAAE,CAAC,CAAA;AACb,EAAA,MAAM,IAAA,EAAM;AAAA,IACV,CAAA,EAAG,EAAA,CAAG,EAAA,EAAI,CAAA,CAAE,CAAC,EAAA,EAAI,EAAA,CAAG,EAAA,EAAI,CAAA,CAAE,CAAC,EAAA,EAAI,EAAA,CAAG,EAAA,EAAI,CAAA,CAAE,CAAC,EAAA,EAAI,EAAA,CAAG,EAAA,EAAI,CAAA,CAAE,CAAC,CAAA;AAAA,IACvD,CAAA,EAAG,EAAA,CAAG,EAAA,EAAI,CAAA,CAAE,CAAC,EAAA,EAAI,EAAA,CAAG,EAAA,EAAI,CAAA,CAAE,CAAC,EAAA,EAAI,EAAA,CAAG,EAAA,EAAI,CAAA,CAAE,CAAC,EAAA,EAAI,EAAA,CAAG,EAAA,EAAI,CAAA,CAAE,CAAC,CAAA;AAAA,IACvD,CAAA,EAAG,EAAA,CAAG,EAAA,EAAI,CAAA,CAAE,CAAC,EAAA,EAAI,EAAA,CAAG,EAAA,EAAI,CAAA,CAAE,CAAC,EAAA,EAAI,EAAA,CAAG,EAAA,EAAI,CAAA,CAAE,CAAC,EAAA,EAAI,EAAA,CAAG,EAAA,EAAI,CAAA,CAAE,CAAC;AAAA,EACzD,CAAA;AACA,EAAA,OAAO,GAAA;AACT;AACA,SAAS,CAAA,CAAE,CAAA,EAAW;AACpB,EAAA,MAAM,GAAA,EAAK,EAAA,EAAI,CAAA;AACf,EAAA,MAAM,GAAA,EAAK,GAAA,EAAK,CAAA;AAChB,EAAA,OAAO;AAAA,IACL,EAAA;AAAA,IACA,EAAA,EAAI,GAAA,EAAA,CAAM,EAAA,EAAI,CAAA,CAAA;AAAA,IACd,EAAA,EAAI,EAAA,EAAA,CAAK,EAAA,EAAI,CAAA,EAAA,EAAA,CAAM,EAAA,EAAI,CAAA,CAAA;AAAA,IAAA,CACtB,EAAA,EAAI,CAAA,EAAA,EAAA,CAAM,EAAA,EAAI,CAAA,EAAA,EAAA,CAAM,EAAA,EAAI,CAAA;AAAA,EAC3B,CAAA;AACF;AF9DA;AACA;ACnGA,SAAS,YAAA,CACP,IAAA,EACA,QAAA,EAII,CAAC,CAAA,EACmB;AAExB,EAAA,MAAM,WAAA,EAAa,OAAA,CAAQ,WAAA,GAAc,GAAA;AACzC,EAAA,MAAM,UAAA,EAAY,OAAA,CAAQ,UAAA,GAAa,IAAA;AAEvC,EAAA,MAAM,OAAA,EAA6B,CAAC,CAAA;AACpC,EAAA,MAAM,OAAA,EAAS,gCAAA,IAAY,CAAA,CAAE,WAAA,CAAY,GAAA,CAAI,CAAC,EAAA,EAAA,GAAO;AACnD,IAAA,OAAO,EAAE,CAAA,EAAG,EAAA,CAAG,CAAC,CAAA,EAAG,CAAA,EAAG,EAAA,CAAG,CAAC,EAAE,CAAA;AAAA,EAC9B,CAAC,CAAA;AACD,EAAA,MAAM,OAAA,EAAS,IAAI,MAAA,CAAO;AAAA,IACxB,QAAA,EAAU,UAAA;AAAA,IACV,MAAA;AAAA,IACA;AAAA,EACF,CAAC,CAAA;AAED,EAAA,MAAM,UAAA,EAAY,CAAC,IAAA,EAAA,GAAiB;AAClC,IAAA,IAAI,IAAA,EAAM,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA;AACzB,IAAA,GAAA,CAAI,IAAA,CAAK,KAAA,CAAM,KAAA,EAAO,GAAG,EAAA,EAAI,EAAA,IAAM,CAAA,EAAG;AACpC,MAAA,MAAA,CAAO,IAAA,CAAK,CAAC,GAAA,CAAI,CAAA,EAAG,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,IAC5B;AAAA,EACF,CAAA;AAEA,EAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,MAAA,CAAO,QAAA,EAAU,EAAA,GAAK,EAAA,EAAI;AAC5C,IAAA,SAAA,CAAU,CAAC,CAAA;AAAA,EACb;AACA,EAAA,SAAA,CAAU,MAAA,CAAO,QAAQ,CAAA;AAEzB,EAAA,OAAO,iCAAA,MAAW,EAAQ,OAAA,CAAQ,UAAU,CAAA;AAC9C;AAGA,IAAO,2BAAA,EAAQ,YAAA;ADuFf;AACE;AACA;AACF,kFAAC","file":"/home/runner/work/turf/turf/packages/turf-bezier-spline/dist/cjs/index.cjs","sourcesContent":[null,"import { Feature, LineString, GeoJsonProperties } from \"geojson\";\nimport { lineString } from \"@turf/helpers\";\nimport { getGeom } from \"@turf/invariant\";\nimport { Spline } from \"./lib/spline.js\";\n\n/**\n * Takes a {@link LineString|line} and returns a curved version\n * by applying a [Bezier spline](http://en.wikipedia.org/wiki/B%C3%A9zier_spline)\n * algorithm.\n *\n * The bezier spline implementation is by [Leszek Rybicki](http://leszek.rybicki.cc/).\n *\n * @function\n * @param {Feature<LineString>} line input LineString\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] Translate properties to output\n * @param {number} [options.resolution=10000] time in milliseconds between points\n * @param {number} [options.sharpness=0.85] a measure of how curvy the path should be between splines\n * @returns {Feature<LineString>} curved line\n * @example\n * var line = turf.lineString([\n * [-76.091308, 18.427501],\n * [-76.695556, 18.729501],\n * [-76.552734, 19.40443],\n * [-74.61914, 19.134789],\n * [-73.652343, 20.07657],\n * [-73.157958, 20.210656]\n * ]);\n *\n * var curved = turf.bezierSpline(line);\n *\n * //addToMap\n * var addToMap = [line, curved]\n * curved.properties = { stroke: '#0F0' };\n */\nfunction bezierSpline<P extends GeoJsonProperties = GeoJsonProperties>(\n line: Feature<LineString> | LineString,\n options: {\n properties?: P;\n resolution?: number;\n sharpness?: number;\n } = {}\n): Feature<LineString, P> {\n // Optional params\n const resolution = options.resolution || 10000;\n const sharpness = options.sharpness || 0.85;\n\n const coords: [number, number][] = [];\n const points = getGeom(line).coordinates.map((pt) => {\n return { x: pt[0], y: pt[1] };\n });\n const spline = new Spline({\n duration: resolution,\n points,\n sharpness,\n });\n\n const pushCoord = (time: number) => {\n var pos = spline.pos(time);\n if (Math.floor(time / 100) % 2 === 0) {\n coords.push([pos.x, pos.y]);\n }\n };\n\n for (var i = 0; i < spline.duration; i += 10) {\n pushCoord(i);\n }\n pushCoord(spline.duration);\n\n return lineString(coords, options.properties);\n}\n\nexport { bezierSpline };\nexport default bezierSpline;\n","interface Point {\n x: number;\n y: number;\n z: number;\n}\n\n/**\n * BezierSpline\n * https://github.com/leszekr/bezier-spline-js\n *\n * @private\n * @copyright\n * Copyright (c) 2013 Leszek Rybicki\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nclass Spline {\n public duration: number;\n public points: Point[];\n public sharpness: number;\n public centers: Point[];\n public controls: Array<[Point, Point]>;\n public stepLength: number;\n public length: number;\n public delay: number;\n public steps: number[];\n\n constructor(options?: any) {\n this.points = options.points || [];\n this.duration = options.duration || 10000;\n this.sharpness = options.sharpness || 0.85;\n this.centers = [];\n this.controls = [];\n this.stepLength = options.stepLength || 60;\n this.length = this.points.length;\n this.delay = 0;\n\n // this is to ensure compatibility with the 2d version\n for (let i = 0; i < this.length; i++) {\n this.points[i].z = this.points[i].z || 0;\n }\n for (let i = 0; i < this.length - 1; i++) {\n const p1 = this.points[i];\n const p2 = this.points[i + 1];\n this.centers.push({\n x: (p1.x + p2.x) / 2,\n y: (p1.y + p2.y) / 2,\n z: (p1.z + p2.z) / 2,\n });\n }\n this.controls.push([this.points[0], this.points[0]]);\n for (let i = 0; i < this.centers.length - 1; i++) {\n const dx =\n this.points[i + 1].x - (this.centers[i].x + this.centers[i + 1].x) / 2;\n const dy =\n this.points[i + 1].y - (this.centers[i].y + this.centers[i + 1].y) / 2;\n const dz =\n this.points[i + 1].z - (this.centers[i].y + this.centers[i + 1].z) / 2;\n this.controls.push([\n {\n x:\n (1.0 - this.sharpness) * this.points[i + 1].x +\n this.sharpness * (this.centers[i].x + dx),\n y:\n (1.0 - this.sharpness) * this.points[i + 1].y +\n this.sharpness * (this.centers[i].y + dy),\n z:\n (1.0 - this.sharpness) * this.points[i + 1].z +\n this.sharpness * (this.centers[i].z + dz),\n },\n {\n x:\n (1.0 - this.sharpness) * this.points[i + 1].x +\n this.sharpness * (this.centers[i + 1].x + dx),\n y:\n (1.0 - this.sharpness) * this.points[i + 1].y +\n this.sharpness * (this.centers[i + 1].y + dy),\n z:\n (1.0 - this.sharpness) * this.points[i + 1].z +\n this.sharpness * (this.centers[i + 1].z + dz),\n },\n ]);\n }\n this.controls.push([\n this.points[this.length - 1],\n this.points[this.length - 1],\n ]);\n this.steps = this.cacheSteps(this.stepLength);\n return this;\n }\n /**\n * Caches an array of equidistant (more or less) points on the curve.\n */\n public cacheSteps(mindist: number) {\n const steps = [];\n let laststep = this.pos(0);\n steps.push(0);\n for (let t = 0; t < this.duration; t += 10) {\n const step = this.pos(t);\n const dist = Math.sqrt(\n (step.x - laststep.x) * (step.x - laststep.x) +\n (step.y - laststep.y) * (step.y - laststep.y) +\n (step.z - laststep.z) * (step.z - laststep.z)\n );\n if (dist > mindist) {\n steps.push(t);\n laststep = step;\n }\n }\n return steps;\n }\n\n /**\n * returns angle and speed in the given point in the curve\n */\n public vector(t: number) {\n const p1 = this.pos(t + 10);\n const p2 = this.pos(t - 10);\n return {\n angle: (180 * Math.atan2(p1.y - p2.y, p1.x - p2.x)) / 3.14,\n speed: Math.sqrt(\n (p2.x - p1.x) * (p2.x - p1.x) +\n (p2.y - p1.y) * (p2.y - p1.y) +\n (p2.z - p1.z) * (p2.z - p1.z)\n ),\n };\n }\n\n /**\n * Gets the position of the point, given time.\n *\n * WARNING: The speed is not constant. The time it takes between control points is constant.\n *\n * For constant speed, use Spline.steps[i];\n */\n public pos(time: number) {\n let t = time - this.delay;\n if (t < 0) {\n t = 0;\n }\n if (t > this.duration) {\n t = this.duration - 1;\n }\n // t = t-this.delay;\n const t2 = t / this.duration;\n if (t2 >= 1) {\n return this.points[this.length - 1];\n }\n\n const n = Math.floor((this.points.length - 1) * t2);\n const t1 = (this.length - 1) * t2 - n;\n return bezier(\n t1,\n this.points[n],\n this.controls[n][1],\n this.controls[n + 1][0],\n this.points[n + 1]\n );\n }\n}\n\nfunction bezier(t: number, p1: Point, c1: Point, c2: Point, p2: Point) {\n const b = B(t);\n const pos = {\n x: p2.x * b[0] + c2.x * b[1] + c1.x * b[2] + p1.x * b[3],\n y: p2.y * b[0] + c2.y * b[1] + c1.y * b[2] + p1.y * b[3],\n z: p2.z * b[0] + c2.z * b[1] + c1.z * b[2] + p1.z * b[3],\n };\n return pos;\n}\nfunction B(t: number) {\n const t2 = t * t;\n const t3 = t2 * t;\n return [\n t3,\n 3 * t2 * (1 - t),\n 3 * t * (1 - t) * (1 - t),\n (1 - t) * (1 - t) * (1 - t),\n ];\n}\n\nexport { Spline, Point };\nexport default Spline;\n"]}
@@ -7,7 +7,7 @@ import { GeoJsonProperties, Feature, LineString } from 'geojson';
7
7
  *
8
8
  * The bezier spline implementation is by [Leszek Rybicki](http://leszek.rybicki.cc/).
9
9
  *
10
- * @name bezierSpline
10
+ * @function
11
11
  * @param {Feature<LineString>} line input LineString
12
12
  * @param {Object} [options={}] Optional parameters
13
13
  * @param {Object} [options.properties={}] Translate properties to output
@@ -7,7 +7,7 @@ import { GeoJsonProperties, Feature, LineString } from 'geojson';
7
7
  *
8
8
  * The bezier spline implementation is by [Leszek Rybicki](http://leszek.rybicki.cc/).
9
9
  *
10
- * @name bezierSpline
10
+ * @function
11
11
  * @param {Feature<LineString>} line input LineString
12
12
  * @param {Object} [options={}] Optional parameters
13
13
  * @param {Object} [options.properties={}] Translate properties to output
@@ -1 +1 @@
1
- {"version":3,"sources":["../../index.ts","../../lib/spline.ts"],"sourcesContent":["import { Feature, LineString, GeoJsonProperties } from \"geojson\";\nimport { lineString } from \"@turf/helpers\";\nimport { getGeom } from \"@turf/invariant\";\nimport { Spline } from \"./lib/spline.js\";\n\n/**\n * Takes a {@link LineString|line} and returns a curved version\n * by applying a [Bezier spline](http://en.wikipedia.org/wiki/B%C3%A9zier_spline)\n * algorithm.\n *\n * The bezier spline implementation is by [Leszek Rybicki](http://leszek.rybicki.cc/).\n *\n * @name bezierSpline\n * @param {Feature<LineString>} line input LineString\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] Translate properties to output\n * @param {number} [options.resolution=10000] time in milliseconds between points\n * @param {number} [options.sharpness=0.85] a measure of how curvy the path should be between splines\n * @returns {Feature<LineString>} curved line\n * @example\n * var line = turf.lineString([\n * [-76.091308, 18.427501],\n * [-76.695556, 18.729501],\n * [-76.552734, 19.40443],\n * [-74.61914, 19.134789],\n * [-73.652343, 20.07657],\n * [-73.157958, 20.210656]\n * ]);\n *\n * var curved = turf.bezierSpline(line);\n *\n * //addToMap\n * var addToMap = [line, curved]\n * curved.properties = { stroke: '#0F0' };\n */\nfunction bezierSpline<P extends GeoJsonProperties = GeoJsonProperties>(\n line: Feature<LineString> | LineString,\n options: {\n properties?: P;\n resolution?: number;\n sharpness?: number;\n } = {}\n): Feature<LineString, P> {\n // Optional params\n const resolution = options.resolution || 10000;\n const sharpness = options.sharpness || 0.85;\n\n const coords: [number, number][] = [];\n const points = getGeom(line).coordinates.map((pt) => {\n return { x: pt[0], y: pt[1] };\n });\n const spline = new Spline({\n duration: resolution,\n points,\n sharpness,\n });\n\n const pushCoord = (time: number) => {\n var pos = spline.pos(time);\n if (Math.floor(time / 100) % 2 === 0) {\n coords.push([pos.x, pos.y]);\n }\n };\n\n for (var i = 0; i < spline.duration; i += 10) {\n pushCoord(i);\n }\n pushCoord(spline.duration);\n\n return lineString(coords, options.properties);\n}\n\nexport { bezierSpline };\nexport default bezierSpline;\n","interface Point {\n x: number;\n y: number;\n z: number;\n}\n\n/**\n * BezierSpline\n * https://github.com/leszekr/bezier-spline-js\n *\n * @private\n * @copyright\n * Copyright (c) 2013 Leszek Rybicki\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nclass Spline {\n public duration: number;\n public points: Point[];\n public sharpness: number;\n public centers: Point[];\n public controls: Array<[Point, Point]>;\n public stepLength: number;\n public length: number;\n public delay: number;\n public steps: number[];\n\n constructor(options?: any) {\n this.points = options.points || [];\n this.duration = options.duration || 10000;\n this.sharpness = options.sharpness || 0.85;\n this.centers = [];\n this.controls = [];\n this.stepLength = options.stepLength || 60;\n this.length = this.points.length;\n this.delay = 0;\n\n // this is to ensure compatibility with the 2d version\n for (let i = 0; i < this.length; i++) {\n this.points[i].z = this.points[i].z || 0;\n }\n for (let i = 0; i < this.length - 1; i++) {\n const p1 = this.points[i];\n const p2 = this.points[i + 1];\n this.centers.push({\n x: (p1.x + p2.x) / 2,\n y: (p1.y + p2.y) / 2,\n z: (p1.z + p2.z) / 2,\n });\n }\n this.controls.push([this.points[0], this.points[0]]);\n for (let i = 0; i < this.centers.length - 1; i++) {\n const dx =\n this.points[i + 1].x - (this.centers[i].x + this.centers[i + 1].x) / 2;\n const dy =\n this.points[i + 1].y - (this.centers[i].y + this.centers[i + 1].y) / 2;\n const dz =\n this.points[i + 1].z - (this.centers[i].y + this.centers[i + 1].z) / 2;\n this.controls.push([\n {\n x:\n (1.0 - this.sharpness) * this.points[i + 1].x +\n this.sharpness * (this.centers[i].x + dx),\n y:\n (1.0 - this.sharpness) * this.points[i + 1].y +\n this.sharpness * (this.centers[i].y + dy),\n z:\n (1.0 - this.sharpness) * this.points[i + 1].z +\n this.sharpness * (this.centers[i].z + dz),\n },\n {\n x:\n (1.0 - this.sharpness) * this.points[i + 1].x +\n this.sharpness * (this.centers[i + 1].x + dx),\n y:\n (1.0 - this.sharpness) * this.points[i + 1].y +\n this.sharpness * (this.centers[i + 1].y + dy),\n z:\n (1.0 - this.sharpness) * this.points[i + 1].z +\n this.sharpness * (this.centers[i + 1].z + dz),\n },\n ]);\n }\n this.controls.push([\n this.points[this.length - 1],\n this.points[this.length - 1],\n ]);\n this.steps = this.cacheSteps(this.stepLength);\n return this;\n }\n /**\n * Caches an array of equidistant (more or less) points on the curve.\n */\n public cacheSteps(mindist: number) {\n const steps = [];\n let laststep = this.pos(0);\n steps.push(0);\n for (let t = 0; t < this.duration; t += 10) {\n const step = this.pos(t);\n const dist = Math.sqrt(\n (step.x - laststep.x) * (step.x - laststep.x) +\n (step.y - laststep.y) * (step.y - laststep.y) +\n (step.z - laststep.z) * (step.z - laststep.z)\n );\n if (dist > mindist) {\n steps.push(t);\n laststep = step;\n }\n }\n return steps;\n }\n\n /**\n * returns angle and speed in the given point in the curve\n */\n public vector(t: number) {\n const p1 = this.pos(t + 10);\n const p2 = this.pos(t - 10);\n return {\n angle: (180 * Math.atan2(p1.y - p2.y, p1.x - p2.x)) / 3.14,\n speed: Math.sqrt(\n (p2.x - p1.x) * (p2.x - p1.x) +\n (p2.y - p1.y) * (p2.y - p1.y) +\n (p2.z - p1.z) * (p2.z - p1.z)\n ),\n };\n }\n\n /**\n * Gets the position of the point, given time.\n *\n * WARNING: The speed is not constant. The time it takes between control points is constant.\n *\n * For constant speed, use Spline.steps[i];\n */\n public pos(time: number) {\n let t = time - this.delay;\n if (t < 0) {\n t = 0;\n }\n if (t > this.duration) {\n t = this.duration - 1;\n }\n // t = t-this.delay;\n const t2 = t / this.duration;\n if (t2 >= 1) {\n return this.points[this.length - 1];\n }\n\n const n = Math.floor((this.points.length - 1) * t2);\n const t1 = (this.length - 1) * t2 - n;\n return bezier(\n t1,\n this.points[n],\n this.controls[n][1],\n this.controls[n + 1][0],\n this.points[n + 1]\n );\n }\n}\n\nfunction bezier(t: number, p1: Point, c1: Point, c2: Point, p2: Point) {\n const b = B(t);\n const pos = {\n x: p2.x * b[0] + c2.x * b[1] + c1.x * b[2] + p1.x * b[3],\n y: p2.y * b[0] + c2.y * b[1] + c1.y * b[2] + p1.y * b[3],\n z: p2.z * b[0] + c2.z * b[1] + c1.z * b[2] + p1.z * b[3],\n };\n return pos;\n}\nfunction B(t: number) {\n const t2 = t * t;\n const t3 = t2 * t;\n return [\n t3,\n 3 * t2 * (1 - t),\n 3 * t * (1 - t) * (1 - t),\n (1 - t) * (1 - t) * (1 - t),\n ];\n}\n\nexport { Spline, Point };\nexport default Spline;\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../index.ts","../../lib/spline.ts"],"sourcesContent":["import { Feature, LineString, GeoJsonProperties } from \"geojson\";\nimport { lineString } from \"@turf/helpers\";\nimport { getGeom } from \"@turf/invariant\";\nimport { Spline } from \"./lib/spline.js\";\n\n/**\n * Takes a {@link LineString|line} and returns a curved version\n * by applying a [Bezier spline](http://en.wikipedia.org/wiki/B%C3%A9zier_spline)\n * algorithm.\n *\n * The bezier spline implementation is by [Leszek Rybicki](http://leszek.rybicki.cc/).\n *\n * @function\n * @param {Feature<LineString>} line input LineString\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] Translate properties to output\n * @param {number} [options.resolution=10000] time in milliseconds between points\n * @param {number} [options.sharpness=0.85] a measure of how curvy the path should be between splines\n * @returns {Feature<LineString>} curved line\n * @example\n * var line = turf.lineString([\n * [-76.091308, 18.427501],\n * [-76.695556, 18.729501],\n * [-76.552734, 19.40443],\n * [-74.61914, 19.134789],\n * [-73.652343, 20.07657],\n * [-73.157958, 20.210656]\n * ]);\n *\n * var curved = turf.bezierSpline(line);\n *\n * //addToMap\n * var addToMap = [line, curved]\n * curved.properties = { stroke: '#0F0' };\n */\nfunction bezierSpline<P extends GeoJsonProperties = GeoJsonProperties>(\n line: Feature<LineString> | LineString,\n options: {\n properties?: P;\n resolution?: number;\n sharpness?: number;\n } = {}\n): Feature<LineString, P> {\n // Optional params\n const resolution = options.resolution || 10000;\n const sharpness = options.sharpness || 0.85;\n\n const coords: [number, number][] = [];\n const points = getGeom(line).coordinates.map((pt) => {\n return { x: pt[0], y: pt[1] };\n });\n const spline = new Spline({\n duration: resolution,\n points,\n sharpness,\n });\n\n const pushCoord = (time: number) => {\n var pos = spline.pos(time);\n if (Math.floor(time / 100) % 2 === 0) {\n coords.push([pos.x, pos.y]);\n }\n };\n\n for (var i = 0; i < spline.duration; i += 10) {\n pushCoord(i);\n }\n pushCoord(spline.duration);\n\n return lineString(coords, options.properties);\n}\n\nexport { bezierSpline };\nexport default bezierSpline;\n","interface Point {\n x: number;\n y: number;\n z: number;\n}\n\n/**\n * BezierSpline\n * https://github.com/leszekr/bezier-spline-js\n *\n * @private\n * @copyright\n * Copyright (c) 2013 Leszek Rybicki\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nclass Spline {\n public duration: number;\n public points: Point[];\n public sharpness: number;\n public centers: Point[];\n public controls: Array<[Point, Point]>;\n public stepLength: number;\n public length: number;\n public delay: number;\n public steps: number[];\n\n constructor(options?: any) {\n this.points = options.points || [];\n this.duration = options.duration || 10000;\n this.sharpness = options.sharpness || 0.85;\n this.centers = [];\n this.controls = [];\n this.stepLength = options.stepLength || 60;\n this.length = this.points.length;\n this.delay = 0;\n\n // this is to ensure compatibility with the 2d version\n for (let i = 0; i < this.length; i++) {\n this.points[i].z = this.points[i].z || 0;\n }\n for (let i = 0; i < this.length - 1; i++) {\n const p1 = this.points[i];\n const p2 = this.points[i + 1];\n this.centers.push({\n x: (p1.x + p2.x) / 2,\n y: (p1.y + p2.y) / 2,\n z: (p1.z + p2.z) / 2,\n });\n }\n this.controls.push([this.points[0], this.points[0]]);\n for (let i = 0; i < this.centers.length - 1; i++) {\n const dx =\n this.points[i + 1].x - (this.centers[i].x + this.centers[i + 1].x) / 2;\n const dy =\n this.points[i + 1].y - (this.centers[i].y + this.centers[i + 1].y) / 2;\n const dz =\n this.points[i + 1].z - (this.centers[i].y + this.centers[i + 1].z) / 2;\n this.controls.push([\n {\n x:\n (1.0 - this.sharpness) * this.points[i + 1].x +\n this.sharpness * (this.centers[i].x + dx),\n y:\n (1.0 - this.sharpness) * this.points[i + 1].y +\n this.sharpness * (this.centers[i].y + dy),\n z:\n (1.0 - this.sharpness) * this.points[i + 1].z +\n this.sharpness * (this.centers[i].z + dz),\n },\n {\n x:\n (1.0 - this.sharpness) * this.points[i + 1].x +\n this.sharpness * (this.centers[i + 1].x + dx),\n y:\n (1.0 - this.sharpness) * this.points[i + 1].y +\n this.sharpness * (this.centers[i + 1].y + dy),\n z:\n (1.0 - this.sharpness) * this.points[i + 1].z +\n this.sharpness * (this.centers[i + 1].z + dz),\n },\n ]);\n }\n this.controls.push([\n this.points[this.length - 1],\n this.points[this.length - 1],\n ]);\n this.steps = this.cacheSteps(this.stepLength);\n return this;\n }\n /**\n * Caches an array of equidistant (more or less) points on the curve.\n */\n public cacheSteps(mindist: number) {\n const steps = [];\n let laststep = this.pos(0);\n steps.push(0);\n for (let t = 0; t < this.duration; t += 10) {\n const step = this.pos(t);\n const dist = Math.sqrt(\n (step.x - laststep.x) * (step.x - laststep.x) +\n (step.y - laststep.y) * (step.y - laststep.y) +\n (step.z - laststep.z) * (step.z - laststep.z)\n );\n if (dist > mindist) {\n steps.push(t);\n laststep = step;\n }\n }\n return steps;\n }\n\n /**\n * returns angle and speed in the given point in the curve\n */\n public vector(t: number) {\n const p1 = this.pos(t + 10);\n const p2 = this.pos(t - 10);\n return {\n angle: (180 * Math.atan2(p1.y - p2.y, p1.x - p2.x)) / 3.14,\n speed: Math.sqrt(\n (p2.x - p1.x) * (p2.x - p1.x) +\n (p2.y - p1.y) * (p2.y - p1.y) +\n (p2.z - p1.z) * (p2.z - p1.z)\n ),\n };\n }\n\n /**\n * Gets the position of the point, given time.\n *\n * WARNING: The speed is not constant. The time it takes between control points is constant.\n *\n * For constant speed, use Spline.steps[i];\n */\n public pos(time: number) {\n let t = time - this.delay;\n if (t < 0) {\n t = 0;\n }\n if (t > this.duration) {\n t = this.duration - 1;\n }\n // t = t-this.delay;\n const t2 = t / this.duration;\n if (t2 >= 1) {\n return this.points[this.length - 1];\n }\n\n const n = Math.floor((this.points.length - 1) * t2);\n const t1 = (this.length - 1) * t2 - n;\n return bezier(\n t1,\n this.points[n],\n this.controls[n][1],\n this.controls[n + 1][0],\n this.points[n + 1]\n );\n }\n}\n\nfunction bezier(t: number, p1: Point, c1: Point, c2: Point, p2: Point) {\n const b = B(t);\n const pos = {\n x: p2.x * b[0] + c2.x * b[1] + c1.x * b[2] + p1.x * b[3],\n y: p2.y * b[0] + c2.y * b[1] + c1.y * b[2] + p1.y * b[3],\n z: p2.z * b[0] + c2.z * b[1] + c1.z * b[2] + p1.z * b[3],\n };\n return pos;\n}\nfunction B(t: number) {\n const t2 = t * t;\n const t3 = t2 * t;\n return [\n t3,\n 3 * t2 * (1 - t),\n 3 * t * (1 - t) * (1 - t),\n (1 - t) * (1 - t) * (1 - t),\n ];\n}\n\nexport { Spline, Point };\nexport default Spline;\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@turf/bezier-spline",
3
- "version": "7.1.0",
3
+ "version": "7.2.0",
4
4
  "description": "turf bezier-spline module",
5
5
  "author": "Turf Authors",
6
6
  "license": "MIT",
@@ -53,21 +53,21 @@
53
53
  },
54
54
  "devDependencies": {
55
55
  "@types/benchmark": "^2.1.5",
56
- "@types/tape": "^4.2.32",
56
+ "@types/tape": "^4.13.4",
57
57
  "benchmark": "^2.1.4",
58
58
  "load-json-file": "^7.0.1",
59
59
  "npm-run-all": "^4.1.5",
60
- "tape": "^5.7.2",
61
- "tsup": "^8.0.1",
62
- "tsx": "^4.6.2",
63
- "typescript": "^5.2.2",
60
+ "tape": "^5.9.0",
61
+ "tsup": "^8.3.5",
62
+ "tsx": "^4.19.2",
63
+ "typescript": "^5.5.4",
64
64
  "write-json-file": "^5.0.0"
65
65
  },
66
66
  "dependencies": {
67
- "@turf/helpers": "^7.1.0",
68
- "@turf/invariant": "^7.1.0",
67
+ "@turf/helpers": "^7.2.0",
68
+ "@turf/invariant": "^7.2.0",
69
69
  "@types/geojson": "^7946.0.10",
70
- "tslib": "^2.6.2"
70
+ "tslib": "^2.8.1"
71
71
  },
72
- "gitHead": "68915eeebc9278bb40dec3f1034499698a0561ef"
72
+ "gitHead": "7b0f0374c4668cd569f8904c71e2ae7d941be867"
73
73
  }