@undp/data-viz 1.5.4 → 1.5.6
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.
- package/dist/BarGraph.cjs +1 -1
- package/dist/BarGraph.js +1 -1
- package/dist/BiVariateChoroplethMap.cjs +1 -1
- package/dist/BiVariateChoroplethMap.js +2 -2
- package/dist/BulletChart.cjs +1 -1
- package/dist/BulletChart.js +1 -1
- package/dist/ButterflyChart.cjs +1 -1
- package/dist/ButterflyChart.js +1 -1
- package/dist/ChoroplethMap.cjs +1 -1
- package/dist/ChoroplethMap.cjs.map +1 -1
- package/dist/ChoroplethMap.d.ts +0 -2
- package/dist/ChoroplethMap.js +2 -2
- package/dist/ChoroplethMap.js.map +1 -1
- package/dist/DotDensityMap.cjs +1 -1
- package/dist/DotDensityMap.js +2 -2
- package/dist/DumbbellChart.cjs +1 -1
- package/dist/DumbbellChart.js +1 -1
- package/dist/GraphEl-C6yjl1VM.cjs +2 -0
- package/dist/GraphEl-C6yjl1VM.cjs.map +1 -0
- package/dist/{GraphEl-CMWeARJ3.js → GraphEl-CqWzvOyr.js} +1 -2
- package/dist/GraphEl-CqWzvOyr.js.map +1 -0
- package/dist/GriddedGraphs.cjs +1 -1
- package/dist/GriddedGraphs.d.ts +1 -1
- package/dist/GriddedGraphs.js +1 -1
- package/dist/GriddedGraphsFromConfig.d.ts +1 -1
- package/dist/HeatMap.cjs +1 -1
- package/dist/HeatMap.js +1 -1
- package/dist/MultiGraphDashboard.d.ts +1 -1
- package/dist/MultiGraphDashboardFromConfig.d.ts +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.d.ts +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.d.ts +1 -1
- package/dist/PerformanceIntensiveScrollStory.d.ts +1 -1
- package/dist/ScrollStory.d.ts +1 -1
- package/dist/SingleGraphDashboard.cjs +1 -1
- package/dist/SingleGraphDashboard.d.ts +1 -1
- package/dist/SingleGraphDashboard.js +1 -1
- package/dist/SingleGraphDashboardFromConfig.d.ts +1 -1
- package/dist/SingleGraphDashboardGeoHubMaps.d.ts +1 -1
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.d.ts +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.cjs +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.cjs.map +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.d.ts +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.js +2 -2
- package/dist/SingleGraphDashboardThreeDGraphs.js.map +1 -1
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.d.ts +1 -1
- package/dist/ThreeDGlobe.cjs +1 -1
- package/dist/ThreeDGlobe.cjs.map +1 -1
- package/dist/ThreeDGlobe.d.ts +2 -2
- package/dist/ThreeDGlobe.js +394 -333
- package/dist/ThreeDGlobe.js.map +1 -1
- package/dist/Types.d.ts +1 -1
- package/dist/{YAxesLabels-DSm6I5zG.js → YAxesLabels-DECkMgq8.js} +9 -8
- package/dist/YAxesLabels-DECkMgq8.js.map +1 -0
- package/dist/{YAxesLabels-CctDydGR.cjs → YAxesLabels-yRFFdx1s.cjs} +2 -2
- package/dist/YAxesLabels-yRFFdx1s.cjs.map +1 -0
- package/dist/index-9tDEUqOZ.js +752 -0
- package/dist/{index-qfWCwobm.js.map → index-9tDEUqOZ.js.map} +1 -1
- package/dist/index-CoZbeNM9.cjs +2 -0
- package/dist/{index-D05lK1Te.cjs.map → index-CoZbeNM9.cjs.map} +1 -1
- package/dist/index.d.ts +3 -5
- package/dist/{zoom-Bsbhil-K.cjs → zoom-BiMNsz72.cjs} +2 -2
- package/dist/{zoom-Bsbhil-K.cjs.map → zoom-BiMNsz72.cjs.map} +1 -1
- package/dist/{zoom-DAu91HKr.js → zoom-QipiAl5W.js} +2 -2
- package/dist/{zoom-DAu91HKr.js.map → zoom-QipiAl5W.js.map} +1 -1
- package/package.json +2 -1
- package/dist/GraphEl-BcYgMnN2.cjs +0 -2
- package/dist/GraphEl-BcYgMnN2.cjs.map +0 -1
- package/dist/GraphEl-CMWeARJ3.js.map +0 -1
- package/dist/YAxesLabels-CctDydGR.cjs.map +0 -1
- package/dist/YAxesLabels-DSm6I5zG.js.map +0 -1
- package/dist/index-D05lK1Te.cjs +0 -2
- package/dist/index-qfWCwobm.js +0 -682
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zoom-DAu91HKr.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/bounds.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"],"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 turf_bbox_default = bbox;\nexport {\n bbox,\n turf_bbox_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 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","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"],"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","s","translate","xa","ya","xb","yb","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","turf_bbox_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","boundsStream","boundsPoint","bounds","transformer","methods","TransformStream","key","fit","projection","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","x00","y00","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","centroid","args","g","Gesture","pointer","wheelidled","currentTarget","mousemoved","mouseupped","dragEnable","touches","started","l0","l1","dp","dl"],"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]}
|
|
1
|
+
{"version":3,"file":"zoom-QipiAl5W.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/bounds.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"],"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 turf_bbox_default = bbox;\nexport {\n bbox,\n turf_bbox_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 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","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"],"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","s","translate","xa","ya","xb","yb","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","turf_bbox_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","boundsStream","boundsPoint","bounds","transformer","methods","TransformStream","key","fit","projection","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","x00","y00","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","centroid","args","g","Gesture","pointer","wheelidled","currentTarget","mousemoved","mouseupped","dragEnable","touches","started","l0","l1","dp","dl"],"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]}
|