(feature)
| 10156 | } |
| 10157 | |
| 10158 | function bounds(feature) { |
| 10159 | var i, n, a, b, merged, deltaMax, delta; |
| 10160 | |
| 10161 | phi1 = lambda1 = -(lambda0$1 = phi0 = Infinity); |
| 10162 | ranges = []; |
| 10163 | geoStream(feature, boundsStream$2); |
| 10164 | |
| 10165 | // First, sort ranges by their minimum longitudes. |
| 10166 | if (n = ranges.length) { |
| 10167 | ranges.sort(rangeCompare); |
| 10168 | |
| 10169 | // Then, merge any ranges that overlap. |
| 10170 | for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) { |
| 10171 | b = ranges[i]; |
| 10172 | if (rangeContains(a, b[0]) || rangeContains(a, b[1])) { |
| 10173 | if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1]; |
| 10174 | if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0]; |
| 10175 | } else { |
| 10176 | merged.push(a = b); |
| 10177 | } |
| 10178 | } |
| 10179 | |
| 10180 | // Finally, find the largest gap between the merged ranges. |
| 10181 | // The final bounding box will be the inverse of this gap. |
| 10182 | for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) { |
| 10183 | b = merged[i]; |
| 10184 | if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0$1 = b[0], lambda1 = a[1]; |
| 10185 | } |
| 10186 | } |
| 10187 | |
| 10188 | ranges = range = null; |
| 10189 | |
| 10190 | return lambda0$1 === Infinity || phi0 === Infinity |
| 10191 | ? [[NaN, NaN], [NaN, NaN]] |
| 10192 | : [[lambda0$1, phi0], [lambda1, phi1]]; |
| 10193 | } |
| 10194 | |
| 10195 | var W0, W1, |
| 10196 | X0$1, Y0$1, Z0$1, |
nothing calls this directly
no test coverage detected