@undp/data-viz 2.2.3 → 2.3.1

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 (60) hide show
  1. package/dist/BiVariateChoroplethMap.cjs +1 -1
  2. package/dist/BiVariateChoroplethMap.cjs.map +1 -1
  3. package/dist/BiVariateChoroplethMap.d.ts +4 -0
  4. package/dist/BiVariateChoroplethMap.js +328 -401
  5. package/dist/BiVariateChoroplethMap.js.map +1 -1
  6. package/dist/ChoroplethMap.cjs +1 -1
  7. package/dist/ChoroplethMap.cjs.map +1 -1
  8. package/dist/ChoroplethMap.d.ts +4 -0
  9. package/dist/ChoroplethMap.js +341 -416
  10. package/dist/ChoroplethMap.js.map +1 -1
  11. package/dist/Data/01.json +4042 -0
  12. package/dist/Data/mapData.json +4543 -0
  13. package/dist/Data/testMap.json +361 -0
  14. package/dist/DotDensityMap.cjs +1 -1
  15. package/dist/DotDensityMap.cjs.map +1 -1
  16. package/dist/DotDensityMap.d.ts +4 -0
  17. package/dist/DotDensityMap.js +297 -311
  18. package/dist/DotDensityMap.js.map +1 -1
  19. package/dist/{GraphEl-C1Rz1V__.js → GraphEl-L5hNe7wJ.js} +25 -17
  20. package/dist/GraphEl-L5hNe7wJ.js.map +1 -0
  21. package/dist/GraphEl-ic8C5Ksc.cjs +2 -0
  22. package/dist/GraphEl-ic8C5Ksc.cjs.map +1 -0
  23. package/dist/GriddedGraphs.cjs +1 -1
  24. package/dist/GriddedGraphs.d.ts +2 -0
  25. package/dist/GriddedGraphs.js +1 -1
  26. package/dist/GriddedGraphsFromConfig.d.ts +2 -0
  27. package/dist/HybridMap.cjs +1 -1
  28. package/dist/HybridMap.cjs.map +1 -1
  29. package/dist/HybridMap.d.ts +4 -0
  30. package/dist/HybridMap.js +398 -445
  31. package/dist/HybridMap.js.map +1 -1
  32. package/dist/MultiGraphDashboard.d.ts +2 -0
  33. package/dist/MultiGraphDashboardFromConfig.d.ts +2 -0
  34. package/dist/PerformanceIntensiveMultiGraphDashboard.d.ts +2 -0
  35. package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.d.ts +2 -0
  36. package/dist/PerformanceIntensiveScrollStory.d.ts +2 -0
  37. package/dist/ScrollStory.d.ts +2 -0
  38. package/dist/SingleGraphDashboard.cjs +1 -1
  39. package/dist/SingleGraphDashboard.d.ts +2 -0
  40. package/dist/SingleGraphDashboard.js +1 -1
  41. package/dist/SingleGraphDashboardFromConfig.d.ts +2 -0
  42. package/dist/SingleGraphDashboardGeoHubMaps.d.ts +2 -0
  43. package/dist/SingleGraphDashboardGeoHubMapsFromConfig.d.ts +2 -0
  44. package/dist/SingleGraphDashboardThreeDGraphs.d.ts +2 -0
  45. package/dist/SingleGraphDashboardThreeDGraphsFromConfig.d.ts +2 -0
  46. package/dist/Types.d.ts +2 -0
  47. package/dist/index-DLFt97gy.cjs +2 -0
  48. package/dist/index-DLFt97gy.cjs.map +1 -0
  49. package/dist/index-Dp_SfsUA.js +2344 -0
  50. package/dist/index-Dp_SfsUA.js.map +1 -0
  51. package/dist/index.d.ts +18 -0
  52. package/package.json +2 -1
  53. package/readme.md +0 -7
  54. package/dist/GraphEl-BZbunD1_.cjs +0 -2
  55. package/dist/GraphEl-BZbunD1_.cjs.map +0 -1
  56. package/dist/GraphEl-C1Rz1V__.js.map +0 -1
  57. package/dist/zoom-5AkJSuWO.js +0 -1864
  58. package/dist/zoom-5AkJSuWO.js.map +0 -1
  59. package/dist/zoom-ChcvXFIz.cjs +0 -2
  60. package/dist/zoom-ChcvXFIz.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-Dp_SfsUA.js","sources":["../node_modules/d3-array/src/fsum.js","../node_modules/d3-array/src/merge.js","../node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/d3-interpolate/src/transform/parse.js","../node_modules/d3-interpolate/src/transform/index.js","../node_modules/d3-interpolate/src/zoom.js","../node_modules/d3-timer/src/timeout.js","../node_modules/@turf/bbox/dist/esm/index.js","../node_modules/d3-geo/src/math.js","../node_modules/d3-geo/src/noop.js","../node_modules/d3-geo/src/stream.js","../node_modules/d3-geo/src/cartesian.js","../node_modules/d3-geo/src/compose.js","../node_modules/d3-geo/src/rotation.js","../node_modules/d3-geo/src/circle.js","../node_modules/d3-geo/src/clip/buffer.js","../node_modules/d3-geo/src/pointEqual.js","../node_modules/d3-geo/src/clip/rejoin.js","../node_modules/d3-geo/src/polygonContains.js","../node_modules/d3-geo/src/clip/index.js","../node_modules/d3-geo/src/clip/antimeridian.js","../node_modules/d3-geo/src/clip/circle.js","../node_modules/d3-geo/src/clip/line.js","../node_modules/d3-geo/src/clip/rectangle.js","../node_modules/d3-geo/src/identity.js","../node_modules/d3-geo/src/path/area.js","../node_modules/d3-geo/src/path/bounds.js","../node_modules/d3-geo/src/path/centroid.js","../node_modules/d3-geo/src/path/context.js","../node_modules/d3-geo/src/path/measure.js","../node_modules/d3-geo/src/path/string.js","../node_modules/d3-geo/src/path/index.js","../node_modules/d3-geo/src/transform.js","../node_modules/d3-geo/src/projection/fit.js","../node_modules/d3-geo/src/projection/resample.js","../node_modules/d3-geo/src/projection/index.js","../node_modules/d3-geo/src/projection/conic.js","../node_modules/d3-geo/src/projection/cylindricalEqualArea.js","../node_modules/d3-geo/src/projection/conicEqualArea.js","../node_modules/d3-geo/src/projection/albers.js","../node_modules/d3-geo/src/projection/albersUsa.js","../node_modules/d3-geo/src/projection/azimuthal.js","../node_modules/d3-geo/src/projection/mercator.js","../node_modules/d3-geo/src/projection/equalEarth.js","../node_modules/d3-geo/src/projection/naturalEarth1.js","../node_modules/d3-geo/src/projection/orthographic.js","../node_modules/d3-drag/src/noevent.js","../node_modules/d3-drag/src/nodrag.js","../node_modules/d3-transition/src/transition/schedule.js","../node_modules/d3-transition/src/interrupt.js","../node_modules/d3-transition/src/selection/interrupt.js","../node_modules/d3-transition/src/transition/tween.js","../node_modules/d3-transition/src/transition/interpolate.js","../node_modules/d3-transition/src/transition/attr.js","../node_modules/d3-transition/src/transition/attrTween.js","../node_modules/d3-transition/src/transition/delay.js","../node_modules/d3-transition/src/transition/duration.js","../node_modules/d3-transition/src/transition/ease.js","../node_modules/d3-transition/src/transition/easeVarying.js","../node_modules/d3-transition/src/transition/filter.js","../node_modules/d3-transition/src/transition/merge.js","../node_modules/d3-transition/src/transition/on.js","../node_modules/d3-transition/src/transition/remove.js","../node_modules/d3-transition/src/transition/select.js","../node_modules/d3-transition/src/transition/selectAll.js","../node_modules/d3-transition/src/transition/selection.js","../node_modules/d3-transition/src/transition/style.js","../node_modules/d3-transition/src/transition/styleTween.js","../node_modules/d3-transition/src/transition/text.js","../node_modules/d3-transition/src/transition/textTween.js","../node_modules/d3-transition/src/transition/transition.js","../node_modules/d3-transition/src/transition/end.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-transition/src/selection/transition.js","../node_modules/d3-transition/src/selection/index.js","../node_modules/d3-zoom/src/constant.js","../node_modules/d3-zoom/src/event.js","../node_modules/d3-zoom/src/transform.js","../node_modules/d3-zoom/src/noevent.js","../node_modules/d3-zoom/src/zoom.js","../node_modules/@turf/clone/dist/esm/index.js","../node_modules/@turf/boolean-clockwise/node_modules/@turf/invariant/dist/esm/index.js","../node_modules/@turf/boolean-clockwise/dist/esm/index.js","../node_modules/@turf/rewind/node_modules/@turf/helpers/dist/esm/index.js","../node_modules/@turf/rewind/node_modules/@turf/meta/dist/esm/index.js","../node_modules/@turf/rewind/node_modules/@turf/invariant/dist/esm/index.js","../node_modules/@turf/rewind/dist/esm/index.js"],"sourcesContent":["// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n","function* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nexport default function merge(arrays) {\n return Array.from(flatten(arrays));\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","// index.ts\nimport { coordEach } from \"@turf/meta\";\nfunction bbox(geojson, options = {}) {\n if (geojson.bbox != null && true !== options.recompute) {\n return geojson.bbox;\n }\n const result = [Infinity, Infinity, -Infinity, -Infinity];\n coordEach(geojson, (coord) => {\n if (result[0] > coord[0]) {\n result[0] = coord[0];\n }\n if (result[1] > coord[1]) {\n result[1] = coord[1];\n }\n if (result[2] < coord[0]) {\n result[2] = coord[0];\n }\n if (result[3] < coord[1]) {\n result[3] = coord[1];\n }\n });\n return result;\n}\nvar index_default = bbox;\nexport {\n bbox,\n index_default as default\n};\n//# sourceMappingURL=index.js.map","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n lambda += deltaLambda;\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(2),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import {Adder} from \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n var sum = new Adder();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 2 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","export default x => x;\n","import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n areaRingSum = new Adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum = new Adder();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum = new Adder();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum = new Adder();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","// Simple caching for constant-radius points.\nlet cacheDigits, cacheAppend, cacheRadius, cacheCircle;\n\nexport default class PathString {\n constructor(digits) {\n this._append = digits == null ? append : appendRound(digits);\n this._radius = 4.5;\n this._ = \"\";\n }\n pointRadius(_) {\n this._radius = +_;\n return this;\n }\n polygonStart() {\n this._line = 0;\n }\n polygonEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line === 0) this._ += \"Z\";\n this._point = NaN;\n }\n point(x, y) {\n switch (this._point) {\n case 0: {\n this._append`M${x},${y}`;\n this._point = 1;\n break;\n }\n case 1: {\n this._append`L${x},${y}`;\n break;\n }\n default: {\n this._append`M${x},${y}`;\n if (this._radius !== cacheRadius || this._append !== cacheAppend) {\n const r = this._radius;\n const s = this._;\n this._ = \"\"; // stash the old string so we can cache the circle path fragment\n this._append`m0,${r}a${r},${r} 0 1,1 0,${-2 * r}a${r},${r} 0 1,1 0,${2 * r}z`;\n cacheRadius = r;\n cacheAppend = this._append;\n cacheCircle = this._;\n this._ = s;\n }\n this._ += cacheCircle;\n break;\n }\n }\n }\n result() {\n const result = this._;\n this._ = \"\";\n return result.length ? result : null;\n }\n}\n\nfunction append(strings) {\n let i = 1;\n this._ += strings[0];\n for (const j = strings.length; i < j; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n const d = Math.floor(digits);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${digits}`);\n if (d > 15) return append;\n if (d !== cacheDigits) {\n const k = 10 ** d;\n cacheDigits = d;\n cacheAppend = function append(strings) {\n let i = 1;\n this._ += strings[0];\n for (const j = strings.length; i < j; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n }\n return cacheAppend;\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n let digits = 3,\n pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream;\n return path;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n path.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) digits = null;\n else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n if (context === null) contextStream = new PathString(digits);\n return path;\n };\n\n return path.projection(projection).digits(digits).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs(r0y)) * sign(r0y);\n if (r0y * n < 0)\n l -= pi * sign(x) * sign(r0y);\n return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n if (k === Infinity) return [2, 0];\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","// index.ts\nfunction clone(geojson) {\n if (!geojson) {\n throw new Error(\"geojson is required\");\n }\n switch (geojson.type) {\n case \"Feature\":\n return cloneFeature(geojson);\n case \"FeatureCollection\":\n return cloneFeatureCollection(geojson);\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n case \"MultiPoint\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n case \"GeometryCollection\":\n return cloneGeometry(geojson);\n default:\n throw new Error(\"unknown GeoJSON type\");\n }\n}\nfunction cloneFeature(geojson) {\n const cloned = { type: \"Feature\" };\n Object.keys(geojson).forEach((key) => {\n switch (key) {\n case \"type\":\n case \"properties\":\n case \"geometry\":\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n cloned.properties = cloneProperties(geojson.properties);\n if (geojson.geometry == null) {\n cloned.geometry = null;\n } else {\n cloned.geometry = cloneGeometry(geojson.geometry);\n }\n return cloned;\n}\nfunction cloneProperties(properties) {\n const cloned = {};\n if (!properties) {\n return cloned;\n }\n Object.keys(properties).forEach((key) => {\n const value = properties[key];\n if (typeof value === \"object\") {\n if (value === null) {\n cloned[key] = null;\n } else if (Array.isArray(value)) {\n cloned[key] = value.map((item) => {\n return item;\n });\n } else {\n cloned[key] = cloneProperties(value);\n }\n } else {\n cloned[key] = value;\n }\n });\n return cloned;\n}\nfunction cloneFeatureCollection(geojson) {\n const cloned = { type: \"FeatureCollection\" };\n Object.keys(geojson).forEach((key) => {\n switch (key) {\n case \"type\":\n case \"features\":\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n cloned.features = geojson.features.map((feature) => {\n return cloneFeature(feature);\n });\n return cloned;\n}\nfunction cloneGeometry(geometry) {\n const geom = { type: geometry.type };\n if (geometry.bbox) {\n geom.bbox = geometry.bbox;\n }\n if (geometry.type === \"GeometryCollection\") {\n geom.geometries = geometry.geometries.map((g) => {\n return cloneGeometry(g);\n });\n return geom;\n }\n geom.coordinates = deepSlice(geometry.coordinates);\n return geom;\n}\nfunction deepSlice(coords) {\n const cloned = coords;\n if (typeof cloned[0] !== \"object\") {\n return cloned.slice();\n }\n return cloned.map((coord) => {\n return deepSlice(coord);\n });\n}\nvar index_default = clone;\nexport {\n clone,\n cloneProperties,\n index_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { isNumber } from \"@turf/helpers\";\nfunction getCoord(coord) {\n if (!coord) {\n throw new Error(\"coord is required\");\n }\n if (!Array.isArray(coord)) {\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") {\n return [...coord.geometry.coordinates];\n }\n if (coord.type === \"Point\") {\n return [...coord.coordinates];\n }\n }\n if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) {\n return [...coord];\n }\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nfunction getCoords(coords) {\n if (Array.isArray(coords)) {\n return coords;\n }\n if (coords.type === \"Feature\") {\n if (coords.geometry !== null) {\n return coords.geometry.coordinates;\n }\n } else {\n if (coords.coordinates) {\n return coords.coordinates;\n }\n }\n throw new Error(\n \"coords must be GeoJSON Feature, Geometry Object or an Array\"\n );\n}\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error(\"coordinates must only contain numbers\");\n}\nfunction geojsonType(value, type, name) {\n if (!type || !name) {\n throw new Error(\"type and name required\");\n }\n if (!value || value.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type\n );\n }\n}\nfunction featureOf(feature, type, name) {\n if (!feature) {\n throw new Error(\"No feature passed\");\n }\n if (!name) {\n throw new Error(\".featureOf() requires a name\");\n }\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\n \"Invalid input to \" + name + \", Feature with geometry required\"\n );\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type\n );\n }\n}\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) {\n throw new Error(\"No featureCollection passed\");\n }\n if (!name) {\n throw new Error(\".collectionOf() requires a name\");\n }\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n throw new Error(\n \"Invalid input to \" + name + \", FeatureCollection required\"\n );\n }\n for (const feature of featureCollection.features) {\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\n \"Invalid input to \" + name + \", Feature with geometry required\"\n );\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type\n );\n }\n }\n}\nfunction getGeom(geojson) {\n if (geojson.type === \"Feature\") {\n return geojson.geometry;\n }\n return geojson;\n}\nfunction getType(geojson, _name) {\n if (geojson.type === \"FeatureCollection\") {\n return \"FeatureCollection\";\n }\n if (geojson.type === \"GeometryCollection\") {\n return \"GeometryCollection\";\n }\n if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n return geojson.geometry.type;\n }\n return geojson.type;\n}\nexport {\n collectionOf,\n containsNumber,\n featureOf,\n geojsonType,\n getCoord,\n getCoords,\n getGeom,\n getType\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { getCoords } from \"@turf/invariant\";\nfunction booleanClockwise(line) {\n const ring = getCoords(line);\n let sum = 0;\n let i = 1;\n let prev;\n let cur;\n while (i < ring.length) {\n prev = cur || ring[0];\n cur = ring[i];\n sum += (cur[0] - prev[0]) * (cur[1] + prev[1]);\n i++;\n }\n return sum > 0;\n}\nvar index_default = booleanClockwise;\nexport {\n booleanClockwise,\n index_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nvar earthRadius = 63710088e-1;\nvar factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: 360 / (2 * Math.PI),\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1e3,\n kilometres: earthRadius / 1e3,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1e3,\n millimetres: earthRadius * 1e3,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936\n};\nvar areaFactors = {\n acres: 247105e-9,\n centimeters: 1e4,\n centimetres: 1e4,\n feet: 10.763910417,\n hectares: 1e-4,\n inches: 1550.003100006,\n kilometers: 1e-6,\n kilometres: 1e-6,\n meters: 1,\n metres: 1,\n miles: 386e-9,\n nauticalmiles: 29155334959812285e-23,\n millimeters: 1e6,\n millimetres: 1e6,\n yards: 1.195990046\n};\nfunction feature(geom, properties, options = {}) {\n const feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nfunction geometry(type, coordinates, _options = {}) {\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\nfunction point(coordinates, properties, options = {}) {\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n const geom = {\n type: \"Point\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction points(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return point(coords, properties);\n }),\n options\n );\n}\nfunction polygon(coordinates, properties, options = {}) {\n for (const ring of coordinates) {\n if (ring.length < 4) {\n throw new Error(\n \"Each LinearRing of a Polygon must have 4 or more Positions.\"\n );\n }\n if (ring[ring.length - 1].length !== ring[0].length) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n for (let j = 0; j < ring[ring.length - 1].length; j++) {\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n const geom = {\n type: \"Polygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction polygons(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return polygon(coords, properties);\n }),\n options\n );\n}\nfunction lineString(coordinates, properties, options = {}) {\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n const geom = {\n type: \"LineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction lineStrings(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return lineString(coords, properties);\n }),\n options\n );\n}\nfunction featureCollection(features, options = {}) {\n const fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nfunction multiLineString(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiLineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPoint(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPoint\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPolygon(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPolygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction geometryCollection(geometries, properties, options = {}) {\n const geom = {\n type: \"GeometryCollection\",\n geometries\n };\n return feature(geom, properties, options);\n}\nfunction round(num, precision = 0) {\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nfunction radiansToLength(radians, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\nfunction lengthToRadians(distance, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\nfunction bearingToAzimuth(bearing) {\n let angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nfunction azimuthToBearing(angle) {\n angle = angle % 360;\n if (angle > 180) {\n return angle - 360;\n } else if (angle < -180) {\n return angle + 360;\n }\n return angle;\n}\nfunction radiansToDegrees(radians) {\n const normalisedRadians = radians % (2 * Math.PI);\n return normalisedRadians * 180 / Math.PI;\n}\nfunction degreesToRadians(degrees) {\n const normalisedDegrees = degrees % 360;\n return normalisedDegrees * Math.PI / 180;\n}\nfunction convertLength(length, originalUnit = \"kilometers\", finalUnit = \"kilometers\") {\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nfunction convertArea(area, originalUnit = \"meters\", finalUnit = \"kilometers\") {\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n const startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n const finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return area / startFactor * finalFactor;\n}\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nfunction isObject(input) {\n return input !== null && typeof input === \"object\" && !Array.isArray(input);\n}\nfunction validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach((num) => {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\nfunction validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\nexport {\n areaFactors,\n azimuthToBearing,\n bearingToAzimuth,\n convertArea,\n convertLength,\n degreesToRadians,\n earthRadius,\n factors,\n feature,\n featureCollection,\n geometry,\n geometryCollection,\n isNumber,\n isObject,\n lengthToDegrees,\n lengthToRadians,\n lineString,\n lineStrings,\n multiLineString,\n multiPoint,\n multiPolygon,\n point,\n points,\n polygon,\n polygons,\n radiansToDegrees,\n radiansToLength,\n round,\n validateBBox,\n validateId\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { feature, point, lineString, isObject } from \"@turf/helpers\";\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection ? (\n // @ts-expect-error: Known type conflict\n geojson.features[featureIndex].geometry\n ) : isFeature ? (\n // @ts-expect-error: Known type conflict\n geojson.geometry\n ) : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (\n // @ts-expect-error: Known type conflict\n callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (\n // @ts-expect-error: Known type conflict\n callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (\n // @ts-expect-error: Known type conflict\n callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (\n // @ts-expect-error: Known type conflict\n callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (\n // @ts-expect-error: Known type conflict\n coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false\n )\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(\n geojson,\n function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === void 0)\n previousValue = currentCoord;\n else\n previousValue = callback(\n // @ts-expect-error: Known type conflict\n previousValue,\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n },\n excludeWrapCoord\n );\n return previousValue;\n}\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case \"FeatureCollection\":\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentProperties;\n else\n previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\nfunction featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") {\n callback(geojson, 0);\n } else if (geojson.type === \"FeatureCollection\") {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection ? (\n // @ts-expect-error: Known type conflict\n geojson.features[i].geometry\n ) : isFeature ? (\n // @ts-expect-error: Known type conflict\n geojson.geometry\n ) : geojson;\n featureProperties = isFeatureCollection ? (\n // @ts-expect-error: Known type conflict\n geojson.features[i].properties\n ) : isFeature ? (\n // @ts-expect-error: Known type conflict\n geojson.properties\n ) : {};\n featureBBox = isFeatureCollection ? (\n // @ts-expect-error: Known type conflict\n geojson.features[i].bbox\n ) : isFeature ? (\n // @ts-expect-error: Known type conflict\n geojson.bbox\n ) : void 0;\n featureId = isFeatureCollection ? (\n // @ts-expect-error: Known type conflict\n geojson.features[i].id\n ) : isFeature ? (\n // @ts-expect-error: Known type conflict\n geojson.id\n ) : void 0;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n if (geometry === null) {\n if (\n // @ts-expect-error: Known type conflict\n callback(\n // @ts-expect-error: Known type conflict\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (\n // @ts-expect-error: Known type conflict\n callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (\n // @ts-expect-error: Known type conflict\n callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n featureIndex++;\n }\n}\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(\n geojson,\n function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentGeometry;\n else\n previousValue = callback(\n // @ts-expect-error: Known type conflict\n previousValue,\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n );\n }\n );\n return previousValue;\n}\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function(geometry, featureIndex, properties, bbox, id) {\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (\n // @ts-expect-error: Known type conflict\n callback(\n feature(geometry, properties, { bbox, id }),\n featureIndex,\n 0\n ) === false\n )\n return false;\n return;\n }\n var geomType;\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for (\n var multiFeatureIndex = 0;\n // @ts-expect-error: Known type conflict\n multiFeatureIndex < geometry.coordinates.length;\n multiFeatureIndex++\n ) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (\n // @ts-expect-error: Known type conflict\n callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false\n )\n return false;\n }\n });\n}\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(\n geojson,\n function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(\n // @ts-expect-error: Known type conflict\n previousValue,\n currentFeature,\n featureIndex,\n multiFeatureIndex\n );\n }\n );\n return previousValue;\n}\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n if (!feature2.geometry) return;\n var type = feature2.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (\n // @ts-expect-error: Known type conflict\n coordEach(\n feature2,\n function(currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n if (\n // @ts-expect-error: Known type conflict\n previousCoords === void 0 || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex\n ) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = lineString(\n // @ts-expect-error: Known type conflict\n [previousCoords, currentCoord],\n feature2.properties\n );\n if (\n // @ts-expect-error: Known type conflict\n callback(\n // @ts-expect-error: Known type conflict\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) === false\n )\n return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }\n ) === false\n )\n return false;\n });\n}\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(\n geojson,\n function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === void 0)\n previousValue = currentSegment;\n else\n previousValue = callback(\n previousValue,\n // @ts-expect-error: Known type conflict\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n );\n started = true;\n }\n );\n return previousValue;\n}\nfunction lineEach(geojson, callback) {\n if (!geojson) throw new Error(\"geojson is required\");\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n if (feature2.geometry === null) return;\n var type = feature2.geometry.type;\n var coords = feature2.geometry.coordinates;\n switch (type) {\n case \"LineString\":\n if (callback(feature2, featureIndex, multiFeatureIndex, 0, 0) === false)\n return false;\n break;\n case \"Polygon\":\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (\n // @ts-expect-error: Known type conflict\n callback(\n // @ts-expect-error: Known type conflict\n lineString(coords[geometryIndex], feature2.properties),\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n }\n break;\n }\n });\n}\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(\n geojson,\n function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentLine;\n else\n previousValue = callback(\n previousValue,\n currentLine,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n }\n );\n return previousValue;\n}\nfunction findSegment(geojson, options) {\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString(\n // @ts-expect-error: Known type conflict\n [coords[segmentIndex], coords[segmentIndex + 1]],\n properties,\n options\n );\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString(\n [\n // @ts-expect-error: Known type conflict\n coords[geometryIndex][segmentIndex],\n // @ts-expect-error: Known type conflict\n coords[geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString(\n [\n // @ts-expect-error: Known type conflict\n coords[multiFeatureIndex][segmentIndex],\n // @ts-expect-error: Known type conflict\n coords[multiFeatureIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = // @ts-expect-error: Known type conflict\n coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString(\n [\n // @ts-expect-error: Known type conflict\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n // @ts-expect-error: Known type conflict\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nfunction findPoint(geojson, options) {\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n return point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(\n coords[multiFeatureIndex][geometryIndex][coordIndex],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nexport {\n coordAll,\n coordEach,\n coordReduce,\n featureEach,\n featureReduce,\n findPoint,\n findSegment,\n flattenEach,\n flattenReduce,\n geomEach,\n geomReduce,\n lineEach,\n lineReduce,\n propEach,\n propReduce,\n segmentEach,\n segmentReduce\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { isNumber } from \"@turf/helpers\";\nfunction getCoord(coord) {\n if (!coord) {\n throw new Error(\"coord is required\");\n }\n if (!Array.isArray(coord)) {\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") {\n return [...coord.geometry.coordinates];\n }\n if (coord.type === \"Point\") {\n return [...coord.coordinates];\n }\n }\n if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) {\n return [...coord];\n }\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nfunction getCoords(coords) {\n if (Array.isArray(coords)) {\n return coords;\n }\n if (coords.type === \"Feature\") {\n if (coords.geometry !== null) {\n return coords.geometry.coordinates;\n }\n } else {\n if (coords.coordinates) {\n return coords.coordinates;\n }\n }\n throw new Error(\n \"coords must be GeoJSON Feature, Geometry Object or an Array\"\n );\n}\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error(\"coordinates must only contain numbers\");\n}\nfunction geojsonType(value, type, name) {\n if (!type || !name) {\n throw new Error(\"type and name required\");\n }\n if (!value || value.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type\n );\n }\n}\nfunction featureOf(feature, type, name) {\n if (!feature) {\n throw new Error(\"No feature passed\");\n }\n if (!name) {\n throw new Error(\".featureOf() requires a name\");\n }\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\n \"Invalid input to \" + name + \", Feature with geometry required\"\n );\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type\n );\n }\n}\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) {\n throw new Error(\"No featureCollection passed\");\n }\n if (!name) {\n throw new Error(\".collectionOf() requires a name\");\n }\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n throw new Error(\n \"Invalid input to \" + name + \", FeatureCollection required\"\n );\n }\n for (const feature of featureCollection.features) {\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\n \"Invalid input to \" + name + \", Feature with geometry required\"\n );\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type\n );\n }\n }\n}\nfunction getGeom(geojson) {\n if (geojson.type === \"Feature\") {\n return geojson.geometry;\n }\n return geojson;\n}\nfunction getType(geojson, _name) {\n if (geojson.type === \"FeatureCollection\") {\n return \"FeatureCollection\";\n }\n if (geojson.type === \"GeometryCollection\") {\n return \"GeometryCollection\";\n }\n if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n return geojson.geometry.type;\n }\n return geojson.type;\n}\nexport {\n collectionOf,\n containsNumber,\n featureOf,\n geojsonType,\n getCoord,\n getCoords,\n getGeom,\n getType\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { clone } from \"@turf/clone\";\nimport { booleanClockwise } from \"@turf/boolean-clockwise\";\nimport { geomEach, featureEach } from \"@turf/meta\";\nimport { getCoords } from \"@turf/invariant\";\nimport { featureCollection, isObject } from \"@turf/helpers\";\nfunction rewind(geojson, options = {}) {\n var _a, _b;\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n const mutate = (_a = options.mutate) != null ? _a : false;\n const reverse = (_b = options.reverse) != null ? _b : false;\n if (!geojson) throw new Error(\"<geojson> is required\");\n if (typeof reverse !== \"boolean\")\n throw new Error(\"<reverse> must be a boolean\");\n if (typeof mutate !== \"boolean\")\n throw new Error(\"<mutate> must be a boolean\");\n if (!mutate && geojson.type !== \"Point\" && geojson.type !== \"MultiPoint\") {\n geojson = clone(geojson);\n }\n const results = [];\n switch (geojson.type) {\n case \"GeometryCollection\":\n geomEach(geojson, function(geometry) {\n rewindFeature(geometry, reverse);\n });\n return geojson;\n case \"FeatureCollection\":\n featureEach(geojson, function(feature) {\n const rewoundFeature = rewindFeature(feature, reverse);\n featureEach(rewoundFeature, function(result) {\n results.push(result);\n });\n });\n return featureCollection(results);\n }\n return rewindFeature(geojson, reverse);\n}\nfunction rewindFeature(geojson, reverse) {\n const type = geojson.type === \"Feature\" ? geojson.geometry.type : geojson.type;\n switch (type) {\n case \"GeometryCollection\":\n geomEach(geojson, function(geometry) {\n rewindFeature(geometry, reverse);\n });\n return geojson;\n case \"LineString\":\n rewindLineString(getCoords(geojson), reverse);\n return geojson;\n case \"Polygon\":\n rewindPolygon(getCoords(geojson), reverse);\n return geojson;\n case \"MultiLineString\":\n getCoords(geojson).forEach(function(lineCoords) {\n rewindLineString(lineCoords, reverse);\n });\n return geojson;\n case \"MultiPolygon\":\n getCoords(geojson).forEach(function(lineCoords) {\n rewindPolygon(lineCoords, reverse);\n });\n return geojson;\n case \"Point\":\n case \"MultiPoint\":\n return geojson;\n }\n}\nfunction rewindLineString(coords, reverse) {\n if (booleanClockwise(coords) === reverse) coords.reverse();\n}\nfunction rewindPolygon(coords, reverse) {\n if (booleanClockwise(coords[0]) !== reverse) {\n coords[0].reverse();\n }\n for (let i = 1; i < coords.length; i++) {\n if (booleanClockwise(coords[i]) === reverse) {\n coords[i].reverse();\n }\n }\n}\nvar index_default = rewind;\nexport {\n index_default as default,\n rewind\n};\n//# sourceMappingURL=index.js.map"],"names":["Adder","x","p","j","y","hi","lo","n","flatten","arrays","array","merge","degrees","identity","decompose","a","b","c","d","e","f","scaleX","scaleY","skewX","svgNode","parseCss","value","m","parseSvg","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","s","q","i","number","rotate","scale","t","o","interpolateTransformCss","interpolateTransformSvg","epsilon2","cosh","sinh","tanh","interpolateZoom","zoomRho","rho","rho2","rho4","zoom","p0","p1","ux0","uy0","w0","ux1","uy1","w1","dx","dy","d2","S","d1","b0","b1","r0","r1","coshr0","u","_","_1","_2","_4","timeout","callback","delay","time","Timer","elapsed","bbox","geojson","options","result","coordEach","coord","index_default","epsilon","pi","halfPi","quarterPi","tau","radians","abs","atan","atan2","cos","exp","log","sin","sign","sqrt","tan","acos","asin","noop","streamGeometry","geometry","stream","streamGeometryType","streamObjectType","object","features","coordinates","streamLine","streamPolygon","geometries","closed","coordinate","geoStream","spherical","cartesian","lambda","phi","cosPhi","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","k","cartesianNormalizeInPlace","l","compose","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","z","forward","circleStream","radius","delta","direction","t0","t1","cosRadius","sinRadius","step","circleRadius","point","clipBuffer","lines","line","pointEqual","Intersection","points","other","entry","clipRejoin","segments","compareIntersection","startInside","interpolate","subject","clip","segment","link","start","current","isSubject","longitude","polygonContains","polygon","sinPhi","normal","angle","winding","sum","ring","point0","lambda0","phi0","sinPhi0","cosPhi0","lambda1","sinPhi1","cosPhi1","point1","phi1","absDelta","antimeridian","arc","intersection","phiArc","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","lineStart","lineEnd","pointRing","ringStart","ringEnd","pointLine","clean","ringSegments","validSegment","clipAntimeridian","clipAntimeridianLine","clipAntimeridianInterpolate","sign0","sign1","clipAntimeridianIntersect","sinLambda0Lambda1","from","to","clipCircle","cr","smallRadius","notHemisphere","visible","c0","v0","v00","point2","v","code","intersect","two","pa","pb","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","A","B","w","uu","t2","polar","meridian","q1","r","x0","y0","x1","y1","ax","ay","bx","by","clipMax","clipMin","clipRectangle","a1","corner","comparePoint","ca","cb","activeStream","bufferStream","x__","y__","v__","x_","y_","v_","first","clipStream","polygonStart","polygonEnd","polygonInside","a0","cleanInside","linePoint","identity$1","areaSum","areaRingSum","x00","y00","areaStream","areaRingStart","areaRingEnd","area","areaPointFirst","areaPoint","boundsStream","boundsPoint","bounds","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","context","lengthSum","lengthRing","lengthStream","lengthPointFirst","lengthPoint","length","cacheDigits","cacheAppend","cacheRadius","cacheCircle","PathString","digits","append","appendRound","strings","geoPath","projection","pointRadius","projectionStream","contextStream","path","pathArea","pathMeasure","pathBounds","pathCentroid","transformer","methods","TransformStream","key","fit","fitBounds","fitExtent","extent","h","fitSize","size","fitWidth","width","fitHeight","height","maxDepth","cosMinDistance","resample","project","delta2","resampleNone","resampleLineTo","depth","phi2","lambda2","x2","y2","dx2","dy2","dz","lambda00","a00","b00","c00","resampleStream","ringPoint","transformRadians","transformRotate","scaleTranslate","sx","sy","transform","scaleTranslateRotate","alpha","cosAlpha","sinAlpha","ai","bi","ci","fi","projectionMutator","projectAt","theta","preclip","postclip","projectResample","projectTransform","projectRotateTransform","cache","cacheStream","invert","reset","recenter","center","conicProjection","cylindricalEqualAreaRaw","conicEqualAreaRaw","sy0","r0y","conicEqualArea","albers","multiplex","streams","geoAlbersUsa","lower48","lower48Point","alaska","alaskaPoint","hawaii","hawaiiPoint","pointStream","albersUsa","azimuthalInvert","sc","cc","mercatorRaw","geoMercator","mercatorProjection","clipExtent","reclip","A1","A2","A3","A4","M","iterations","equalEarthRaw","l2","l6","fy","fpy","geoEqualEarth","naturalEarth1Raw","phi4","geoNaturalEarth1","orthographicRaw","geoOrthographic","nonpassivecapture","noevent$1","event","dragDisable","view","root","selection","select","noevent","yesdrag","noclick","emptyOn","dispatch","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","node","name","id","index","group","timing","schedules","create","init","get","set","self","tween","timer","stop","tick","interrupt","active","empty","selection_interrupt","tweenRemove","tween0","tween1","tweenFunction","transition_tween","tweenValue","transition","interpolateNumber","color","interpolateRgb","interpolateString","attrRemove","attrRemoveNS","fullname","attrConstant","value1","string00","string1","interpolate0","string0","attrConstantNS","attrFunction","string10","attrFunctionNS","transition_attr","namespace","attrInterpolate","attrInterpolateNS","attrTweenNS","i0","attrTween","transition_attrTween","delayFunction","delayConstant","transition_delay","durationFunction","durationConstant","transition_duration","easeConstant","transition_ease","easeVarying","transition_easeVarying","transition_filter","match","matcher","groups","subgroups","subgroup","Transition","transition_merge","groups0","groups1","m0","m1","merges","group0","group1","onFunction","listener","on0","on1","sit","on","transition_on","removeFunction","parent","transition_remove","transition_select","selector","subnode","transition_selectAll","selectorAll","parents","children","child","inherit","Selection","transition_selection","styleNull","style","styleRemove","styleConstant","styleFunction","styleMaybeRemove","listener0","remove","transition_style","priority","styleInterpolate","styleTween","transition_styleTween","textConstant","textFunction","transition_text","textInterpolate","textTween","transition_textTween","transition_transition","id0","id1","newId","transition_end","that","resolve","reject","cancel","end","selection_prototype","cubicInOut","defaultTiming","easeCubicInOut","selection_transition","now","constant","ZoomEvent","type","sourceEvent","target","Transform","location","nopropagation","defaultFilter","defaultExtent","defaultTransform","defaultWheelDelta","defaultTouchable","defaultConstrain","translateExtent","dx0","dx1","dy0","dy1","filter","constrain","wheelDelta","touchable","scaleExtent","duration","listeners","touchstarting","touchfirst","touchending","touchDelay","wheelDelay","clickDistance2","tapDistance","wheeled","mousedowned","dblclicked","touchstarted","touchmoved","touchended","collection","gesture","k0","k1","args","g","Gesture","pointer","wheelidled","currentTarget","mousemoved","mouseupped","dragEnable","touches","started","l0","l1","dp","dl","clone","cloneFeature","cloneFeatureCollection","cloneGeometry","cloned","cloneProperties","properties","item","feature","geom","deepSlice","coords","getCoords","booleanClockwise","prev","cur","featureCollection","fc","isObject","input","featureEach","geomEach","stopG","geometryMaybeCollection","isGeometryCollection","featureProperties","featureBBox","featureId","featureIndex","isFeatureCollection","isFeature","rewind","_a","_b","mutate","reverse","results","rewindFeature","rewoundFeature","rewindLineString","rewindPolygon","lineCoords"],"mappings":"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","x_google_ignoreList":[0,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,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87]}