d3-rails 5.9.2 → 5.16.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8422687bdd54a25af8d7ec2fcf7523b1dadba274f890a0ed09877e7728e2a431
4
- data.tar.gz: 1fc90e4be3d875635d5e55d03a2b61ce62cf1c1b098507d2e1b99ebe4c31a502
3
+ metadata.gz: 0ff8d63d744cc023158964833b855ef61551dcafc41c971cf411b1bc1135d4a2
4
+ data.tar.gz: 612543175ff36af31c6222e9a557189c2118ba707b6a86ce2c252fceba339390
5
5
  SHA512:
6
- metadata.gz: 8c319c728078db89f2f359cc8682f2ca936476ad44d66f90de23de415194852a695ad80e6f9b982c1ecfeb93de75c86ffa19aabc1ef689e6e909cfe6b4dd8e2e
7
- data.tar.gz: 6424e4d59b659fc5e31f5124b039857630f3bfe38501966aef47713a99c9259b815d97453748f77015b77273aad4ff8f426b27f410e6ab172316ca92895aa1dd
6
+ metadata.gz: 6791164a040b0e4006880d99060812d6d2e508a1340b4f51600ffa91b3d12a3ebbba066def1aba3857bf2a668f061044a9ab10318140150ebc64dd88a7a16b7d
7
+ data.tar.gz: 9774347504caedb8d86c2eb3d62dd59b3b4cb5e33dc2bbde9262ca2b118abf572476fa4a26e1b18cdb05216db7dfd6c58b0b2180e04ea5281fbe3c3210cee391
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 5.16.0 (31 March 2021)
2
+ * Upgrade D3 to 5.16.0
3
+
1
4
  ## 5.9.2 (28 May 2019)
2
5
  * Upgrade D3 to 5.9.2
3
6
 
data/README.md CHANGED
@@ -8,7 +8,7 @@ d3-rails provides D3 for Rails 3.1 and higher.
8
8
 
9
9
  ## Version
10
10
 
11
- d3-rails comes with version 5.9.2 of D3.js. The d3-rails version will
11
+ d3-rails comes with version 5.16.0 of D3.js. The d3-rails version will
12
12
  always mirror the version of D3. If you need a newer version of
13
13
  d3-rails, see section Development (below).
14
14
 
@@ -1,11 +1,11 @@
1
- // https://d3js.org v5.9.2 Copyright 2019 Mike Bostock
1
+ // https://d3js.org v5.16.0 Copyright 2020 Mike Bostock
2
2
  (function (global, factory) {
3
3
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
4
4
  typeof define === 'function' && define.amd ? define(['exports'], factory) :
5
- (factory((global.d3 = global.d3 || {})));
6
- }(this, (function (exports) { 'use strict';
5
+ (global = global || self, factory(global.d3 = global.d3 || {}));
6
+ }(this, function (exports) { 'use strict';
7
7
 
8
- var version = "5.9.2";
8
+ var version = "5.16.0";
9
9
 
10
10
  function ascending(a, b) {
11
11
  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
@@ -737,7 +737,7 @@ var noop = {value: function() {}};
737
737
 
738
738
  function dispatch() {
739
739
  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {
740
- if (!(t = arguments[i] + "") || (t in _)) throw new Error("illegal type: " + t);
740
+ if (!(t = arguments[i] + "") || (t in _) || /[\s.]/.test(t)) throw new Error("illegal type: " + t);
741
741
  _[t] = [];
742
742
  }
743
743
  return new Dispatch(_);
@@ -1080,9 +1080,9 @@ function selection_join(onenter, onupdate, onexit) {
1080
1080
  return enter && update ? enter.merge(update).order() : update;
1081
1081
  }
1082
1082
 
1083
- function selection_merge(selection$$1) {
1083
+ function selection_merge(selection) {
1084
1084
 
1085
- for (var groups0 = this._groups, groups1 = selection$$1._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
1085
+ for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
1086
1086
  for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
1087
1087
  if (node = group0[i] || group1[i]) {
1088
1088
  merge[i] = node;
@@ -1478,11 +1478,13 @@ function selection_remove() {
1478
1478
  }
1479
1479
 
1480
1480
  function selection_cloneShallow() {
1481
- return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);
1481
+ var clone = this.cloneNode(false), parent = this.parentNode;
1482
+ return parent ? parent.insertBefore(clone, this.nextSibling) : clone;
1482
1483
  }
1483
1484
 
1484
1485
  function selection_cloneDeep() {
1485
- return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);
1486
+ var clone = this.cloneNode(true), parent = this.parentNode;
1487
+ return parent ? parent.insertBefore(clone, this.nextSibling) : clone;
1486
1488
  }
1487
1489
 
1488
1490
  function selection_clone(deep) {
@@ -1785,9 +1787,9 @@ function noevent() {
1785
1787
 
1786
1788
  function dragDisable(view) {
1787
1789
  var root = view.document.documentElement,
1788
- selection$$1 = select(view).on("dragstart.drag", noevent, true);
1790
+ selection = select(view).on("dragstart.drag", noevent, true);
1789
1791
  if ("onselectstart" in root) {
1790
- selection$$1.on("selectstart.drag", noevent, true);
1792
+ selection.on("selectstart.drag", noevent, true);
1791
1793
  } else {
1792
1794
  root.__noselect = root.style.MozUserSelect;
1793
1795
  root.style.MozUserSelect = "none";
@@ -1796,13 +1798,13 @@ function dragDisable(view) {
1796
1798
 
1797
1799
  function yesdrag(view, noclick) {
1798
1800
  var root = view.document.documentElement,
1799
- selection$$1 = select(view).on("dragstart.drag", null);
1801
+ selection = select(view).on("dragstart.drag", null);
1800
1802
  if (noclick) {
1801
- selection$$1.on("click.drag", noevent, true);
1802
- setTimeout(function() { selection$$1.on("click.drag", null); }, 0);
1803
+ selection.on("click.drag", noevent, true);
1804
+ setTimeout(function() { selection.on("click.drag", null); }, 0);
1803
1805
  }
1804
1806
  if ("onselectstart" in root) {
1805
- selection$$1.on("selectstart.drag", null);
1807
+ selection.on("selectstart.drag", null);
1806
1808
  } else {
1807
1809
  root.style.MozUserSelect = root.__noselect;
1808
1810
  delete root.__noselect;
@@ -1835,7 +1837,7 @@ DragEvent.prototype.on = function() {
1835
1837
 
1836
1838
  // Ignore right-click, since that should open the context menu.
1837
1839
  function defaultFilter() {
1838
- return !exports.event.button;
1840
+ return !exports.event.ctrlKey && !exports.event.button;
1839
1841
  }
1840
1842
 
1841
1843
  function defaultContainer() {
@@ -1847,7 +1849,7 @@ function defaultSubject(d) {
1847
1849
  }
1848
1850
 
1849
1851
  function defaultTouchable() {
1850
- return "ontouchstart" in this;
1852
+ return navigator.maxTouchPoints || ("ontouchstart" in this);
1851
1853
  }
1852
1854
 
1853
1855
  function drag() {
@@ -1864,8 +1866,8 @@ function drag() {
1864
1866
  touchending,
1865
1867
  clickDistance2 = 0;
1866
1868
 
1867
- function drag(selection$$1) {
1868
- selection$$1
1869
+ function drag(selection) {
1870
+ selection
1869
1871
  .on("mousedown.drag", mousedowned)
1870
1872
  .filter(touchable)
1871
1873
  .on("touchstart.drag", touchstarted)
@@ -1906,12 +1908,12 @@ function drag() {
1906
1908
 
1907
1909
  function touchstarted() {
1908
1910
  if (!filter.apply(this, arguments)) return;
1909
- var touches$$1 = exports.event.changedTouches,
1911
+ var touches = exports.event.changedTouches,
1910
1912
  c = container.apply(this, arguments),
1911
- n = touches$$1.length, i, gesture;
1913
+ n = touches.length, i, gesture;
1912
1914
 
1913
1915
  for (i = 0; i < n; ++i) {
1914
- if (gesture = beforestart(touches$$1[i].identifier, c, touch, this, arguments)) {
1916
+ if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {
1915
1917
  nopropagation();
1916
1918
  gesture("start");
1917
1919
  }
@@ -1919,11 +1921,11 @@ function drag() {
1919
1921
  }
1920
1922
 
1921
1923
  function touchmoved() {
1922
- var touches$$1 = exports.event.changedTouches,
1923
- n = touches$$1.length, i, gesture;
1924
+ var touches = exports.event.changedTouches,
1925
+ n = touches.length, i, gesture;
1924
1926
 
1925
1927
  for (i = 0; i < n; ++i) {
1926
- if (gesture = gestures[touches$$1[i].identifier]) {
1928
+ if (gesture = gestures[touches[i].identifier]) {
1927
1929
  noevent();
1928
1930
  gesture("drag");
1929
1931
  }
@@ -1931,21 +1933,21 @@ function drag() {
1931
1933
  }
1932
1934
 
1933
1935
  function touchended() {
1934
- var touches$$1 = exports.event.changedTouches,
1935
- n = touches$$1.length, i, gesture;
1936
+ var touches = exports.event.changedTouches,
1937
+ n = touches.length, i, gesture;
1936
1938
 
1937
1939
  if (touchending) clearTimeout(touchending);
1938
1940
  touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!
1939
1941
  for (i = 0; i < n; ++i) {
1940
- if (gesture = gestures[touches$$1[i].identifier]) {
1942
+ if (gesture = gestures[touches[i].identifier]) {
1941
1943
  nopropagation();
1942
1944
  gesture("end");
1943
1945
  }
1944
1946
  }
1945
1947
  }
1946
1948
 
1947
- function beforestart(id, container, point$$1, that, args) {
1948
- var p = point$$1(container, id), s, dx, dy,
1949
+ function beforestart(id, container, point, that, args) {
1950
+ var p = point(container, id), s, dx, dy,
1949
1951
  sublisteners = listeners.copy();
1950
1952
 
1951
1953
  if (!customEvent(new DragEvent(drag, "beforestart", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {
@@ -1960,7 +1962,7 @@ function drag() {
1960
1962
  switch (type) {
1961
1963
  case "start": gestures[id] = gesture, n = active++; break;
1962
1964
  case "end": delete gestures[id], --active; // nobreak
1963
- case "drag": p = point$$1(container, id), n = active; break;
1965
+ case "drag": p = point(container, id), n = active; break;
1964
1966
  }
1965
1967
  customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);
1966
1968
  };
@@ -2013,8 +2015,7 @@ var brighter = 1 / darker;
2013
2015
  var reI = "\\s*([+-]?\\d+)\\s*",
2014
2016
  reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",
2015
2017
  reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",
2016
- reHex3 = /^#([0-9a-f]{3})$/,
2017
- reHex6 = /^#([0-9a-f]{6})$/,
2018
+ reHex = /^#([0-9a-f]{3,8})$/,
2018
2019
  reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$"),
2019
2020
  reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$"),
2020
2021
  reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$"),
@@ -2174,29 +2175,46 @@ var named = {
2174
2175
  };
2175
2176
 
2176
2177
  define(Color, color, {
2178
+ copy: function(channels) {
2179
+ return Object.assign(new this.constructor, this, channels);
2180
+ },
2177
2181
  displayable: function() {
2178
2182
  return this.rgb().displayable();
2179
2183
  },
2180
- hex: function() {
2181
- return this.rgb().hex();
2182
- },
2183
- toString: function() {
2184
- return this.rgb() + "";
2185
- }
2184
+ hex: color_formatHex, // Deprecated! Use color.formatHex.
2185
+ formatHex: color_formatHex,
2186
+ formatHsl: color_formatHsl,
2187
+ formatRgb: color_formatRgb,
2188
+ toString: color_formatRgb
2186
2189
  });
2187
2190
 
2191
+ function color_formatHex() {
2192
+ return this.rgb().formatHex();
2193
+ }
2194
+
2195
+ function color_formatHsl() {
2196
+ return hslConvert(this).formatHsl();
2197
+ }
2198
+
2199
+ function color_formatRgb() {
2200
+ return this.rgb().formatRgb();
2201
+ }
2202
+
2188
2203
  function color(format) {
2189
- var m;
2204
+ var m, l;
2190
2205
  format = (format + "").trim().toLowerCase();
2191
- return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00
2192
- : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000
2206
+ return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000
2207
+ : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00
2208
+ : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000
2209
+ : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000
2210
+ : null) // invalid hex
2193
2211
  : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)
2194
2212
  : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)
2195
2213
  : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)
2196
2214
  : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)
2197
2215
  : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)
2198
2216
  : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)
2199
- : named.hasOwnProperty(format) ? rgbn(named[format])
2217
+ : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins
2200
2218
  : format === "transparent" ? new Rgb(NaN, NaN, NaN, 0)
2201
2219
  : null;
2202
2220
  }
@@ -2241,24 +2259,30 @@ define(Rgb, rgb, extend(Color, {
2241
2259
  return this;
2242
2260
  },
2243
2261
  displayable: function() {
2244
- return (0 <= this.r && this.r <= 255)
2245
- && (0 <= this.g && this.g <= 255)
2246
- && (0 <= this.b && this.b <= 255)
2262
+ return (-0.5 <= this.r && this.r < 255.5)
2263
+ && (-0.5 <= this.g && this.g < 255.5)
2264
+ && (-0.5 <= this.b && this.b < 255.5)
2247
2265
  && (0 <= this.opacity && this.opacity <= 1);
2248
2266
  },
2249
- hex: function() {
2250
- return "#" + hex(this.r) + hex(this.g) + hex(this.b);
2251
- },
2252
- toString: function() {
2253
- var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));
2254
- return (a === 1 ? "rgb(" : "rgba(")
2255
- + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", "
2256
- + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", "
2257
- + Math.max(0, Math.min(255, Math.round(this.b) || 0))
2258
- + (a === 1 ? ")" : ", " + a + ")");
2259
- }
2267
+ hex: rgb_formatHex, // Deprecated! Use color.formatHex.
2268
+ formatHex: rgb_formatHex,
2269
+ formatRgb: rgb_formatRgb,
2270
+ toString: rgb_formatRgb
2260
2271
  }));
2261
2272
 
2273
+ function rgb_formatHex() {
2274
+ return "#" + hex(this.r) + hex(this.g) + hex(this.b);
2275
+ }
2276
+
2277
+ function rgb_formatRgb() {
2278
+ var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));
2279
+ return (a === 1 ? "rgb(" : "rgba(")
2280
+ + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", "
2281
+ + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", "
2282
+ + Math.max(0, Math.min(255, Math.round(this.b) || 0))
2283
+ + (a === 1 ? ")" : ", " + a + ")");
2284
+ }
2285
+
2262
2286
  function hex(value) {
2263
2287
  value = Math.max(0, Math.min(255, Math.round(value) || 0));
2264
2288
  return (value < 16 ? "0" : "") + value.toString(16);
@@ -2334,6 +2358,14 @@ define(Hsl, hsl, extend(Color, {
2334
2358
  return (0 <= this.s && this.s <= 1 || isNaN(this.s))
2335
2359
  && (0 <= this.l && this.l <= 1)
2336
2360
  && (0 <= this.opacity && this.opacity <= 1);
2361
+ },
2362
+ formatHsl: function() {
2363
+ var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));
2364
+ return (a === 1 ? "hsl(" : "hsla(")
2365
+ + (this.h || 0) + ", "
2366
+ + (this.s || 0) * 100 + "%, "
2367
+ + (this.l || 0) * 100 + "%"
2368
+ + (a === 1 ? ")" : ", " + a + ")");
2337
2369
  }
2338
2370
  }));
2339
2371
 
@@ -2348,7 +2380,7 @@ function hsl2rgb(h, m1, m2) {
2348
2380
  var deg2rad = Math.PI / 180;
2349
2381
  var rad2deg = 180 / Math.PI;
2350
2382
 
2351
- // https://beta.observablehq.com/@mbostock/lab-and-rgb
2383
+ // https://observablehq.com/@mbostock/lab-and-rgb
2352
2384
  var K = 18,
2353
2385
  Xn = 0.96422,
2354
2386
  Yn = 1,
@@ -2360,11 +2392,7 @@ var K = 18,
2360
2392
 
2361
2393
  function labConvert(o) {
2362
2394
  if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);
2363
- if (o instanceof Hcl) {
2364
- if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);
2365
- var h = o.h * deg2rad;
2366
- return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);
2367
- }
2395
+ if (o instanceof Hcl) return hcl2lab(o);
2368
2396
  if (!(o instanceof Rgb)) o = rgbConvert(o);
2369
2397
  var r = rgb2lrgb(o.r),
2370
2398
  g = rgb2lrgb(o.g),
@@ -2434,7 +2462,7 @@ function rgb2lrgb(x) {
2434
2462
  function hclConvert(o) {
2435
2463
  if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);
2436
2464
  if (!(o instanceof Lab)) o = labConvert(o);
2437
- if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0, o.l, o.opacity);
2465
+ if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);
2438
2466
  var h = Math.atan2(o.b, o.a) * rad2deg;
2439
2467
  return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);
2440
2468
  }
@@ -2454,6 +2482,12 @@ function Hcl(h, c, l, opacity) {
2454
2482
  this.opacity = +opacity;
2455
2483
  }
2456
2484
 
2485
+ function hcl2lab(o) {
2486
+ if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);
2487
+ var h = o.h * deg2rad;
2488
+ return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);
2489
+ }
2490
+
2457
2491
  define(Hcl, hcl, extend(Color, {
2458
2492
  brighter: function(k) {
2459
2493
  return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);
@@ -2462,7 +2496,7 @@ define(Hcl, hcl, extend(Color, {
2462
2496
  return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);
2463
2497
  },
2464
2498
  rgb: function() {
2465
- return labConvert(this).rgb();
2499
+ return hcl2lab(this).rgb();
2466
2500
  }
2467
2501
  }));
2468
2502
 
@@ -2591,12 +2625,12 @@ function nogamma(a, b) {
2591
2625
  }
2592
2626
 
2593
2627
  var interpolateRgb = (function rgbGamma(y) {
2594
- var color$$1 = gamma(y);
2628
+ var color = gamma(y);
2595
2629
 
2596
- function rgb$$1(start, end) {
2597
- var r = color$$1((start = rgb(start)).r, (end = rgb(end)).r),
2598
- g = color$$1(start.g, end.g),
2599
- b = color$$1(start.b, end.b),
2630
+ function rgb$1(start, end) {
2631
+ var r = color((start = rgb(start)).r, (end = rgb(end)).r),
2632
+ g = color(start.g, end.g),
2633
+ b = color(start.b, end.b),
2600
2634
  opacity = nogamma(start.opacity, end.opacity);
2601
2635
  return function(t) {
2602
2636
  start.r = r(t);
@@ -2607,9 +2641,9 @@ var interpolateRgb = (function rgbGamma(y) {
2607
2641
  };
2608
2642
  }
2609
2643
 
2610
- rgb$$1.gamma = rgbGamma;
2644
+ rgb$1.gamma = rgbGamma;
2611
2645
 
2612
- return rgb$$1;
2646
+ return rgb$1;
2613
2647
  })(1);
2614
2648
 
2615
2649
  function rgbSpline(spline) {
@@ -2618,22 +2652,22 @@ function rgbSpline(spline) {
2618
2652
  r = new Array(n),
2619
2653
  g = new Array(n),
2620
2654
  b = new Array(n),
2621
- i, color$$1;
2655
+ i, color;
2622
2656
  for (i = 0; i < n; ++i) {
2623
- color$$1 = rgb(colors[i]);
2624
- r[i] = color$$1.r || 0;
2625
- g[i] = color$$1.g || 0;
2626
- b[i] = color$$1.b || 0;
2657
+ color = rgb(colors[i]);
2658
+ r[i] = color.r || 0;
2659
+ g[i] = color.g || 0;
2660
+ b[i] = color.b || 0;
2627
2661
  }
2628
2662
  r = spline(r);
2629
2663
  g = spline(g);
2630
2664
  b = spline(b);
2631
- color$$1.opacity = 1;
2665
+ color.opacity = 1;
2632
2666
  return function(t) {
2633
- color$$1.r = r(t);
2634
- color$$1.g = g(t);
2635
- color$$1.b = b(t);
2636
- return color$$1 + "";
2667
+ color.r = r(t);
2668
+ color.g = g(t);
2669
+ color.b = b(t);
2670
+ return color + "";
2637
2671
  };
2638
2672
  };
2639
2673
  }
@@ -2641,7 +2675,26 @@ function rgbSpline(spline) {
2641
2675
  var rgbBasis = rgbSpline(basis$1);
2642
2676
  var rgbBasisClosed = rgbSpline(basisClosed);
2643
2677
 
2678
+ function numberArray(a, b) {
2679
+ if (!b) b = [];
2680
+ var n = a ? Math.min(b.length, a.length) : 0,
2681
+ c = b.slice(),
2682
+ i;
2683
+ return function(t) {
2684
+ for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;
2685
+ return c;
2686
+ };
2687
+ }
2688
+
2689
+ function isNumberArray(x) {
2690
+ return ArrayBuffer.isView(x) && !(x instanceof DataView);
2691
+ }
2692
+
2644
2693
  function array$1(a, b) {
2694
+ return (isNumberArray(b) ? numberArray : genericArray)(a, b);
2695
+ }
2696
+
2697
+ function genericArray(a, b) {
2645
2698
  var nb = b ? b.length : 0,
2646
2699
  na = a ? Math.min(nb, a.length) : 0,
2647
2700
  x = new Array(na),
@@ -2659,14 +2712,14 @@ function array$1(a, b) {
2659
2712
 
2660
2713
  function date(a, b) {
2661
2714
  var d = new Date;
2662
- return a = +a, b -= a, function(t) {
2663
- return d.setTime(a + b * t), d;
2715
+ return a = +a, b = +b, function(t) {
2716
+ return d.setTime(a * (1 - t) + b * t), d;
2664
2717
  };
2665
2718
  }
2666
2719
 
2667
2720
  function interpolateNumber(a, b) {
2668
- return a = +a, b -= a, function(t) {
2669
- return a + b * t;
2721
+ return a = +a, b = +b, function(t) {
2722
+ return a * (1 - t) + b * t;
2670
2723
  };
2671
2724
  }
2672
2725
 
@@ -2762,7 +2815,8 @@ function interpolateValue(a, b) {
2762
2815
  : t === "string" ? ((c = color(b)) ? (b = c, interpolateRgb) : interpolateString)
2763
2816
  : b instanceof color ? interpolateRgb
2764
2817
  : b instanceof Date ? date
2765
- : Array.isArray(b) ? array$1
2818
+ : isNumberArray(b) ? numberArray
2819
+ : Array.isArray(b) ? genericArray
2766
2820
  : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object
2767
2821
  : interpolateNumber)(a, b);
2768
2822
  }
@@ -2783,8 +2837,8 @@ function hue$1(a, b) {
2783
2837
  }
2784
2838
 
2785
2839
  function interpolateRound(a, b) {
2786
- return a = +a, b -= a, function(t) {
2787
- return Math.round(a + b * t);
2840
+ return a = +a, b = +b, function(t) {
2841
+ return Math.round(a * (1 - t) + b * t);
2788
2842
  };
2789
2843
  }
2790
2844
 
@@ -2965,9 +3019,9 @@ function interpolateZoom(p0, p1) {
2965
3019
  return i;
2966
3020
  }
2967
3021
 
2968
- function hsl$1(hue$$1) {
3022
+ function hsl$1(hue) {
2969
3023
  return function(start, end) {
2970
- var h = hue$$1((start = hsl(start)).h, (end = hsl(end)).h),
3024
+ var h = hue((start = hsl(start)).h, (end = hsl(end)).h),
2971
3025
  s = nogamma(start.s, end.s),
2972
3026
  l = nogamma(start.l, end.l),
2973
3027
  opacity = nogamma(start.opacity, end.opacity);
@@ -2998,9 +3052,9 @@ function lab$1(start, end) {
2998
3052
  };
2999
3053
  }
3000
3054
 
3001
- function hcl$1(hue$$1) {
3055
+ function hcl$1(hue) {
3002
3056
  return function(start, end) {
3003
- var h = hue$$1((start = hcl(start)).h, (end = hcl(end)).h),
3057
+ var h = hue((start = hcl(start)).h, (end = hcl(end)).h),
3004
3058
  c = nogamma(start.c, end.c),
3005
3059
  l = nogamma(start.l, end.l),
3006
3060
  opacity = nogamma(start.opacity, end.opacity);
@@ -3017,12 +3071,12 @@ function hcl$1(hue$$1) {
3017
3071
  var hcl$2 = hcl$1(hue);
3018
3072
  var hclLong = hcl$1(nogamma);
3019
3073
 
3020
- function cubehelix$1(hue$$1) {
3074
+ function cubehelix$1(hue) {
3021
3075
  return (function cubehelixGamma(y) {
3022
3076
  y = +y;
3023
3077
 
3024
- function cubehelix$$1(start, end) {
3025
- var h = hue$$1((start = cubehelix(start)).h, (end = cubehelix(end)).h),
3078
+ function cubehelix$1(start, end) {
3079
+ var h = hue((start = cubehelix(start)).h, (end = cubehelix(end)).h),
3026
3080
  s = nogamma(start.s, end.s),
3027
3081
  l = nogamma(start.l, end.l),
3028
3082
  opacity = nogamma(start.opacity, end.opacity);
@@ -3035,9 +3089,9 @@ function cubehelix$1(hue$$1) {
3035
3089
  };
3036
3090
  }
3037
3091
 
3038
- cubehelix$$1.gamma = cubehelixGamma;
3092
+ cubehelix$1.gamma = cubehelixGamma;
3039
3093
 
3040
- return cubehelix$$1;
3094
+ return cubehelix$1;
3041
3095
  })(1);
3042
3096
  }
3043
3097
 
@@ -3345,7 +3399,7 @@ function create$1(node, id, self) {
3345
3399
 
3346
3400
  function interrupt(node, name) {
3347
3401
  var schedules = node.__transition,
3348
- schedule$$1,
3402
+ schedule,
3349
3403
  active,
3350
3404
  empty = true,
3351
3405
  i;
@@ -3355,11 +3409,11 @@ function interrupt(node, name) {
3355
3409
  name = name == null ? null : name + "";
3356
3410
 
3357
3411
  for (i in schedules) {
3358
- if ((schedule$$1 = schedules[i]).name !== name) { empty = false; continue; }
3359
- active = schedule$$1.state > STARTING && schedule$$1.state < ENDING;
3360
- schedule$$1.state = ENDED;
3361
- schedule$$1.timer.stop();
3362
- schedule$$1.on.call(active ? "interrupt" : "cancel", node, node.__data__, schedule$$1.index, schedule$$1.group);
3412
+ if ((schedule = schedules[i]).name !== name) { empty = false; continue; }
3413
+ active = schedule.state > STARTING && schedule.state < ENDING;
3414
+ schedule.state = ENDED;
3415
+ schedule.timer.stop();
3416
+ schedule.on.call(active ? "interrupt" : "cancel", node, node.__data__, schedule.index, schedule.group);
3363
3417
  delete schedules[i];
3364
3418
  }
3365
3419
 
@@ -3375,8 +3429,8 @@ function selection_interrupt(name) {
3375
3429
  function tweenRemove(id, name) {
3376
3430
  var tween0, tween1;
3377
3431
  return function() {
3378
- var schedule$$1 = set$1(this, id),
3379
- tween = schedule$$1.tween;
3432
+ var schedule = set$1(this, id),
3433
+ tween = schedule.tween;
3380
3434
 
3381
3435
  // If this node shared tween with the previous node,
3382
3436
  // just assign the updated shared tween and we’re done!
@@ -3392,7 +3446,7 @@ function tweenRemove(id, name) {
3392
3446
  }
3393
3447
  }
3394
3448
 
3395
- schedule$$1.tween = tween1;
3449
+ schedule.tween = tween1;
3396
3450
  };
3397
3451
  }
3398
3452
 
@@ -3400,8 +3454,8 @@ function tweenFunction(id, name, value) {
3400
3454
  var tween0, tween1;
3401
3455
  if (typeof value !== "function") throw new Error;
3402
3456
  return function() {
3403
- var schedule$$1 = set$1(this, id),
3404
- tween = schedule$$1.tween;
3457
+ var schedule = set$1(this, id),
3458
+ tween = schedule.tween;
3405
3459
 
3406
3460
  // If this node shared tween with the previous node,
3407
3461
  // just assign the updated shared tween and we’re done!
@@ -3417,7 +3471,7 @@ function tweenFunction(id, name, value) {
3417
3471
  if (i === n) tween1.push(t);
3418
3472
  }
3419
3473
 
3420
- schedule$$1.tween = tween1;
3474
+ schedule.tween = tween1;
3421
3475
  };
3422
3476
  }
3423
3477
 
@@ -3443,8 +3497,8 @@ function tweenValue(transition, name, value) {
3443
3497
  var id = transition._id;
3444
3498
 
3445
3499
  transition.each(function() {
3446
- var schedule$$1 = set$1(this, id);
3447
- (schedule$$1.value || (schedule$$1.value = {}))[name] = value.apply(this, arguments);
3500
+ var schedule = set$1(this, id);
3501
+ (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);
3448
3502
  });
3449
3503
 
3450
3504
  return function(node) {
@@ -3472,7 +3526,7 @@ function attrRemoveNS$1(fullname) {
3472
3526
  };
3473
3527
  }
3474
3528
 
3475
- function attrConstant$1(name, interpolate$$1, value1) {
3529
+ function attrConstant$1(name, interpolate, value1) {
3476
3530
  var string00,
3477
3531
  string1 = value1 + "",
3478
3532
  interpolate0;
@@ -3480,11 +3534,11 @@ function attrConstant$1(name, interpolate$$1, value1) {
3480
3534
  var string0 = this.getAttribute(name);
3481
3535
  return string0 === string1 ? null
3482
3536
  : string0 === string00 ? interpolate0
3483
- : interpolate0 = interpolate$$1(string00 = string0, value1);
3537
+ : interpolate0 = interpolate(string00 = string0, value1);
3484
3538
  };
3485
3539
  }
3486
3540
 
3487
- function attrConstantNS$1(fullname, interpolate$$1, value1) {
3541
+ function attrConstantNS$1(fullname, interpolate, value1) {
3488
3542
  var string00,
3489
3543
  string1 = value1 + "",
3490
3544
  interpolate0;
@@ -3492,11 +3546,11 @@ function attrConstantNS$1(fullname, interpolate$$1, value1) {
3492
3546
  var string0 = this.getAttributeNS(fullname.space, fullname.local);
3493
3547
  return string0 === string1 ? null
3494
3548
  : string0 === string00 ? interpolate0
3495
- : interpolate0 = interpolate$$1(string00 = string0, value1);
3549
+ : interpolate0 = interpolate(string00 = string0, value1);
3496
3550
  };
3497
3551
  }
3498
3552
 
3499
- function attrFunction$1(name, interpolate$$1, value) {
3553
+ function attrFunction$1(name, interpolate, value) {
3500
3554
  var string00,
3501
3555
  string10,
3502
3556
  interpolate0;
@@ -3507,11 +3561,11 @@ function attrFunction$1(name, interpolate$$1, value) {
3507
3561
  string1 = value1 + "";
3508
3562
  return string0 === string1 ? null
3509
3563
  : string0 === string00 && string1 === string10 ? interpolate0
3510
- : (string10 = string1, interpolate0 = interpolate$$1(string00 = string0, value1));
3564
+ : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));
3511
3565
  };
3512
3566
  }
3513
3567
 
3514
- function attrFunctionNS$1(fullname, interpolate$$1, value) {
3568
+ function attrFunctionNS$1(fullname, interpolate, value) {
3515
3569
  var string00,
3516
3570
  string10,
3517
3571
  interpolate0;
@@ -3522,7 +3576,7 @@ function attrFunctionNS$1(fullname, interpolate$$1, value) {
3522
3576
  string1 = value1 + "";
3523
3577
  return string0 === string1 ? null
3524
3578
  : string0 === string00 && string1 === string10 ? interpolate0
3525
- : (string10 = string1, interpolate0 = interpolate$$1(string00 = string0, value1));
3579
+ : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));
3526
3580
  };
3527
3581
  }
3528
3582
 
@@ -3536,13 +3590,13 @@ function transition_attr(name, value) {
3536
3590
 
3537
3591
  function attrInterpolate(name, i) {
3538
3592
  return function(t) {
3539
- this.setAttribute(name, i(t));
3593
+ this.setAttribute(name, i.call(this, t));
3540
3594
  };
3541
3595
  }
3542
3596
 
3543
3597
  function attrInterpolateNS(fullname, i) {
3544
3598
  return function(t) {
3545
- this.setAttributeNS(fullname.space, fullname.local, i(t));
3599
+ this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));
3546
3600
  };
3547
3601
  }
3548
3602
 
@@ -3650,10 +3704,10 @@ function transition_filter(match) {
3650
3704
  return new Transition(subgroups, this._parents, this._name, this._id);
3651
3705
  }
3652
3706
 
3653
- function transition_merge(transition$$1) {
3654
- if (transition$$1._id !== this._id) throw new Error;
3707
+ function transition_merge(transition) {
3708
+ if (transition._id !== this._id) throw new Error;
3655
3709
 
3656
- for (var groups0 = this._groups, groups1 = transition$$1._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
3710
+ 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) {
3657
3711
  for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
3658
3712
  if (node = group0[i] || group1[i]) {
3659
3713
  merge[i] = node;
@@ -3679,15 +3733,15 @@ function start(name) {
3679
3733
  function onFunction(id, name, listener) {
3680
3734
  var on0, on1, sit = start(name) ? init : set$1;
3681
3735
  return function() {
3682
- var schedule$$1 = sit(this, id),
3683
- on = schedule$$1.on;
3736
+ var schedule = sit(this, id),
3737
+ on = schedule.on;
3684
3738
 
3685
3739
  // If this node shared a dispatch with the previous node,
3686
3740
  // just assign the updated shared dispatch and we’re done!
3687
3741
  // Otherwise, copy-on-write.
3688
3742
  if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);
3689
3743
 
3690
- schedule$$1.on = on1;
3744
+ schedule.on = on1;
3691
3745
  };
3692
3746
  }
3693
3747
 
@@ -3711,15 +3765,15 @@ function transition_remove() {
3711
3765
  return this.on("end.remove", removeFunction(this._id));
3712
3766
  }
3713
3767
 
3714
- function transition_select(select$$1) {
3768
+ function transition_select(select) {
3715
3769
  var name = this._name,
3716
3770
  id = this._id;
3717
3771
 
3718
- if (typeof select$$1 !== "function") select$$1 = selector(select$$1);
3772
+ if (typeof select !== "function") select = selector(select);
3719
3773
 
3720
3774
  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
3721
3775
  for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
3722
- if ((node = group[i]) && (subnode = select$$1.call(node, node.__data__, i, group))) {
3776
+ if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
3723
3777
  if ("__data__" in node) subnode.__data__ = node.__data__;
3724
3778
  subgroup[i] = subnode;
3725
3779
  schedule(subgroup[i], name, id, i, subgroup, get$1(node, id));
@@ -3730,16 +3784,16 @@ function transition_select(select$$1) {
3730
3784
  return new Transition(subgroups, this._parents, name, id);
3731
3785
  }
3732
3786
 
3733
- function transition_selectAll(select$$1) {
3787
+ function transition_selectAll(select) {
3734
3788
  var name = this._name,
3735
3789
  id = this._id;
3736
3790
 
3737
- if (typeof select$$1 !== "function") select$$1 = selectorAll(select$$1);
3791
+ if (typeof select !== "function") select = selectorAll(select);
3738
3792
 
3739
3793
  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
3740
3794
  for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
3741
3795
  if (node = group[i]) {
3742
- for (var children = select$$1.call(node, node.__data__, i, group), child, inherit = get$1(node, id), k = 0, l = children.length; k < l; ++k) {
3796
+ for (var children = select.call(node, node.__data__, i, group), child, inherit = get$1(node, id), k = 0, l = children.length; k < l; ++k) {
3743
3797
  if (child = children[k]) {
3744
3798
  schedule(child, name, id, k, children, inherit);
3745
3799
  }
@@ -3759,7 +3813,7 @@ function transition_selection() {
3759
3813
  return new Selection$1(this._groups, this._parents);
3760
3814
  }
3761
3815
 
3762
- function styleNull(name, interpolate$$1) {
3816
+ function styleNull(name, interpolate) {
3763
3817
  var string00,
3764
3818
  string10,
3765
3819
  interpolate0;
@@ -3768,7 +3822,7 @@ function styleNull(name, interpolate$$1) {
3768
3822
  string1 = (this.style.removeProperty(name), styleValue(this, name));
3769
3823
  return string0 === string1 ? null
3770
3824
  : string0 === string00 && string1 === string10 ? interpolate0
3771
- : interpolate0 = interpolate$$1(string00 = string0, string10 = string1);
3825
+ : interpolate0 = interpolate(string00 = string0, string10 = string1);
3772
3826
  };
3773
3827
  }
3774
3828
 
@@ -3778,7 +3832,7 @@ function styleRemove$1(name) {
3778
3832
  };
3779
3833
  }
3780
3834
 
3781
- function styleConstant$1(name, interpolate$$1, value1) {
3835
+ function styleConstant$1(name, interpolate, value1) {
3782
3836
  var string00,
3783
3837
  string1 = value1 + "",
3784
3838
  interpolate0;
@@ -3786,11 +3840,11 @@ function styleConstant$1(name, interpolate$$1, value1) {
3786
3840
  var string0 = styleValue(this, name);
3787
3841
  return string0 === string1 ? null
3788
3842
  : string0 === string00 ? interpolate0
3789
- : interpolate0 = interpolate$$1(string00 = string0, value1);
3843
+ : interpolate0 = interpolate(string00 = string0, value1);
3790
3844
  };
3791
3845
  }
3792
3846
 
3793
- function styleFunction$1(name, interpolate$$1, value) {
3847
+ function styleFunction$1(name, interpolate, value) {
3794
3848
  var string00,
3795
3849
  string10,
3796
3850
  interpolate0;
@@ -3801,23 +3855,23 @@ function styleFunction$1(name, interpolate$$1, value) {
3801
3855
  if (value1 == null) string1 = value1 = (this.style.removeProperty(name), styleValue(this, name));
3802
3856
  return string0 === string1 ? null
3803
3857
  : string0 === string00 && string1 === string10 ? interpolate0
3804
- : (string10 = string1, interpolate0 = interpolate$$1(string00 = string0, value1));
3858
+ : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));
3805
3859
  };
3806
3860
  }
3807
3861
 
3808
3862
  function styleMaybeRemove(id, name) {
3809
3863
  var on0, on1, listener0, key = "style." + name, event = "end." + key, remove;
3810
3864
  return function() {
3811
- var schedule$$1 = set$1(this, id),
3812
- on = schedule$$1.on,
3813
- listener = schedule$$1.value[key] == null ? remove || (remove = styleRemove$1(name)) : undefined;
3865
+ var schedule = set$1(this, id),
3866
+ on = schedule.on,
3867
+ listener = schedule.value[key] == null ? remove || (remove = styleRemove$1(name)) : undefined;
3814
3868
 
3815
3869
  // If this node shared a dispatch with the previous node,
3816
3870
  // just assign the updated shared dispatch and we’re done!
3817
3871
  // Otherwise, copy-on-write.
3818
3872
  if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);
3819
3873
 
3820
- schedule$$1.on = on1;
3874
+ schedule.on = on1;
3821
3875
  };
3822
3876
  }
3823
3877
 
@@ -3836,7 +3890,7 @@ function transition_style(name, value, priority) {
3836
3890
 
3837
3891
  function styleInterpolate(name, i, priority) {
3838
3892
  return function(t) {
3839
- this.style.setProperty(name, i(t), priority);
3893
+ this.style.setProperty(name, i.call(this, t), priority);
3840
3894
  };
3841
3895
  }
3842
3896
 
@@ -3878,6 +3932,31 @@ function transition_text(value) {
3878
3932
  : textConstant$1(value == null ? "" : value + ""));
3879
3933
  }
3880
3934
 
3935
+ function textInterpolate(i) {
3936
+ return function(t) {
3937
+ this.textContent = i.call(this, t);
3938
+ };
3939
+ }
3940
+
3941
+ function textTween(value) {
3942
+ var t0, i0;
3943
+ function tween() {
3944
+ var i = value.apply(this, arguments);
3945
+ if (i !== i0) t0 = (i0 = i) && textInterpolate(i);
3946
+ return t0;
3947
+ }
3948
+ tween._value = value;
3949
+ return tween;
3950
+ }
3951
+
3952
+ function transition_textTween(value) {
3953
+ var key = "text";
3954
+ if (arguments.length < 1) return (key = this.tween(key)) && key._value;
3955
+ if (value == null) return this.tween(key, null);
3956
+ if (typeof value !== "function") throw new Error;
3957
+ return this.tween(key, textTween(value));
3958
+ }
3959
+
3881
3960
  function transition_transition() {
3882
3961
  var name = this._name,
3883
3962
  id0 = this._id,
@@ -3907,8 +3986,8 @@ function transition_end() {
3907
3986
  end = {value: function() { if (--size === 0) resolve(); }};
3908
3987
 
3909
3988
  that.each(function() {
3910
- var schedule$$1 = set$1(this, id),
3911
- on = schedule$$1.on;
3989
+ var schedule = set$1(this, id),
3990
+ on = schedule.on;
3912
3991
 
3913
3992
  // If this node shared a dispatch with the previous node,
3914
3993
  // just assign the updated shared dispatch and we’re done!
@@ -3920,7 +3999,7 @@ function transition_end() {
3920
3999
  on1._.end.push(end);
3921
4000
  }
3922
4001
 
3923
- schedule$$1.on = on1;
4002
+ schedule.on = on1;
3924
4003
  });
3925
4004
  });
3926
4005
  }
@@ -3964,6 +4043,7 @@ Transition.prototype = transition.prototype = {
3964
4043
  style: transition_style,
3965
4044
  styleTween: transition_styleTween,
3966
4045
  text: transition_text,
4046
+ textTween: transition_textTween,
3967
4047
  remove: transition_remove,
3968
4048
  tween: transition_tween,
3969
4049
  delay: transition_delay,
@@ -4228,13 +4308,13 @@ var root$1 = [null];
4228
4308
 
4229
4309
  function active(node, name) {
4230
4310
  var schedules = node.__transition,
4231
- schedule$$1,
4311
+ schedule,
4232
4312
  i;
4233
4313
 
4234
4314
  if (schedules) {
4235
4315
  name = name == null ? null : name + "";
4236
4316
  for (i in schedules) {
4237
- if ((schedule$$1 = schedules[i]).state > SCHEDULED && schedule$$1.name === name) {
4317
+ if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {
4238
4318
  return new Transition([[node]], root$1, name, +i);
4239
4319
  }
4240
4320
  }
@@ -4269,24 +4349,38 @@ var MODE_DRAG = {name: "drag"},
4269
4349
  MODE_HANDLE = {name: "handle"},
4270
4350
  MODE_CENTER = {name: "center"};
4271
4351
 
4352
+ function number1(e) {
4353
+ return [+e[0], +e[1]];
4354
+ }
4355
+
4356
+ function number2(e) {
4357
+ return [number1(e[0]), number1(e[1])];
4358
+ }
4359
+
4360
+ function toucher(identifier) {
4361
+ return function(target) {
4362
+ return touch(target, exports.event.touches, identifier);
4363
+ };
4364
+ }
4365
+
4272
4366
  var X = {
4273
4367
  name: "x",
4274
- handles: ["e", "w"].map(type),
4275
- input: function(x, e) { return x && [[x[0], e[0][1]], [x[1], e[1][1]]]; },
4368
+ handles: ["w", "e"].map(type),
4369
+ input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },
4276
4370
  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }
4277
4371
  };
4278
4372
 
4279
4373
  var Y = {
4280
4374
  name: "y",
4281
4375
  handles: ["n", "s"].map(type),
4282
- input: function(y, e) { return y && [[e[0][0], y[0]], [e[1][0], y[1]]]; },
4376
+ input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },
4283
4377
  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }
4284
4378
  };
4285
4379
 
4286
4380
  var XY = {
4287
4381
  name: "xy",
4288
- handles: ["n", "e", "s", "w", "nw", "ne", "se", "sw"].map(type),
4289
- input: function(xy) { return xy; },
4382
+ handles: ["n", "w", "e", "s", "nw", "ne", "sw", "se"].map(type),
4383
+ input: function(xy) { return xy == null ? null : number2(xy); },
4290
4384
  output: function(xy) { return xy; }
4291
4385
  };
4292
4386
 
@@ -4353,14 +4447,22 @@ function type(t) {
4353
4447
 
4354
4448
  // Ignore right-click, since that should open the context menu.
4355
4449
  function defaultFilter$1() {
4356
- return !exports.event.button;
4450
+ return !exports.event.ctrlKey && !exports.event.button;
4357
4451
  }
4358
4452
 
4359
4453
  function defaultExtent() {
4360
4454
  var svg = this.ownerSVGElement || this;
4455
+ if (svg.hasAttribute("viewBox")) {
4456
+ svg = svg.viewBox.baseVal;
4457
+ return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];
4458
+ }
4361
4459
  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];
4362
4460
  }
4363
4461
 
4462
+ function defaultTouchable$1() {
4463
+ return navigator.maxTouchPoints || ("ontouchstart" in this);
4464
+ }
4465
+
4364
4466
  // Like d3.local, but with the name “__brush” rather than auto-generated.
4365
4467
  function local$1(node) {
4366
4468
  while (!node.__brush) if (!(node = node.parentNode)) return;
@@ -4392,7 +4494,9 @@ function brush() {
4392
4494
  function brush$1(dim) {
4393
4495
  var extent = defaultExtent,
4394
4496
  filter = defaultFilter$1,
4395
- listeners = dispatch(brush, "start", "brush", "end"),
4497
+ touchable = defaultTouchable$1,
4498
+ keys = true,
4499
+ listeners = dispatch("start", "brush", "end"),
4396
4500
  handleSize = 6,
4397
4501
  touchending;
4398
4502
 
@@ -4439,11 +4543,16 @@ function brush$1(dim) {
4439
4543
  .each(redraw)
4440
4544
  .attr("fill", "none")
4441
4545
  .attr("pointer-events", "all")
4442
- .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)")
4443
- .on("mousedown.brush touchstart.brush", started);
4546
+ .on("mousedown.brush", started)
4547
+ .filter(touchable)
4548
+ .on("touchstart.brush", started)
4549
+ .on("touchmove.brush", touchmoved)
4550
+ .on("touchend.brush touchcancel.brush", touchended)
4551
+ .style("touch-action", "none")
4552
+ .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
4444
4553
  }
4445
4554
 
4446
- brush.move = function(group, selection$$1) {
4555
+ brush.move = function(group, selection) {
4447
4556
  if (group.selection) {
4448
4557
  group
4449
4558
  .on("start.brush", function() { emitter(this, arguments).beforestart().start(); })
@@ -4453,16 +4562,16 @@ function brush$1(dim) {
4453
4562
  state = that.__brush,
4454
4563
  emit = emitter(that, arguments),
4455
4564
  selection0 = state.selection,
4456
- selection1 = dim.input(typeof selection$$1 === "function" ? selection$$1.apply(this, arguments) : selection$$1, state.extent),
4565
+ selection1 = dim.input(typeof selection === "function" ? selection.apply(this, arguments) : selection, state.extent),
4457
4566
  i = interpolateValue(selection0, selection1);
4458
4567
 
4459
4568
  function tween(t) {
4460
- state.selection = t === 1 && empty$1(selection1) ? null : i(t);
4569
+ state.selection = t === 1 && selection1 === null ? null : i(t);
4461
4570
  redraw.call(that);
4462
4571
  emit.brush();
4463
4572
  }
4464
4573
 
4465
- return selection0 && selection1 ? tween : tween(1);
4574
+ return selection0 !== null && selection1 !== null ? tween : tween(1);
4466
4575
  });
4467
4576
  } else {
4468
4577
  group
@@ -4470,35 +4579,39 @@ function brush$1(dim) {
4470
4579
  var that = this,
4471
4580
  args = arguments,
4472
4581
  state = that.__brush,
4473
- selection1 = dim.input(typeof selection$$1 === "function" ? selection$$1.apply(that, args) : selection$$1, state.extent),
4582
+ selection1 = dim.input(typeof selection === "function" ? selection.apply(that, args) : selection, state.extent),
4474
4583
  emit = emitter(that, args).beforestart();
4475
4584
 
4476
4585
  interrupt(that);
4477
- state.selection = selection1 == null || empty$1(selection1) ? null : selection1;
4586
+ state.selection = selection1 === null ? null : selection1;
4478
4587
  redraw.call(that);
4479
4588
  emit.start().brush().end();
4480
4589
  });
4481
4590
  }
4482
4591
  };
4483
4592
 
4593
+ brush.clear = function(group) {
4594
+ brush.move(group, null);
4595
+ };
4596
+
4484
4597
  function redraw() {
4485
4598
  var group = select(this),
4486
- selection$$1 = local$1(this).selection;
4599
+ selection = local$1(this).selection;
4487
4600
 
4488
- if (selection$$1) {
4601
+ if (selection) {
4489
4602
  group.selectAll(".selection")
4490
4603
  .style("display", null)
4491
- .attr("x", selection$$1[0][0])
4492
- .attr("y", selection$$1[0][1])
4493
- .attr("width", selection$$1[1][0] - selection$$1[0][0])
4494
- .attr("height", selection$$1[1][1] - selection$$1[0][1]);
4604
+ .attr("x", selection[0][0])
4605
+ .attr("y", selection[0][1])
4606
+ .attr("width", selection[1][0] - selection[0][0])
4607
+ .attr("height", selection[1][1] - selection[0][1]);
4495
4608
 
4496
4609
  group.selectAll(".handle")
4497
4610
  .style("display", null)
4498
- .attr("x", function(d) { return d.type[d.type.length - 1] === "e" ? selection$$1[1][0] - handleSize / 2 : selection$$1[0][0] - handleSize / 2; })
4499
- .attr("y", function(d) { return d.type[0] === "s" ? selection$$1[1][1] - handleSize / 2 : selection$$1[0][1] - handleSize / 2; })
4500
- .attr("width", function(d) { return d.type === "n" || d.type === "s" ? selection$$1[1][0] - selection$$1[0][0] + handleSize : handleSize; })
4501
- .attr("height", function(d) { return d.type === "e" || d.type === "w" ? selection$$1[1][1] - selection$$1[0][1] + handleSize : handleSize; });
4611
+ .attr("x", function(d) { return d.type[d.type.length - 1] === "e" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })
4612
+ .attr("y", function(d) { return d.type[0] === "s" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })
4613
+ .attr("width", function(d) { return d.type === "n" || d.type === "s" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })
4614
+ .attr("height", function(d) { return d.type === "e" || d.type === "w" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });
4502
4615
  }
4503
4616
 
4504
4617
  else {
@@ -4511,8 +4624,8 @@ function brush$1(dim) {
4511
4624
  }
4512
4625
  }
4513
4626
 
4514
- function emitter(that, args) {
4515
- return that.__brush.emitter || new Emitter(that, args);
4627
+ function emitter(that, args, clean) {
4628
+ return (!clean && that.__brush.emitter) || new Emitter(that, args);
4516
4629
  }
4517
4630
 
4518
4631
  function Emitter(that, args) {
@@ -4529,6 +4642,7 @@ function brush$1(dim) {
4529
4642
  },
4530
4643
  start: function() {
4531
4644
  if (this.starting) this.starting = false, this.emit("start");
4645
+ else this.emit("brush");
4532
4646
  return this;
4533
4647
  },
4534
4648
  brush: function() {
@@ -4545,42 +4659,43 @@ function brush$1(dim) {
4545
4659
  };
4546
4660
 
4547
4661
  function started() {
4548
- if (exports.event.touches) { if (exports.event.changedTouches.length < exports.event.touches.length) return noevent$1(); }
4549
- else if (touchending) return;
4662
+ if (touchending && !exports.event.touches) return;
4550
4663
  if (!filter.apply(this, arguments)) return;
4551
4664
 
4552
4665
  var that = this,
4553
4666
  type = exports.event.target.__data__.type,
4554
- mode = (exports.event.metaKey ? type = "overlay" : type) === "selection" ? MODE_DRAG : (exports.event.altKey ? MODE_CENTER : MODE_HANDLE),
4667
+ mode = (keys && exports.event.metaKey ? type = "overlay" : type) === "selection" ? MODE_DRAG : (keys && exports.event.altKey ? MODE_CENTER : MODE_HANDLE),
4555
4668
  signX = dim === Y ? null : signsX[type],
4556
4669
  signY = dim === X ? null : signsY[type],
4557
4670
  state = local$1(that),
4558
4671
  extent = state.extent,
4559
- selection$$1 = state.selection,
4672
+ selection = state.selection,
4560
4673
  W = extent[0][0], w0, w1,
4561
4674
  N = extent[0][1], n0, n1,
4562
4675
  E = extent[1][0], e0, e1,
4563
4676
  S = extent[1][1], s0, s1,
4564
- dx,
4565
- dy,
4677
+ dx = 0,
4678
+ dy = 0,
4566
4679
  moving,
4567
- shifting = signX && signY && exports.event.shiftKey,
4680
+ shifting = signX && signY && keys && exports.event.shiftKey,
4568
4681
  lockX,
4569
4682
  lockY,
4570
- point0 = mouse(that),
4571
- point$$1 = point0,
4572
- emit = emitter(that, arguments).beforestart();
4683
+ pointer = exports.event.touches ? toucher(exports.event.changedTouches[0].identifier) : mouse,
4684
+ point0 = pointer(that),
4685
+ point = point0,
4686
+ emit = emitter(that, arguments, true).beforestart();
4573
4687
 
4574
4688
  if (type === "overlay") {
4575
- state.selection = selection$$1 = [
4689
+ if (selection) moving = true;
4690
+ state.selection = selection = [
4576
4691
  [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],
4577
4692
  [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]
4578
4693
  ];
4579
4694
  } else {
4580
- w0 = selection$$1[0][0];
4581
- n0 = selection$$1[0][1];
4582
- e0 = selection$$1[1][0];
4583
- s0 = selection$$1[1][1];
4695
+ w0 = selection[0][0];
4696
+ n0 = selection[0][1];
4697
+ e0 = selection[1][0];
4698
+ s0 = selection[1][1];
4584
4699
  }
4585
4700
 
4586
4701
  w1 = w0;
@@ -4595,15 +4710,15 @@ function brush$1(dim) {
4595
4710
  .attr("cursor", cursors[type]);
4596
4711
 
4597
4712
  if (exports.event.touches) {
4598
- group
4599
- .on("touchmove.brush", moved, true)
4600
- .on("touchend.brush touchcancel.brush", ended, true);
4713
+ emit.moved = moved;
4714
+ emit.ended = ended;
4601
4715
  } else {
4602
4716
  var view = select(exports.event.view)
4603
- .on("keydown.brush", keydowned, true)
4604
- .on("keyup.brush", keyupped, true)
4605
4717
  .on("mousemove.brush", moved, true)
4606
4718
  .on("mouseup.brush", ended, true);
4719
+ if (keys) view
4720
+ .on("keydown.brush", keydowned, true)
4721
+ .on("keyup.brush", keyupped, true);
4607
4722
 
4608
4723
  dragDisable(exports.event.view);
4609
4724
  }
@@ -4614,12 +4729,12 @@ function brush$1(dim) {
4614
4729
  emit.start();
4615
4730
 
4616
4731
  function moved() {
4617
- var point1 = mouse(that);
4732
+ var point1 = pointer(that);
4618
4733
  if (shifting && !lockX && !lockY) {
4619
- if (Math.abs(point1[0] - point$$1[0]) > Math.abs(point1[1] - point$$1[1])) lockY = true;
4734
+ if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;
4620
4735
  else lockX = true;
4621
4736
  }
4622
- point$$1 = point1;
4737
+ point = point1;
4623
4738
  moving = true;
4624
4739
  noevent$1();
4625
4740
  move();
@@ -4628,8 +4743,8 @@ function brush$1(dim) {
4628
4743
  function move() {
4629
4744
  var t;
4630
4745
 
4631
- dx = point$$1[0] - point0[0];
4632
- dy = point$$1[1] - point0[1];
4746
+ dx = point[0] - point0[0];
4747
+ dy = point[1] - point0[1];
4633
4748
 
4634
4749
  switch (mode) {
4635
4750
  case MODE_SPACE:
@@ -4666,14 +4781,14 @@ function brush$1(dim) {
4666
4781
  if (type in flipY) overlay.attr("cursor", cursors[type = flipY[type]]);
4667
4782
  }
4668
4783
 
4669
- if (state.selection) selection$$1 = state.selection; // May be set by brush.move!
4670
- if (lockX) w1 = selection$$1[0][0], e1 = selection$$1[1][0];
4671
- if (lockY) n1 = selection$$1[0][1], s1 = selection$$1[1][1];
4784
+ if (state.selection) selection = state.selection; // May be set by brush.move!
4785
+ if (lockX) w1 = selection[0][0], e1 = selection[1][0];
4786
+ if (lockY) n1 = selection[0][1], s1 = selection[1][1];
4672
4787
 
4673
- if (selection$$1[0][0] !== w1
4674
- || selection$$1[0][1] !== n1
4675
- || selection$$1[1][0] !== e1
4676
- || selection$$1[1][1] !== s1) {
4788
+ if (selection[0][0] !== w1
4789
+ || selection[0][1] !== n1
4790
+ || selection[1][0] !== e1
4791
+ || selection[1][1] !== s1) {
4677
4792
  state.selection = [[w1, n1], [e1, s1]];
4678
4793
  redraw.call(that);
4679
4794
  emit.brush();
@@ -4686,15 +4801,14 @@ function brush$1(dim) {
4686
4801
  if (exports.event.touches.length) return;
4687
4802
  if (touchending) clearTimeout(touchending);
4688
4803
  touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!
4689
- group.on("touchmove.brush touchend.brush touchcancel.brush", null);
4690
4804
  } else {
4691
4805
  yesdrag(exports.event.view, moving);
4692
4806
  view.on("keydown.brush keyup.brush mousemove.brush mouseup.brush", null);
4693
4807
  }
4694
4808
  group.attr("pointer-events", "all");
4695
4809
  overlay.attr("cursor", cursors.overlay);
4696
- if (state.selection) selection$$1 = state.selection; // May be set by brush.move (on start)!
4697
- if (empty$1(selection$$1)) state.selection = null, redraw.call(that);
4810
+ if (state.selection) selection = state.selection; // May be set by brush.move (on start)!
4811
+ if (empty$1(selection)) state.selection = null, redraw.call(that);
4698
4812
  emit.end();
4699
4813
  }
4700
4814
 
@@ -4768,25 +4882,41 @@ function brush$1(dim) {
4768
4882
  }
4769
4883
  }
4770
4884
 
4885
+ function touchmoved() {
4886
+ emitter(this, arguments).moved();
4887
+ }
4888
+
4889
+ function touchended() {
4890
+ emitter(this, arguments).ended();
4891
+ }
4892
+
4771
4893
  function initialize() {
4772
4894
  var state = this.__brush || {selection: null};
4773
- state.extent = extent.apply(this, arguments);
4895
+ state.extent = number2(extent.apply(this, arguments));
4774
4896
  state.dim = dim;
4775
4897
  return state;
4776
4898
  }
4777
4899
 
4778
4900
  brush.extent = function(_) {
4779
- return arguments.length ? (extent = typeof _ === "function" ? _ : constant$4([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), brush) : extent;
4901
+ return arguments.length ? (extent = typeof _ === "function" ? _ : constant$4(number2(_)), brush) : extent;
4780
4902
  };
4781
4903
 
4782
4904
  brush.filter = function(_) {
4783
4905
  return arguments.length ? (filter = typeof _ === "function" ? _ : constant$4(!!_), brush) : filter;
4784
4906
  };
4785
4907
 
4908
+ brush.touchable = function(_) {
4909
+ return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$4(!!_), brush) : touchable;
4910
+ };
4911
+
4786
4912
  brush.handleSize = function(_) {
4787
4913
  return arguments.length ? (handleSize = +_, brush) : handleSize;
4788
4914
  };
4789
4915
 
4916
+ brush.keyModifiers = function(_) {
4917
+ return arguments.length ? (keys = !!_, brush) : keys;
4918
+ };
4919
+
4790
4920
  brush.on = function() {
4791
4921
  var value = listeners.on.apply(listeners, arguments);
4792
4922
  return value === listeners ? brush : value;
@@ -5013,7 +5143,7 @@ Path.prototype = path.prototype = {
5013
5143
  }
5014
5144
  },
5015
5145
  arc: function(x, y, r, a0, a1, ccw) {
5016
- x = +x, y = +y, r = +r;
5146
+ x = +x, y = +y, r = +r, ccw = !!ccw;
5017
5147
  var dx = r * Math.cos(a0),
5018
5148
  dy = r * Math.sin(a0),
5019
5149
  x0 = x + dx,
@@ -5413,11 +5543,11 @@ var cases = [
5413
5543
  function contours() {
5414
5544
  var dx = 1,
5415
5545
  dy = 1,
5416
- threshold$$1 = thresholdSturges,
5546
+ threshold = thresholdSturges,
5417
5547
  smooth = smoothLinear;
5418
5548
 
5419
5549
  function contours(values) {
5420
- var tz = threshold$$1(values);
5550
+ var tz = threshold(values);
5421
5551
 
5422
5552
  // Convert number of thresholds into uniform thresholds.
5423
5553
  if (!Array.isArray(tz)) {
@@ -5577,7 +5707,7 @@ function contours() {
5577
5707
  };
5578
5708
 
5579
5709
  contours.thresholds = function(_) {
5580
- return arguments.length ? (threshold$$1 = typeof _ === "function" ? _ : Array.isArray(_) ? constant$6(slice$3.call(_)) : constant$6(_), contours) : threshold$$1;
5710
+ return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant$6(slice$3.call(_)) : constant$6(_), contours) : threshold;
5581
5711
  };
5582
5712
 
5583
5713
  contours.smooth = function(_) {
@@ -5654,7 +5784,7 @@ function density() {
5654
5784
  o = r * 3, // grid offset, to pad for blur
5655
5785
  n = (dx + o * 2) >> k, // grid width
5656
5786
  m = (dy + o * 2) >> k, // grid height
5657
- threshold$$1 = constant$6(20);
5787
+ threshold = constant$6(20);
5658
5788
 
5659
5789
  function density(data) {
5660
5790
  var values0 = new Float32Array(n * m),
@@ -5677,7 +5807,7 @@ function density() {
5677
5807
  blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);
5678
5808
  blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);
5679
5809
 
5680
- var tz = threshold$$1(values0);
5810
+ var tz = threshold(values0);
5681
5811
 
5682
5812
  // Convert number of thresholds into uniform thresholds.
5683
5813
  if (!Array.isArray(tz)) {
@@ -5747,7 +5877,7 @@ function density() {
5747
5877
  };
5748
5878
 
5749
5879
  density.thresholds = function(_) {
5750
- return arguments.length ? (threshold$$1 = typeof _ === "function" ? _ : Array.isArray(_) ? constant$6(slice$3.call(_)) : constant$6(_), density) : threshold$$1;
5880
+ return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant$6(slice$3.call(_)) : constant$6(_), density) : threshold;
5751
5881
  };
5752
5882
 
5753
5883
  density.bandwidth = function(_) {
@@ -5767,7 +5897,7 @@ var EOL = {},
5767
5897
 
5768
5898
  function objectConverter(columns) {
5769
5899
  return new Function("d", "return {" + columns.map(function(name, i) {
5770
- return JSON.stringify(name) + ": d[" + i + "]";
5900
+ return JSON.stringify(name) + ": d[" + i + "] || \"\"";
5771
5901
  }).join(",") + "}");
5772
5902
  }
5773
5903
 
@@ -5811,7 +5941,7 @@ function formatDate(date) {
5811
5941
  seconds = date.getUTCSeconds(),
5812
5942
  milliseconds = date.getUTCMilliseconds();
5813
5943
  return isNaN(date) ? "Invalid Date"
5814
- : formatYear(date.getUTCFullYear(), 4) + "-" + pad(date.getUTCMonth() + 1, 2) + "-" + pad(date.getUTCDate(), 2)
5944
+ : formatYear(date.getUTCFullYear()) + "-" + pad(date.getUTCMonth() + 1, 2) + "-" + pad(date.getUTCDate(), 2)
5815
5945
  + (milliseconds ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + ":" + pad(seconds, 2) + "." + pad(milliseconds, 3) + "Z"
5816
5946
  : seconds ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + ":" + pad(seconds, 2) + "Z"
5817
5947
  : minutes || hours ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + "Z"
@@ -5918,7 +6048,9 @@ function dsvFormat(delimiter) {
5918
6048
  parseRows: parseRows,
5919
6049
  format: format,
5920
6050
  formatBody: formatBody,
5921
- formatRows: formatRows
6051
+ formatRows: formatRows,
6052
+ formatRow: formatRow,
6053
+ formatValue: formatValue
5922
6054
  };
5923
6055
  }
5924
6056
 
@@ -5929,6 +6061,8 @@ var csvParseRows = csv.parseRows;
5929
6061
  var csvFormat = csv.format;
5930
6062
  var csvFormatBody = csv.formatBody;
5931
6063
  var csvFormatRows = csv.formatRows;
6064
+ var csvFormatRow = csv.formatRow;
6065
+ var csvFormatValue = csv.formatValue;
5932
6066
 
5933
6067
  var tsv = dsvFormat("\t");
5934
6068
 
@@ -5937,22 +6071,30 @@ var tsvParseRows = tsv.parseRows;
5937
6071
  var tsvFormat = tsv.format;
5938
6072
  var tsvFormatBody = tsv.formatBody;
5939
6073
  var tsvFormatRows = tsv.formatRows;
6074
+ var tsvFormatRow = tsv.formatRow;
6075
+ var tsvFormatValue = tsv.formatValue;
5940
6076
 
5941
6077
  function autoType(object) {
5942
6078
  for (var key in object) {
5943
- var value = object[key].trim(), number;
6079
+ var value = object[key].trim(), number, m;
5944
6080
  if (!value) value = null;
5945
6081
  else if (value === "true") value = true;
5946
6082
  else if (value === "false") value = false;
5947
6083
  else if (value === "NaN") value = NaN;
5948
6084
  else if (!isNaN(number = +value)) value = number;
5949
- else if (/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/.test(value)) value = new Date(value);
6085
+ else if (m = value.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)) {
6086
+ if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, "/").replace(/T/, " ");
6087
+ value = new Date(value);
6088
+ }
5950
6089
  else continue;
5951
6090
  object[key] = value;
5952
6091
  }
5953
6092
  return object;
5954
6093
  }
5955
6094
 
6095
+ // https://github.com/d3/d3-dsv/issues/45
6096
+ var fixtz = new Date("2019-01-01T00:00").getHours() || new Date("2019-07-01T00:00").getHours();
6097
+
5956
6098
  function responseBlob(response) {
5957
6099
  if (!response.ok) throw new Error(response.status + " " + response.statusText);
5958
6100
  return response.blob();
@@ -6021,8 +6163,8 @@ function json(input, init) {
6021
6163
 
6022
6164
  function parser(type) {
6023
6165
  return function(input, init) {
6024
- return text(input, init).then(function(text$$1) {
6025
- return (new DOMParser).parseFromString(text$$1, type);
6166
+ return text(input, init).then(function(text) {
6167
+ return (new DOMParser).parseFromString(text, type);
6026
6168
  });
6027
6169
  };
6028
6170
  }
@@ -7139,24 +7281,35 @@ function formatNumerals(numerals) {
7139
7281
  var re = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;
7140
7282
 
7141
7283
  function formatSpecifier(specifier) {
7142
- return new FormatSpecifier(specifier);
7284
+ if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier);
7285
+ var match;
7286
+ return new FormatSpecifier({
7287
+ fill: match[1],
7288
+ align: match[2],
7289
+ sign: match[3],
7290
+ symbol: match[4],
7291
+ zero: match[5],
7292
+ width: match[6],
7293
+ comma: match[7],
7294
+ precision: match[8] && match[8].slice(1),
7295
+ trim: match[9],
7296
+ type: match[10]
7297
+ });
7143
7298
  }
7144
7299
 
7145
7300
  formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof
7146
7301
 
7147
7302
  function FormatSpecifier(specifier) {
7148
- if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier);
7149
- var match;
7150
- this.fill = match[1] || " ";
7151
- this.align = match[2] || ">";
7152
- this.sign = match[3] || "-";
7153
- this.symbol = match[4] || "";
7154
- this.zero = !!match[5];
7155
- this.width = match[6] && +match[6];
7156
- this.comma = !!match[7];
7157
- this.precision = match[8] && +match[8].slice(1);
7158
- this.trim = !!match[9];
7159
- this.type = match[10] || "";
7303
+ this.fill = specifier.fill === undefined ? " " : specifier.fill + "";
7304
+ this.align = specifier.align === undefined ? ">" : specifier.align + "";
7305
+ this.sign = specifier.sign === undefined ? "-" : specifier.sign + "";
7306
+ this.symbol = specifier.symbol === undefined ? "" : specifier.symbol + "";
7307
+ this.zero = !!specifier.zero;
7308
+ this.width = specifier.width === undefined ? undefined : +specifier.width;
7309
+ this.comma = !!specifier.comma;
7310
+ this.precision = specifier.precision === undefined ? undefined : +specifier.precision;
7311
+ this.trim = !!specifier.trim;
7312
+ this.type = specifier.type === undefined ? "" : specifier.type + "";
7160
7313
  }
7161
7314
 
7162
7315
  FormatSpecifier.prototype.toString = function() {
@@ -7165,9 +7318,9 @@ FormatSpecifier.prototype.toString = function() {
7165
7318
  + this.sign
7166
7319
  + this.symbol
7167
7320
  + (this.zero ? "0" : "")
7168
- + (this.width == null ? "" : Math.max(1, this.width | 0))
7321
+ + (this.width === undefined ? "" : Math.max(1, this.width | 0))
7169
7322
  + (this.comma ? "," : "")
7170
- + (this.precision == null ? "" : "." + Math.max(0, this.precision | 0))
7323
+ + (this.precision === undefined ? "" : "." + Math.max(0, this.precision | 0))
7171
7324
  + (this.trim ? "~" : "")
7172
7325
  + this.type;
7173
7326
  };
@@ -7178,7 +7331,7 @@ function formatTrim(s) {
7178
7331
  switch (s[i]) {
7179
7332
  case ".": i0 = i1 = i; break;
7180
7333
  case "0": if (i0 === 0) i0 = i; i1 = i; break;
7181
- default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;
7334
+ default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;
7182
7335
  }
7183
7336
  }
7184
7337
  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;
@@ -7229,14 +7382,18 @@ function identity$3(x) {
7229
7382
  return x;
7230
7383
  }
7231
7384
 
7232
- var prefixes = ["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];
7385
+ var map$2 = Array.prototype.map,
7386
+ prefixes = ["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];
7233
7387
 
7234
7388
  function formatLocale(locale) {
7235
- var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity$3,
7236
- currency = locale.currency,
7237
- decimal = locale.decimal,
7238
- numerals = locale.numerals ? formatNumerals(locale.numerals) : identity$3,
7239
- percent = locale.percent || "%";
7389
+ var group = locale.grouping === undefined || locale.thousands === undefined ? identity$3 : formatGroup(map$2.call(locale.grouping, Number), locale.thousands + ""),
7390
+ currencyPrefix = locale.currency === undefined ? "" : locale.currency[0] + "",
7391
+ currencySuffix = locale.currency === undefined ? "" : locale.currency[1] + "",
7392
+ decimal = locale.decimal === undefined ? "." : locale.decimal + "",
7393
+ numerals = locale.numerals === undefined ? identity$3 : formatNumerals(map$2.call(locale.numerals, String)),
7394
+ percent = locale.percent === undefined ? "%" : locale.percent + "",
7395
+ minus = locale.minus === undefined ? "-" : locale.minus + "",
7396
+ nan = locale.nan === undefined ? "NaN" : locale.nan + "";
7240
7397
 
7241
7398
  function newFormat(specifier) {
7242
7399
  specifier = formatSpecifier(specifier);
@@ -7256,15 +7413,15 @@ function formatLocale(locale) {
7256
7413
  if (type === "n") comma = true, type = "g";
7257
7414
 
7258
7415
  // The "" type, and any invalid type, is an alias for ".12~g".
7259
- else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = "g";
7416
+ else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = "g";
7260
7417
 
7261
7418
  // If zero fill is specified, padding goes after sign and before digits.
7262
7419
  if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "=";
7263
7420
 
7264
7421
  // Compute the prefix and suffix.
7265
7422
  // For SI-prefix, the suffix is lazily computed.
7266
- var prefix = symbol === "$" ? currency[0] : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "",
7267
- suffix = symbol === "$" ? currency[1] : /[%p]/.test(type) ? percent : "";
7423
+ var prefix = symbol === "$" ? currencyPrefix : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "",
7424
+ suffix = symbol === "$" ? currencySuffix : /[%p]/.test(type) ? percent : "";
7268
7425
 
7269
7426
  // What format function should we use?
7270
7427
  // Is this an integer type?
@@ -7276,7 +7433,7 @@ function formatLocale(locale) {
7276
7433
  // or clamp the specified precision to the supported range.
7277
7434
  // For significant precision, it must be in [1, 21].
7278
7435
  // For fixed precision, it must be in [0, 20].
7279
- precision = precision == null ? 6
7436
+ precision = precision === undefined ? 6
7280
7437
  : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))
7281
7438
  : Math.max(0, Math.min(20, precision));
7282
7439
 
@@ -7291,18 +7448,20 @@ function formatLocale(locale) {
7291
7448
  } else {
7292
7449
  value = +value;
7293
7450
 
7451
+ // Determine the sign. -0 is not less than 0, but 1 / -0 is!
7452
+ var valueNegative = value < 0 || 1 / value < 0;
7453
+
7294
7454
  // Perform the initial formatting.
7295
- var valueNegative = value < 0;
7296
- value = formatType(Math.abs(value), precision);
7455
+ value = isNaN(value) ? nan : formatType(Math.abs(value), precision);
7297
7456
 
7298
7457
  // Trim insignificant zeros.
7299
7458
  if (trim) value = formatTrim(value);
7300
7459
 
7301
- // If a negative value rounds to zero during formatting, treat as positive.
7302
- if (valueNegative && +value === 0) valueNegative = false;
7460
+ // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.
7461
+ if (valueNegative && +value === 0 && sign !== "+") valueNegative = false;
7303
7462
 
7304
7463
  // Compute the prefix and suffix.
7305
- valuePrefix = (valueNegative ? (sign === "(" ? sign : "-") : sign === "-" || sign === "(" ? "" : sign) + valuePrefix;
7464
+ valuePrefix = (valueNegative ? (sign === "(" ? sign : minus) : sign === "-" || sign === "(" ? "" : sign) + valuePrefix;
7306
7465
  valueSuffix = (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : "");
7307
7466
 
7308
7467
  // Break the formatted value into the integer “value” part that can be
@@ -7369,7 +7528,8 @@ defaultLocale({
7369
7528
  decimal: ".",
7370
7529
  thousands: ",",
7371
7530
  grouping: [3],
7372
- currency: ["$", ""]
7531
+ currency: ["$", ""],
7532
+ minus: "-"
7373
7533
  });
7374
7534
 
7375
7535
  function defaultLocale(definition) {
@@ -7670,6 +7830,9 @@ var boundsStream = {
7670
7830
  else if (deltaSum > epsilon$2) phi1 = 90;
7671
7831
  else if (deltaSum < -epsilon$2) phi0 = -90;
7672
7832
  range[0] = lambda0$1, range[1] = lambda1;
7833
+ },
7834
+ sphere: function() {
7835
+ lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90);
7673
7836
  }
7674
7837
  };
7675
7838
 
@@ -7688,14 +7851,14 @@ function linePoint(lambda, phi) {
7688
7851
  cartesianNormalizeInPlace(inflection);
7689
7852
  inflection = spherical(inflection);
7690
7853
  var delta = lambda - lambda2,
7691
- sign$$1 = delta > 0 ? 1 : -1,
7692
- lambdai = inflection[0] * degrees$1 * sign$$1,
7854
+ sign = delta > 0 ? 1 : -1,
7855
+ lambdai = inflection[0] * degrees$1 * sign,
7693
7856
  phii,
7694
7857
  antimeridian = abs(delta) > 180;
7695
- if (antimeridian ^ (sign$$1 * lambda2 < lambdai && lambdai < sign$$1 * lambda)) {
7858
+ if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {
7696
7859
  phii = inflection[1] * degrees$1;
7697
7860
  if (phii > phi1) phi1 = phii;
7698
- } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign$$1 * lambda2 < lambdai && lambdai < sign$$1 * lambda)) {
7861
+ } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {
7699
7862
  phii = -inflection[1] * degrees$1;
7700
7863
  if (phii < phi0) phi0 = phii;
7701
7864
  } else {
@@ -8240,8 +8403,15 @@ function link$1(array) {
8240
8403
 
8241
8404
  var sum$1 = adder();
8242
8405
 
8406
+ function longitude(point) {
8407
+ if (abs(point[0]) <= pi$3)
8408
+ return point[0];
8409
+ else
8410
+ return sign(point[0]) * ((abs(point[0]) + pi$3) % tau$3 - pi$3);
8411
+ }
8412
+
8243
8413
  function polygonContains(polygon, point) {
8244
- var lambda = point[0],
8414
+ var lambda = longitude(point),
8245
8415
  phi = point[1],
8246
8416
  sinPhi = sin$1(phi),
8247
8417
  normal = [sin$1(lambda), -cos$1(lambda), 0],
@@ -8258,25 +8428,25 @@ function polygonContains(polygon, point) {
8258
8428
  var ring,
8259
8429
  m,
8260
8430
  point0 = ring[m - 1],
8261
- lambda0 = point0[0],
8431
+ lambda0 = longitude(point0),
8262
8432
  phi0 = point0[1] / 2 + quarterPi,
8263
8433
  sinPhi0 = sin$1(phi0),
8264
8434
  cosPhi0 = cos$1(phi0);
8265
8435
 
8266
8436
  for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {
8267
8437
  var point1 = ring[j],
8268
- lambda1 = point1[0],
8438
+ lambda1 = longitude(point1),
8269
8439
  phi1 = point1[1] / 2 + quarterPi,
8270
8440
  sinPhi1 = sin$1(phi1),
8271
8441
  cosPhi1 = cos$1(phi1),
8272
8442
  delta = lambda1 - lambda0,
8273
- sign$$1 = delta >= 0 ? 1 : -1,
8274
- absDelta = sign$$1 * delta,
8443
+ sign = delta >= 0 ? 1 : -1,
8444
+ absDelta = sign * delta,
8275
8445
  antimeridian = absDelta > pi$3,
8276
8446
  k = sinPhi0 * sinPhi1;
8277
8447
 
8278
- sum$1.add(atan2(k * sign$$1 * sin$1(absDelta), cosPhi0 * cosPhi1 + k * cos$1(absDelta)));
8279
- angle += antimeridian ? delta + sign$$1 * tau$3 : delta;
8448
+ sum$1.add(atan2(k * sign * sin$1(absDelta), cosPhi0 * cosPhi1 + k * cos$1(absDelta)));
8449
+ angle += antimeridian ? delta + sign * tau$3 : delta;
8280
8450
 
8281
8451
  // Are the longitudes either side of the point’s meridian (lambda),
8282
8452
  // and are the latitudes smaller than the parallel (phi)?
@@ -9057,10 +9227,23 @@ function containsPoint(coordinates, point) {
9057
9227
  }
9058
9228
 
9059
9229
  function containsLine(coordinates, point) {
9060
- var ab = distance(coordinates[0], coordinates[1]),
9061
- ao = distance(coordinates[0], point),
9062
- ob = distance(point, coordinates[1]);
9063
- return ao + ob <= ab + epsilon$2;
9230
+ var ao, bo, ab;
9231
+ for (var i = 0, n = coordinates.length; i < n; i++) {
9232
+ bo = distance(coordinates[i], point);
9233
+ if (bo === 0) return true;
9234
+ if (i > 0) {
9235
+ ab = distance(coordinates[i], coordinates[i - 1]);
9236
+ if (
9237
+ ab > 0 &&
9238
+ ao <= ab &&
9239
+ bo <= ab &&
9240
+ (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2$1 * ab
9241
+ )
9242
+ return true;
9243
+ }
9244
+ ao = bo;
9245
+ }
9246
+ return false;
9064
9247
  }
9065
9248
 
9066
9249
  function containsPolygon(coordinates, point) {
@@ -9772,17 +9955,18 @@ function transformRotate(rotate) {
9772
9955
  });
9773
9956
  }
9774
9957
 
9775
- function scaleTranslate(k, dx, dy) {
9776
- function transform$$1(x, y) {
9958
+ function scaleTranslate(k, dx, dy, sx, sy) {
9959
+ function transform(x, y) {
9960
+ x *= sx; y *= sy;
9777
9961
  return [dx + k * x, dy - k * y];
9778
9962
  }
9779
- transform$$1.invert = function(x, y) {
9780
- return [(x - dx) / k, (dy - y) / k];
9963
+ transform.invert = function(x, y) {
9964
+ return [(x - dx) / k * sx, (dy - y) / k * sy];
9781
9965
  };
9782
- return transform$$1;
9966
+ return transform;
9783
9967
  }
9784
9968
 
9785
- function scaleTranslateRotate(k, dx, dy, alpha) {
9969
+ function scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {
9786
9970
  var cosAlpha = cos$1(alpha),
9787
9971
  sinAlpha = sin$1(alpha),
9788
9972
  a = cosAlpha * k,
@@ -9791,13 +9975,14 @@ function scaleTranslateRotate(k, dx, dy, alpha) {
9791
9975
  bi = sinAlpha / k,
9792
9976
  ci = (sinAlpha * dy - cosAlpha * dx) / k,
9793
9977
  fi = (sinAlpha * dx + cosAlpha * dy) / k;
9794
- function transform$$1(x, y) {
9978
+ function transform(x, y) {
9979
+ x *= sx; y *= sy;
9795
9980
  return [a * x - b * y + dx, dy - b * x - a * y];
9796
9981
  }
9797
- transform$$1.invert = function(x, y) {
9798
- return [ai * x - bi * y + ci, fi - bi * x - ai * y];
9982
+ transform.invert = function(x, y) {
9983
+ return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];
9799
9984
  };
9800
- return transform$$1;
9985
+ return transform;
9801
9986
  }
9802
9987
 
9803
9988
  function projection(project) {
@@ -9810,7 +9995,9 @@ function projectionMutator(projectAt) {
9810
9995
  x = 480, y = 250, // translate
9811
9996
  lambda = 0, phi = 0, // center
9812
9997
  deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate
9813
- alpha = 0, // post-rotate
9998
+ alpha = 0, // post-rotate angle
9999
+ sx = 1, // reflectX
10000
+ sy = 1, // reflectX
9814
10001
  theta = null, preclip = clipAntimeridian, // pre-clip angle
9815
10002
  x0 = null, y0, x1, y1, postclip = identity$4, // post-clip extent
9816
10003
  delta2 = 0.5, // precision
@@ -9869,6 +10056,14 @@ function projectionMutator(projectAt) {
9869
10056
  return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees$1;
9870
10057
  };
9871
10058
 
10059
+ projection.reflectX = function(_) {
10060
+ return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;
10061
+ };
10062
+
10063
+ projection.reflectY = function(_) {
10064
+ return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;
10065
+ };
10066
+
9872
10067
  projection.precision = function(_) {
9873
10068
  return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);
9874
10069
  };
@@ -9890,10 +10085,10 @@ function projectionMutator(projectAt) {
9890
10085
  };
9891
10086
 
9892
10087
  function recenter() {
9893
- var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)),
9894
- transform$$1 = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha);
10088
+ var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),
10089
+ transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], sx, sy, alpha);
9895
10090
  rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);
9896
- projectTransform = compose(project, transform$$1);
10091
+ projectTransform = compose(project, transform);
9897
10092
  projectRotateTransform = compose(rotate, projectTransform);
9898
10093
  projectResample = resample(projectTransform, delta2);
9899
10094
  return reset();
@@ -9952,8 +10147,11 @@ function conicEqualAreaRaw(y0, y1) {
9952
10147
  }
9953
10148
 
9954
10149
  project.invert = function(x, y) {
9955
- var r0y = r0 - y;
9956
- return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];
10150
+ var r0y = r0 - y,
10151
+ l = atan2(x, abs(r0y)) * sign(r0y);
10152
+ if (r0y * n < 0)
10153
+ l -= pi$3 * sign(x) * sign(r0y);
10154
+ return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];
9957
10155
  };
9958
10156
 
9959
10157
  return project;
@@ -10202,8 +10400,11 @@ function conicConformalRaw(y0, y1) {
10202
10400
  }
10203
10401
 
10204
10402
  project.invert = function(x, y) {
10205
- var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);
10206
- return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi$2];
10403
+ var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),
10404
+ l = atan2(x, abs(fy)) * sign(fy);
10405
+ if (fy * n < 0)
10406
+ l -= pi$3 * sign(x) * sign(fy);
10407
+ return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi$2];
10207
10408
  };
10208
10409
 
10209
10410
  return project;
@@ -10239,8 +10440,11 @@ function conicEquidistantRaw(y0, y1) {
10239
10440
  }
10240
10441
 
10241
10442
  project.invert = function(x, y) {
10242
- var gy = g - y;
10243
- return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];
10443
+ var gy = g - y,
10444
+ l = atan2(x, abs(gy)) * sign(gy);
10445
+ if (gy * n < 0)
10446
+ l -= pi$3 * sign(x) * sign(gy);
10447
+ return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];
10244
10448
  };
10245
10449
 
10246
10450
  return project;
@@ -10299,62 +10503,84 @@ function gnomonic() {
10299
10503
  .clipAngle(60);
10300
10504
  }
10301
10505
 
10302
- function scaleTranslate$1(kx, ky, tx, ty) {
10303
- return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity$4 : transformer({
10304
- point: function(x, y) {
10305
- this.stream.point(x * kx + tx, y * ky + ty);
10306
- }
10307
- });
10308
- }
10309
-
10310
10506
  function identity$5() {
10311
- var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform$$1 = identity$4, // scale, translate and reflect
10507
+ var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect
10508
+ alpha = 0, ca, sa, // angle
10312
10509
  x0 = null, y0, x1, y1, // clip extent
10510
+ kx = 1, ky = 1,
10511
+ transform = transformer({
10512
+ point: function(x, y) {
10513
+ var p = projection([x, y]);
10514
+ this.stream.point(p[0], p[1]);
10515
+ }
10516
+ }),
10313
10517
  postclip = identity$4,
10314
10518
  cache,
10315
- cacheStream,
10316
- projection;
10519
+ cacheStream;
10317
10520
 
10318
10521
  function reset() {
10522
+ kx = k * sx;
10523
+ ky = k * sy;
10319
10524
  cache = cacheStream = null;
10320
10525
  return projection;
10321
10526
  }
10322
10527
 
10323
- return projection = {
10324
- stream: function(stream) {
10325
- return cache && cacheStream === stream ? cache : cache = transform$$1(postclip(cacheStream = stream));
10326
- },
10327
- postclip: function(_) {
10328
- return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;
10329
- },
10330
- clipExtent: function(_) {
10331
- return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$4) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];
10332
- },
10333
- scale: function(_) {
10334
- return arguments.length ? (transform$$1 = scaleTranslate$1((k = +_) * sx, k * sy, tx, ty), reset()) : k;
10335
- },
10336
- translate: function(_) {
10337
- return arguments.length ? (transform$$1 = scaleTranslate$1(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];
10338
- },
10339
- reflectX: function(_) {
10340
- return arguments.length ? (transform$$1 = scaleTranslate$1(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;
10341
- },
10342
- reflectY: function(_) {
10343
- return arguments.length ? (transform$$1 = scaleTranslate$1(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;
10344
- },
10345
- fitExtent: function(extent, object) {
10346
- return fitExtent(projection, extent, object);
10347
- },
10348
- fitSize: function(size, object) {
10349
- return fitSize(projection, size, object);
10350
- },
10351
- fitWidth: function(width, object) {
10352
- return fitWidth(projection, width, object);
10353
- },
10354
- fitHeight: function(height, object) {
10355
- return fitHeight(projection, height, object);
10528
+ function projection (p) {
10529
+ var x = p[0] * kx, y = p[1] * ky;
10530
+ if (alpha) {
10531
+ var t = y * ca - x * sa;
10532
+ x = x * ca + y * sa;
10533
+ y = t;
10534
+ }
10535
+ return [x + tx, y + ty];
10536
+ }
10537
+ projection.invert = function(p) {
10538
+ var x = p[0] - tx, y = p[1] - ty;
10539
+ if (alpha) {
10540
+ var t = y * ca + x * sa;
10541
+ x = x * ca - y * sa;
10542
+ y = t;
10356
10543
  }
10544
+ return [x / kx, y / ky];
10545
+ };
10546
+ projection.stream = function(stream) {
10547
+ return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));
10548
+ };
10549
+ projection.postclip = function(_) {
10550
+ return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;
10551
+ };
10552
+ projection.clipExtent = function(_) {
10553
+ return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$4) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];
10554
+ };
10555
+ projection.scale = function(_) {
10556
+ return arguments.length ? (k = +_, reset()) : k;
10557
+ };
10558
+ projection.translate = function(_) {
10559
+ return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];
10560
+ };
10561
+ projection.angle = function(_) {
10562
+ return arguments.length ? (alpha = _ % 360 * radians, sa = sin$1(alpha), ca = cos$1(alpha), reset()) : alpha * degrees$1;
10563
+ };
10564
+ projection.reflectX = function(_) {
10565
+ return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;
10566
+ };
10567
+ projection.reflectY = function(_) {
10568
+ return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;
10569
+ };
10570
+ projection.fitExtent = function(extent, object) {
10571
+ return fitExtent(projection, extent, object);
10357
10572
  };
10573
+ projection.fitSize = function(size, object) {
10574
+ return fitSize(projection, size, object);
10575
+ };
10576
+ projection.fitWidth = function(width, object) {
10577
+ return fitWidth(projection, width, object);
10578
+ };
10579
+ projection.fitHeight = function(height, object) {
10580
+ return fitHeight(projection, height, object);
10581
+ };
10582
+
10583
+ return projection;
10358
10584
  }
10359
10585
 
10360
10586
  function naturalEarth1Raw(lambda, phi) {
@@ -11951,7 +12177,7 @@ function initInterpolator(domain, interpolator) {
11951
12177
 
11952
12178
  var array$3 = Array.prototype;
11953
12179
 
11954
- var map$2 = array$3.map;
12180
+ var map$3 = array$3.map;
11955
12181
  var slice$5 = array$3.slice;
11956
12182
 
11957
12183
  var implicit = {name: "implicit"};
@@ -12000,7 +12226,7 @@ function band() {
12000
12226
  var scale = ordinal().unknown(undefined),
12001
12227
  domain = scale.domain,
12002
12228
  ordinalRange = scale.range,
12003
- range$$1 = [0, 1],
12229
+ range = [0, 1],
12004
12230
  step,
12005
12231
  bandwidth,
12006
12232
  round = false,
@@ -12012,9 +12238,9 @@ function band() {
12012
12238
 
12013
12239
  function rescale() {
12014
12240
  var n = domain().length,
12015
- reverse = range$$1[1] < range$$1[0],
12016
- start = range$$1[reverse - 0],
12017
- stop = range$$1[1 - reverse];
12241
+ reverse = range[1] < range[0],
12242
+ start = range[reverse - 0],
12243
+ stop = range[1 - reverse];
12018
12244
  step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);
12019
12245
  if (round) step = Math.floor(step);
12020
12246
  start += (stop - start - step * (n - paddingInner)) * align;
@@ -12029,11 +12255,11 @@ function band() {
12029
12255
  };
12030
12256
 
12031
12257
  scale.range = function(_) {
12032
- return arguments.length ? (range$$1 = [+_[0], +_[1]], rescale()) : range$$1.slice();
12258
+ return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();
12033
12259
  };
12034
12260
 
12035
12261
  scale.rangeRound = function(_) {
12036
- return range$$1 = [+_[0], +_[1]], round = true, rescale();
12262
+ return range = [+_[0], +_[1]], round = true, rescale();
12037
12263
  };
12038
12264
 
12039
12265
  scale.bandwidth = function() {
@@ -12065,7 +12291,7 @@ function band() {
12065
12291
  };
12066
12292
 
12067
12293
  scale.copy = function() {
12068
- return band(domain(), range$$1)
12294
+ return band(domain(), range)
12069
12295
  .round(round)
12070
12296
  .paddingInner(paddingInner)
12071
12297
  .paddingOuter(paddingOuter)
@@ -12123,14 +12349,14 @@ function clamper(domain) {
12123
12349
 
12124
12350
  // normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].
12125
12351
  // interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].
12126
- function bimap(domain, range, interpolate$$1) {
12352
+ function bimap(domain, range, interpolate) {
12127
12353
  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];
12128
- if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate$$1(r1, r0);
12129
- else d0 = normalize(d0, d1), r0 = interpolate$$1(r0, r1);
12354
+ if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);
12355
+ else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);
12130
12356
  return function(x) { return r0(d0(x)); };
12131
12357
  }
12132
12358
 
12133
- function polymap(domain, range, interpolate$$1) {
12359
+ function polymap(domain, range, interpolate) {
12134
12360
  var j = Math.min(domain.length, range.length) - 1,
12135
12361
  d = new Array(j),
12136
12362
  r = new Array(j),
@@ -12144,7 +12370,7 @@ function polymap(domain, range, interpolate$$1) {
12144
12370
 
12145
12371
  while (++i < j) {
12146
12372
  d[i] = normalize(domain[i], domain[i + 1]);
12147
- r[i] = interpolate$$1(range[i], range[i + 1]);
12373
+ r[i] = interpolate(range[i], range[i + 1]);
12148
12374
  }
12149
12375
 
12150
12376
  return function(x) {
@@ -12165,31 +12391,31 @@ function copy(source, target) {
12165
12391
  function transformer$1() {
12166
12392
  var domain = unit,
12167
12393
  range = unit,
12168
- interpolate$$1 = interpolateValue,
12394
+ interpolate = interpolateValue,
12169
12395
  transform,
12170
12396
  untransform,
12171
12397
  unknown,
12172
12398
  clamp = identity$6,
12173
- piecewise$$1,
12399
+ piecewise,
12174
12400
  output,
12175
12401
  input;
12176
12402
 
12177
12403
  function rescale() {
12178
- piecewise$$1 = Math.min(domain.length, range.length) > 2 ? polymap : bimap;
12404
+ piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;
12179
12405
  output = input = null;
12180
12406
  return scale;
12181
12407
  }
12182
12408
 
12183
12409
  function scale(x) {
12184
- return isNaN(x = +x) ? unknown : (output || (output = piecewise$$1(domain.map(transform), range, interpolate$$1)))(transform(clamp(x)));
12410
+ return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));
12185
12411
  }
12186
12412
 
12187
12413
  scale.invert = function(y) {
12188
- return clamp(untransform((input || (input = piecewise$$1(range, domain.map(transform), interpolateNumber)))(y)));
12414
+ return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));
12189
12415
  };
12190
12416
 
12191
12417
  scale.domain = function(_) {
12192
- return arguments.length ? (domain = map$2.call(_, number$2), clamp === identity$6 || (clamp = clamper(domain)), rescale()) : domain.slice();
12418
+ return arguments.length ? (domain = map$3.call(_, number$2), clamp === identity$6 || (clamp = clamper(domain)), rescale()) : domain.slice();
12193
12419
  };
12194
12420
 
12195
12421
  scale.range = function(_) {
@@ -12197,7 +12423,7 @@ function transformer$1() {
12197
12423
  };
12198
12424
 
12199
12425
  scale.rangeRound = function(_) {
12200
- return range = slice$5.call(_), interpolate$$1 = interpolateRound, rescale();
12426
+ return range = slice$5.call(_), interpolate = interpolateRound, rescale();
12201
12427
  };
12202
12428
 
12203
12429
  scale.clamp = function(_) {
@@ -12205,7 +12431,7 @@ function transformer$1() {
12205
12431
  };
12206
12432
 
12207
12433
  scale.interpolate = function(_) {
12208
- return arguments.length ? (interpolate$$1 = _, rescale()) : interpolate$$1;
12434
+ return arguments.length ? (interpolate = _, rescale()) : interpolate;
12209
12435
  };
12210
12436
 
12211
12437
  scale.unknown = function(_) {
@@ -12327,7 +12553,7 @@ function identity$7(domain) {
12327
12553
  scale.invert = scale;
12328
12554
 
12329
12555
  scale.domain = scale.range = function(_) {
12330
- return arguments.length ? (domain = map$2.call(_, number$2), scale) : domain.slice();
12556
+ return arguments.length ? (domain = map$3.call(_, number$2), scale) : domain.slice();
12331
12557
  };
12332
12558
 
12333
12559
  scale.unknown = function(_) {
@@ -12338,7 +12564,7 @@ function identity$7(domain) {
12338
12564
  return identity$7(domain).unknown(unknown);
12339
12565
  };
12340
12566
 
12341
- domain = arguments.length ? map$2.call(domain, number$2) : [0, 1];
12567
+ domain = arguments.length ? map$3.call(domain, number$2) : [0, 1];
12342
12568
 
12343
12569
  return linearish(scale);
12344
12570
  }
@@ -12581,7 +12807,7 @@ function sqrt$1() {
12581
12807
  return pow$1.apply(null, arguments).exponent(0.5);
12582
12808
  }
12583
12809
 
12584
- function quantile$$1() {
12810
+ function quantile() {
12585
12811
  var domain = [],
12586
12812
  range = [],
12587
12813
  thresholds = [],
@@ -12627,7 +12853,7 @@ function quantile$$1() {
12627
12853
  };
12628
12854
 
12629
12855
  scale.copy = function() {
12630
- return quantile$$1()
12856
+ return quantile()
12631
12857
  .domain(domain)
12632
12858
  .range(range)
12633
12859
  .unknown(unknown);
@@ -12732,10 +12958,12 @@ var t0$1 = new Date,
12732
12958
  function newInterval(floori, offseti, count, field) {
12733
12959
 
12734
12960
  function interval(date) {
12735
- return floori(date = new Date(+date)), date;
12961
+ return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;
12736
12962
  }
12737
12963
 
12738
- interval.floor = interval;
12964
+ interval.floor = function(date) {
12965
+ return floori(date = new Date(+date)), date;
12966
+ };
12739
12967
 
12740
12968
  interval.ceil = function(date) {
12741
12969
  return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;
@@ -13043,8 +13271,8 @@ function utcDate(d) {
13043
13271
  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));
13044
13272
  }
13045
13273
 
13046
- function newYear(y) {
13047
- return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};
13274
+ function newDate(y, m, d) {
13275
+ return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};
13048
13276
  }
13049
13277
 
13050
13278
  function formatLocale$1(locale) {
@@ -13084,6 +13312,7 @@ function formatLocale$1(locale) {
13084
13312
  "m": formatMonthNumber,
13085
13313
  "M": formatMinutes,
13086
13314
  "p": formatPeriod,
13315
+ "q": formatQuarter,
13087
13316
  "Q": formatUnixTimestamp,
13088
13317
  "s": formatUnixTimestampSeconds,
13089
13318
  "S": formatSeconds,
@@ -13116,6 +13345,7 @@ function formatLocale$1(locale) {
13116
13345
  "m": formatUTCMonthNumber,
13117
13346
  "M": formatUTCMinutes,
13118
13347
  "p": formatUTCPeriod,
13348
+ "q": formatUTCQuarter,
13119
13349
  "Q": formatUnixTimestamp,
13120
13350
  "s": formatUnixTimestampSeconds,
13121
13351
  "S": formatUTCSeconds,
@@ -13148,6 +13378,7 @@ function formatLocale$1(locale) {
13148
13378
  "m": parseMonthNumber,
13149
13379
  "M": parseMinutes,
13150
13380
  "p": parsePeriod,
13381
+ "q": parseQuarter,
13151
13382
  "Q": parseUnixTimestamp,
13152
13383
  "s": parseUnixTimestampSeconds,
13153
13384
  "S": parseSeconds,
@@ -13200,33 +13431,40 @@ function formatLocale$1(locale) {
13200
13431
  };
13201
13432
  }
13202
13433
 
13203
- function newParse(specifier, newDate) {
13434
+ function newParse(specifier, Z) {
13204
13435
  return function(string) {
13205
- var d = newYear(1900),
13436
+ var d = newDate(1900, undefined, 1),
13206
13437
  i = parseSpecifier(d, specifier, string += "", 0),
13207
- week, day$$1;
13438
+ week, day$1;
13208
13439
  if (i != string.length) return null;
13209
13440
 
13210
13441
  // If a UNIX timestamp is specified, return it.
13211
13442
  if ("Q" in d) return new Date(d.Q);
13443
+ if ("s" in d) return new Date(d.s * 1000 + ("L" in d ? d.L : 0));
13444
+
13445
+ // If this is utcParse, never use the local timezone.
13446
+ if (Z && !("Z" in d)) d.Z = 0;
13212
13447
 
13213
13448
  // The am-pm flag is 0 for AM, and 1 for PM.
13214
13449
  if ("p" in d) d.H = d.H % 12 + d.p * 12;
13215
13450
 
13451
+ // If the month was not specified, inherit from the quarter.
13452
+ if (d.m === undefined) d.m = "q" in d ? d.q : 0;
13453
+
13216
13454
  // Convert day-of-week and week-of-year to day-of-year.
13217
13455
  if ("V" in d) {
13218
13456
  if (d.V < 1 || d.V > 53) return null;
13219
13457
  if (!("w" in d)) d.w = 1;
13220
13458
  if ("Z" in d) {
13221
- week = utcDate(newYear(d.y)), day$$1 = week.getUTCDay();
13222
- week = day$$1 > 4 || day$$1 === 0 ? utcMonday.ceil(week) : utcMonday(week);
13459
+ week = utcDate(newDate(d.y, 0, 1)), day$1 = week.getUTCDay();
13460
+ week = day$1 > 4 || day$1 === 0 ? utcMonday.ceil(week) : utcMonday(week);
13223
13461
  week = utcDay.offset(week, (d.V - 1) * 7);
13224
13462
  d.y = week.getUTCFullYear();
13225
13463
  d.m = week.getUTCMonth();
13226
13464
  d.d = week.getUTCDate() + (d.w + 6) % 7;
13227
13465
  } else {
13228
- week = newDate(newYear(d.y)), day$$1 = week.getDay();
13229
- week = day$$1 > 4 || day$$1 === 0 ? monday.ceil(week) : monday(week);
13466
+ week = localDate(newDate(d.y, 0, 1)), day$1 = week.getDay();
13467
+ week = day$1 > 4 || day$1 === 0 ? monday.ceil(week) : monday(week);
13230
13468
  week = day.offset(week, (d.V - 1) * 7);
13231
13469
  d.y = week.getFullYear();
13232
13470
  d.m = week.getMonth();
@@ -13234,9 +13472,9 @@ function formatLocale$1(locale) {
13234
13472
  }
13235
13473
  } else if ("W" in d || "U" in d) {
13236
13474
  if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0;
13237
- day$$1 = "Z" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();
13475
+ day$1 = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();
13238
13476
  d.m = 0;
13239
- d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day$$1 + 5) % 7 : d.w + d.U * 7 - (day$$1 + 6) % 7;
13477
+ d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day$1 + 5) % 7 : d.w + d.U * 7 - (day$1 + 6) % 7;
13240
13478
  }
13241
13479
 
13242
13480
  // If a time zone is specified, all fields are interpreted as UTC and then
@@ -13248,7 +13486,7 @@ function formatLocale$1(locale) {
13248
13486
  }
13249
13487
 
13250
13488
  // Otherwise, all fields are in local time.
13251
- return newDate(d);
13489
+ return localDate(d);
13252
13490
  };
13253
13491
  }
13254
13492
 
@@ -13331,6 +13569,10 @@ function formatLocale$1(locale) {
13331
13569
  return locale_periods[+(d.getHours() >= 12)];
13332
13570
  }
13333
13571
 
13572
+ function formatQuarter(d) {
13573
+ return 1 + ~~(d.getMonth() / 3);
13574
+ }
13575
+
13334
13576
  function formatUTCShortWeekday(d) {
13335
13577
  return locale_shortWeekdays[d.getUTCDay()];
13336
13578
  }
@@ -13351,6 +13593,10 @@ function formatLocale$1(locale) {
13351
13593
  return locale_periods[+(d.getUTCHours() >= 12)];
13352
13594
  }
13353
13595
 
13596
+ function formatUTCQuarter(d) {
13597
+ return 1 + ~~(d.getUTCMonth() / 3);
13598
+ }
13599
+
13354
13600
  return {
13355
13601
  format: function(specifier) {
13356
13602
  var f = newFormat(specifier += "", formats);
@@ -13358,7 +13604,7 @@ function formatLocale$1(locale) {
13358
13604
  return f;
13359
13605
  },
13360
13606
  parse: function(specifier) {
13361
- var p = newParse(specifier += "", localDate);
13607
+ var p = newParse(specifier += "", false);
13362
13608
  p.toString = function() { return specifier; };
13363
13609
  return p;
13364
13610
  },
@@ -13368,7 +13614,7 @@ function formatLocale$1(locale) {
13368
13614
  return f;
13369
13615
  },
13370
13616
  utcParse: function(specifier) {
13371
- var p = newParse(specifier, utcDate);
13617
+ var p = newParse(specifier += "", true);
13372
13618
  p.toString = function() { return specifier; };
13373
13619
  return p;
13374
13620
  }
@@ -13441,6 +13687,11 @@ function parseZone(d, string, i) {
13441
13687
  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1;
13442
13688
  }
13443
13689
 
13690
+ function parseQuarter(d, string, i) {
13691
+ var n = numberRe.exec(string.slice(i, i + 1));
13692
+ return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;
13693
+ }
13694
+
13444
13695
  function parseMonthNumber(d, string, i) {
13445
13696
  var n = numberRe.exec(string.slice(i, i + 2));
13446
13697
  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;
@@ -13493,7 +13744,7 @@ function parseUnixTimestamp(d, string, i) {
13493
13744
 
13494
13745
  function parseUnixTimestampSeconds(d, string, i) {
13495
13746
  var n = numberRe.exec(string.slice(i));
13496
- return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;
13747
+ return n ? (d.s = +n[0], i + n[0].length) : -1;
13497
13748
  }
13498
13749
 
13499
13750
  function formatDayOfMonth(d, p) {
@@ -13533,17 +13784,17 @@ function formatSeconds(d, p) {
13533
13784
  }
13534
13785
 
13535
13786
  function formatWeekdayNumberMonday(d) {
13536
- var day$$1 = d.getDay();
13537
- return day$$1 === 0 ? 7 : day$$1;
13787
+ var day = d.getDay();
13788
+ return day === 0 ? 7 : day;
13538
13789
  }
13539
13790
 
13540
13791
  function formatWeekNumberSunday(d, p) {
13541
- return pad$1(sunday.count(year(d), d), p, 2);
13792
+ return pad$1(sunday.count(year(d) - 1, d), p, 2);
13542
13793
  }
13543
13794
 
13544
13795
  function formatWeekNumberISO(d, p) {
13545
- var day$$1 = d.getDay();
13546
- d = (day$$1 >= 4 || day$$1 === 0) ? thursday(d) : thursday.ceil(d);
13796
+ var day = d.getDay();
13797
+ d = (day >= 4 || day === 0) ? thursday(d) : thursday.ceil(d);
13547
13798
  return pad$1(thursday.count(year(d), d) + (year(d).getDay() === 4), p, 2);
13548
13799
  }
13549
13800
 
@@ -13552,7 +13803,7 @@ function formatWeekdayNumberSunday(d) {
13552
13803
  }
13553
13804
 
13554
13805
  function formatWeekNumberMonday(d, p) {
13555
- return pad$1(monday.count(year(d), d), p, 2);
13806
+ return pad$1(monday.count(year(d) - 1, d), p, 2);
13556
13807
  }
13557
13808
 
13558
13809
  function formatYear$1(d, p) {
@@ -13612,12 +13863,12 @@ function formatUTCWeekdayNumberMonday(d) {
13612
13863
  }
13613
13864
 
13614
13865
  function formatUTCWeekNumberSunday(d, p) {
13615
- return pad$1(utcSunday.count(utcYear(d), d), p, 2);
13866
+ return pad$1(utcSunday.count(utcYear(d) - 1, d), p, 2);
13616
13867
  }
13617
13868
 
13618
13869
  function formatUTCWeekNumberISO(d, p) {
13619
- var day$$1 = d.getUTCDay();
13620
- d = (day$$1 >= 4 || day$$1 === 0) ? utcThursday(d) : utcThursday.ceil(d);
13870
+ var day = d.getUTCDay();
13871
+ d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);
13621
13872
  return pad$1(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);
13622
13873
  }
13623
13874
 
@@ -13626,7 +13877,7 @@ function formatUTCWeekdayNumberSunday(d) {
13626
13877
  }
13627
13878
 
13628
13879
  function formatUTCWeekNumberMonday(d, p) {
13629
- return pad$1(utcMonday.count(utcYear(d), d), p, 2);
13880
+ return pad$1(utcMonday.count(utcYear(d) - 1, d), p, 2);
13630
13881
  }
13631
13882
 
13632
13883
  function formatUTCYear(d, p) {
@@ -13710,7 +13961,7 @@ function number$3(t) {
13710
13961
  return t instanceof Date ? +t : +new Date(+t);
13711
13962
  }
13712
13963
 
13713
- function calendar(year$$1, month$$1, week, day$$1, hour$$1, minute$$1, second$$1, millisecond$$1, format) {
13964
+ function calendar(year, month, week, day, hour, minute, second, millisecond, format) {
13714
13965
  var scale = continuous(identity$6, identity$6),
13715
13966
  invert = scale.invert,
13716
13967
  domain = scale.domain;
@@ -13725,33 +13976,33 @@ function calendar(year$$1, month$$1, week, day$$1, hour$$1, minute$$1, second$$1
13725
13976
  formatYear = format("%Y");
13726
13977
 
13727
13978
  var tickIntervals = [
13728
- [second$$1, 1, durationSecond$1],
13729
- [second$$1, 5, 5 * durationSecond$1],
13730
- [second$$1, 15, 15 * durationSecond$1],
13731
- [second$$1, 30, 30 * durationSecond$1],
13732
- [minute$$1, 1, durationMinute$1],
13733
- [minute$$1, 5, 5 * durationMinute$1],
13734
- [minute$$1, 15, 15 * durationMinute$1],
13735
- [minute$$1, 30, 30 * durationMinute$1],
13736
- [ hour$$1, 1, durationHour$1 ],
13737
- [ hour$$1, 3, 3 * durationHour$1 ],
13738
- [ hour$$1, 6, 6 * durationHour$1 ],
13739
- [ hour$$1, 12, 12 * durationHour$1 ],
13740
- [ day$$1, 1, durationDay$1 ],
13741
- [ day$$1, 2, 2 * durationDay$1 ],
13979
+ [second, 1, durationSecond$1],
13980
+ [second, 5, 5 * durationSecond$1],
13981
+ [second, 15, 15 * durationSecond$1],
13982
+ [second, 30, 30 * durationSecond$1],
13983
+ [minute, 1, durationMinute$1],
13984
+ [minute, 5, 5 * durationMinute$1],
13985
+ [minute, 15, 15 * durationMinute$1],
13986
+ [minute, 30, 30 * durationMinute$1],
13987
+ [ hour, 1, durationHour$1 ],
13988
+ [ hour, 3, 3 * durationHour$1 ],
13989
+ [ hour, 6, 6 * durationHour$1 ],
13990
+ [ hour, 12, 12 * durationHour$1 ],
13991
+ [ day, 1, durationDay$1 ],
13992
+ [ day, 2, 2 * durationDay$1 ],
13742
13993
  [ week, 1, durationWeek$1 ],
13743
- [ month$$1, 1, durationMonth ],
13744
- [ month$$1, 3, 3 * durationMonth ],
13745
- [ year$$1, 1, durationYear ]
13994
+ [ month, 1, durationMonth ],
13995
+ [ month, 3, 3 * durationMonth ],
13996
+ [ year, 1, durationYear ]
13746
13997
  ];
13747
13998
 
13748
13999
  function tickFormat(date) {
13749
- return (second$$1(date) < date ? formatMillisecond
13750
- : minute$$1(date) < date ? formatSecond
13751
- : hour$$1(date) < date ? formatMinute
13752
- : day$$1(date) < date ? formatHour
13753
- : month$$1(date) < date ? (week(date) < date ? formatDay : formatWeek)
13754
- : year$$1(date) < date ? formatMonth
14000
+ return (second(date) < date ? formatMillisecond
14001
+ : minute(date) < date ? formatSecond
14002
+ : hour(date) < date ? formatMinute
14003
+ : day(date) < date ? formatHour
14004
+ : month(date) < date ? (week(date) < date ? formatDay : formatWeek)
14005
+ : year(date) < date ? formatMonth
13755
14006
  : formatYear)(date);
13756
14007
  }
13757
14008
 
@@ -13766,14 +14017,14 @@ function calendar(year$$1, month$$1, week, day$$1, hour$$1, minute$$1, second$$1
13766
14017
  i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);
13767
14018
  if (i === tickIntervals.length) {
13768
14019
  step = tickStep(start / durationYear, stop / durationYear, interval);
13769
- interval = year$$1;
14020
+ interval = year;
13770
14021
  } else if (i) {
13771
14022
  i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];
13772
14023
  step = i[1];
13773
14024
  interval = i[0];
13774
14025
  } else {
13775
14026
  step = Math.max(tickStep(start, stop, interval), 1);
13776
- interval = millisecond$$1;
14027
+ interval = millisecond;
13777
14028
  }
13778
14029
  }
13779
14030
 
@@ -13785,7 +14036,7 @@ function calendar(year$$1, month$$1, week, day$$1, hour$$1, minute$$1, second$$1
13785
14036
  };
13786
14037
 
13787
14038
  scale.domain = function(_) {
13788
- return arguments.length ? domain(map$2.call(_, number$3)) : domain().map(date$1);
14039
+ return arguments.length ? domain(map$3.call(_, number$3)) : domain().map(date$1);
13789
14040
  };
13790
14041
 
13791
14042
  scale.ticks = function(interval, step) {
@@ -13812,7 +14063,7 @@ function calendar(year$$1, month$$1, week, day$$1, hour$$1, minute$$1, second$$1
13812
14063
  };
13813
14064
 
13814
14065
  scale.copy = function() {
13815
- return copy(scale, calendar(year$$1, month$$1, week, day$$1, hour$$1, minute$$1, second$$1, millisecond$$1, format));
14066
+ return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));
13816
14067
  };
13817
14068
 
13818
14069
  return scale;
@@ -14050,6 +14301,8 @@ var Set2 = colors("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3");
14050
14301
 
14051
14302
  var Set3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f");
14052
14303
 
14304
+ var Tableau10 = colors("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab");
14305
+
14053
14306
  function ramp(scheme) {
14054
14307
  return rgbBasis(scheme[scheme.length - 1]);
14055
14308
  }
@@ -14396,6 +14649,15 @@ var scheme$q = new Array(3).concat(
14396
14649
 
14397
14650
  var Oranges = ramp(scheme$q);
14398
14651
 
14652
+ function cividis(t) {
14653
+ t = Math.max(0, Math.min(1, t));
14654
+ return "rgb("
14655
+ + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + ", "
14656
+ + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + ", "
14657
+ + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))
14658
+ + ")";
14659
+ }
14660
+
14399
14661
  var cubehelix$3 = cubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));
14400
14662
 
14401
14663
  var warm = cubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));
@@ -14426,6 +14688,15 @@ function sinebow(t) {
14426
14688
  return c$1 + "";
14427
14689
  }
14428
14690
 
14691
+ function turbo(t) {
14692
+ t = Math.max(0, Math.min(1, t));
14693
+ return "rgb("
14694
+ + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + ", "
14695
+ + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + ", "
14696
+ + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))
14697
+ + ")";
14698
+ }
14699
+
14429
14700
  function ramp$1(range) {
14430
14701
  var n = range.length;
14431
14702
  return function(t) {
@@ -14767,8 +15038,8 @@ function y$3(p) {
14767
15038
  }
14768
15039
 
14769
15040
  function line() {
14770
- var x$$1 = x$3,
14771
- y$$1 = y$3,
15041
+ var x = x$3,
15042
+ y = y$3,
14772
15043
  defined = constant$b(true),
14773
15044
  context = null,
14774
15045
  curve = curveLinear,
@@ -14788,18 +15059,18 @@ function line() {
14788
15059
  if (defined0 = !defined0) output.lineStart();
14789
15060
  else output.lineEnd();
14790
15061
  }
14791
- if (defined0) output.point(+x$$1(d, i, data), +y$$1(d, i, data));
15062
+ if (defined0) output.point(+x(d, i, data), +y(d, i, data));
14792
15063
  }
14793
15064
 
14794
15065
  if (buffer) return output = null, buffer + "" || null;
14795
15066
  }
14796
15067
 
14797
15068
  line.x = function(_) {
14798
- return arguments.length ? (x$$1 = typeof _ === "function" ? _ : constant$b(+_), line) : x$$1;
15069
+ return arguments.length ? (x = typeof _ === "function" ? _ : constant$b(+_), line) : x;
14799
15070
  };
14800
15071
 
14801
15072
  line.y = function(_) {
14802
- return arguments.length ? (y$$1 = typeof _ === "function" ? _ : constant$b(+_), line) : y$$1;
15073
+ return arguments.length ? (y = typeof _ === "function" ? _ : constant$b(+_), line) : y;
14803
15074
  };
14804
15075
 
14805
15076
  line.defined = function(_) {
@@ -15099,14 +15370,14 @@ function linkTarget(d) {
15099
15370
  function link$2(curve) {
15100
15371
  var source = linkSource,
15101
15372
  target = linkTarget,
15102
- x$$1 = x$3,
15103
- y$$1 = y$3,
15373
+ x = x$3,
15374
+ y = y$3,
15104
15375
  context = null;
15105
15376
 
15106
15377
  function link() {
15107
15378
  var buffer, argv = slice$6.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);
15108
15379
  if (!context) context = buffer = path();
15109
- curve(context, +x$$1.apply(this, (argv[0] = s, argv)), +y$$1.apply(this, argv), +x$$1.apply(this, (argv[0] = t, argv)), +y$$1.apply(this, argv));
15380
+ curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));
15110
15381
  if (buffer) return context = null, buffer + "" || null;
15111
15382
  }
15112
15383
 
@@ -15119,11 +15390,11 @@ function link$2(curve) {
15119
15390
  };
15120
15391
 
15121
15392
  link.x = function(_) {
15122
- return arguments.length ? (x$$1 = typeof _ === "function" ? _ : constant$b(+_), link) : x$$1;
15393
+ return arguments.length ? (x = typeof _ === "function" ? _ : constant$b(+_), link) : x;
15123
15394
  };
15124
15395
 
15125
15396
  link.y = function(_) {
15126
- return arguments.length ? (y$$1 = typeof _ === "function" ? _ : constant$b(+_), link) : y$$1;
15397
+ return arguments.length ? (y = typeof _ === "function" ? _ : constant$b(+_), link) : y;
15127
15398
  };
15128
15399
 
15129
15400
  link.context = function(_) {
@@ -15623,15 +15894,15 @@ CardinalClosed.prototype = {
15623
15894
 
15624
15895
  var cardinalClosed = (function custom(tension) {
15625
15896
 
15626
- function cardinal$$1(context) {
15897
+ function cardinal(context) {
15627
15898
  return new CardinalClosed(context, tension);
15628
15899
  }
15629
15900
 
15630
- cardinal$$1.tension = function(tension) {
15901
+ cardinal.tension = function(tension) {
15631
15902
  return custom(+tension);
15632
15903
  };
15633
15904
 
15634
- return cardinal$$1;
15905
+ return cardinal;
15635
15906
  })(0);
15636
15907
 
15637
15908
  function CardinalOpen(context, tension) {
@@ -15671,15 +15942,15 @@ CardinalOpen.prototype = {
15671
15942
 
15672
15943
  var cardinalOpen = (function custom(tension) {
15673
15944
 
15674
- function cardinal$$1(context) {
15945
+ function cardinal(context) {
15675
15946
  return new CardinalOpen(context, tension);
15676
15947
  }
15677
15948
 
15678
- cardinal$$1.tension = function(tension) {
15949
+ cardinal.tension = function(tension) {
15679
15950
  return custom(+tension);
15680
15951
  };
15681
15952
 
15682
- return cardinal$$1;
15953
+ return cardinal;
15683
15954
  })(0);
15684
15955
 
15685
15956
  function point$4(that, x, y) {
@@ -15828,15 +16099,15 @@ CatmullRomClosed.prototype = {
15828
16099
 
15829
16100
  var catmullRomClosed = (function custom(alpha) {
15830
16101
 
15831
- function catmullRom$$1(context) {
16102
+ function catmullRom(context) {
15832
16103
  return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);
15833
16104
  }
15834
16105
 
15835
- catmullRom$$1.alpha = function(alpha) {
16106
+ catmullRom.alpha = function(alpha) {
15836
16107
  return custom(+alpha);
15837
16108
  };
15838
16109
 
15839
- return catmullRom$$1;
16110
+ return catmullRom;
15840
16111
  })(0.5);
15841
16112
 
15842
16113
  function CatmullRomOpen(context, alpha) {
@@ -15888,15 +16159,15 @@ CatmullRomOpen.prototype = {
15888
16159
 
15889
16160
  var catmullRomOpen = (function custom(alpha) {
15890
16161
 
15891
- function catmullRom$$1(context) {
16162
+ function catmullRom(context) {
15892
16163
  return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);
15893
16164
  }
15894
16165
 
15895
- catmullRom$$1.alpha = function(alpha) {
16166
+ catmullRom.alpha = function(alpha) {
15896
16167
  return custom(+alpha);
15897
16168
  };
15898
16169
 
15899
- return catmullRom$$1;
16170
+ return catmullRom;
15900
16171
  })(0.5);
15901
16172
 
15902
16173
  function LinearClosed(context) {
@@ -16227,15 +16498,15 @@ function expand(series, order) {
16227
16498
  }
16228
16499
 
16229
16500
  function diverging$1(series, order) {
16230
- if (!((n = series.length) > 1)) return;
16501
+ if (!((n = series.length) > 0)) return;
16231
16502
  for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {
16232
16503
  for (yp = yn = 0, i = 0; i < n; ++i) {
16233
- if ((dy = (d = series[order[i]][j])[1] - d[0]) >= 0) {
16504
+ if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {
16234
16505
  d[0] = yp, d[1] = yp += dy;
16235
16506
  } else if (dy < 0) {
16236
16507
  d[1] = yn, d[0] = yn += dy;
16237
16508
  } else {
16238
- d[0] = yp;
16509
+ d[0] = 0, d[1] = dy;
16239
16510
  }
16240
16511
  }
16241
16512
  }
@@ -17271,13 +17542,13 @@ Diagram.prototype = {
17271
17542
  };
17272
17543
 
17273
17544
  function voronoi() {
17274
- var x$$1 = x$4,
17275
- y$$1 = y$4,
17545
+ var x = x$4,
17546
+ y = y$4,
17276
17547
  extent = null;
17277
17548
 
17278
17549
  function voronoi(data) {
17279
17550
  return new Diagram(data.map(function(d, i) {
17280
- var s = [Math.round(x$$1(d, i, data) / epsilon$4) * epsilon$4, Math.round(y$$1(d, i, data) / epsilon$4) * epsilon$4];
17551
+ var s = [Math.round(x(d, i, data) / epsilon$4) * epsilon$4, Math.round(y(d, i, data) / epsilon$4) * epsilon$4];
17281
17552
  s.index = i;
17282
17553
  s.data = d;
17283
17554
  return s;
@@ -17297,11 +17568,11 @@ function voronoi() {
17297
17568
  };
17298
17569
 
17299
17570
  voronoi.x = function(_) {
17300
- return arguments.length ? (x$$1 = typeof _ === "function" ? _ : constant$c(+_), voronoi) : x$$1;
17571
+ return arguments.length ? (x = typeof _ === "function" ? _ : constant$c(+_), voronoi) : x;
17301
17572
  };
17302
17573
 
17303
17574
  voronoi.y = function(_) {
17304
- return arguments.length ? (y$$1 = typeof _ === "function" ? _ : constant$c(+_), voronoi) : y$$1;
17575
+ return arguments.length ? (y = typeof _ === "function" ? _ : constant$c(+_), voronoi) : y;
17305
17576
  };
17306
17577
 
17307
17578
  voronoi.extent = function(_) {
@@ -17375,7 +17646,8 @@ var identity$9 = new Transform(1, 0, 0);
17375
17646
  transform$1.prototype = Transform.prototype;
17376
17647
 
17377
17648
  function transform$1(node) {
17378
- return node.__zoom || identity$9;
17649
+ while (!node.__zoom) if (!(node = node.parentNode)) return identity$9;
17650
+ return node.__zoom;
17379
17651
  }
17380
17652
 
17381
17653
  function nopropagation$2() {
@@ -17389,20 +17661,20 @@ function noevent$2() {
17389
17661
 
17390
17662
  // Ignore right-click, since that should open the context menu.
17391
17663
  function defaultFilter$2() {
17392
- return !exports.event.button;
17664
+ return !exports.event.ctrlKey && !exports.event.button;
17393
17665
  }
17394
17666
 
17395
17667
  function defaultExtent$1() {
17396
- var e = this, w, h;
17668
+ var e = this;
17397
17669
  if (e instanceof SVGElement) {
17398
17670
  e = e.ownerSVGElement || e;
17399
- w = e.width.baseVal.value;
17400
- h = e.height.baseVal.value;
17401
- } else {
17402
- w = e.clientWidth;
17403
- h = e.clientHeight;
17671
+ if (e.hasAttribute("viewBox")) {
17672
+ e = e.viewBox.baseVal;
17673
+ return [[e.x, e.y], [e.x + e.width, e.y + e.height]];
17674
+ }
17675
+ return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];
17404
17676
  }
17405
- return [[0, 0], [w, h]];
17677
+ return [[0, 0], [e.clientWidth, e.clientHeight]];
17406
17678
  }
17407
17679
 
17408
17680
  function defaultTransform() {
@@ -17410,11 +17682,11 @@ function defaultTransform() {
17410
17682
  }
17411
17683
 
17412
17684
  function defaultWheelDelta() {
17413
- return -exports.event.deltaY * (exports.event.deltaMode ? 120 : 1) / 500;
17685
+ return -exports.event.deltaY * (exports.event.deltaMode === 1 ? 0.05 : exports.event.deltaMode ? 1 : 0.002);
17414
17686
  }
17415
17687
 
17416
- function defaultTouchable$1() {
17417
- return "ontouchstart" in this;
17688
+ function defaultTouchable$2() {
17689
+ return navigator.maxTouchPoints || ("ontouchstart" in this);
17418
17690
  }
17419
17691
 
17420
17692
  function defaultConstrain(transform, extent, translateExtent) {
@@ -17433,12 +17705,11 @@ function zoom() {
17433
17705
  extent = defaultExtent$1,
17434
17706
  constrain = defaultConstrain,
17435
17707
  wheelDelta = defaultWheelDelta,
17436
- touchable = defaultTouchable$1,
17708
+ touchable = defaultTouchable$2,
17437
17709
  scaleExtent = [0, Infinity],
17438
17710
  translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],
17439
17711
  duration = 250,
17440
17712
  interpolate = interpolateZoom,
17441
- gestures = [],
17442
17713
  listeners = dispatch("start", "zoom", "end"),
17443
17714
  touchstarting,
17444
17715
  touchending,
@@ -17446,8 +17717,8 @@ function zoom() {
17446
17717
  wheelDelay = 150,
17447
17718
  clickDistance2 = 0;
17448
17719
 
17449
- function zoom(selection$$1) {
17450
- selection$$1
17720
+ function zoom(selection) {
17721
+ selection
17451
17722
  .property("__zoom", defaultTransform)
17452
17723
  .on("wheel.zoom", wheeled)
17453
17724
  .on("mousedown.zoom", mousedowned)
@@ -17460,13 +17731,13 @@ function zoom() {
17460
17731
  .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
17461
17732
  }
17462
17733
 
17463
- zoom.transform = function(collection, transform) {
17464
- var selection$$1 = collection.selection ? collection.selection() : collection;
17465
- selection$$1.property("__zoom", defaultTransform);
17466
- if (collection !== selection$$1) {
17467
- schedule(collection, transform);
17734
+ zoom.transform = function(collection, transform, point) {
17735
+ var selection = collection.selection ? collection.selection() : collection;
17736
+ selection.property("__zoom", defaultTransform);
17737
+ if (collection !== selection) {
17738
+ schedule(collection, transform, point);
17468
17739
  } else {
17469
- selection$$1.interrupt().each(function() {
17740
+ selection.interrupt().each(function() {
17470
17741
  gesture(this, arguments)
17471
17742
  .start()
17472
17743
  .zoom(null, typeof transform === "function" ? transform.apply(this, arguments) : transform)
@@ -17475,27 +17746,27 @@ function zoom() {
17475
17746
  }
17476
17747
  };
17477
17748
 
17478
- zoom.scaleBy = function(selection$$1, k) {
17479
- zoom.scaleTo(selection$$1, function() {
17749
+ zoom.scaleBy = function(selection, k, p) {
17750
+ zoom.scaleTo(selection, function() {
17480
17751
  var k0 = this.__zoom.k,
17481
17752
  k1 = typeof k === "function" ? k.apply(this, arguments) : k;
17482
17753
  return k0 * k1;
17483
- });
17754
+ }, p);
17484
17755
  };
17485
17756
 
17486
- zoom.scaleTo = function(selection$$1, k) {
17487
- zoom.transform(selection$$1, function() {
17757
+ zoom.scaleTo = function(selection, k, p) {
17758
+ zoom.transform(selection, function() {
17488
17759
  var e = extent.apply(this, arguments),
17489
17760
  t0 = this.__zoom,
17490
- p0 = centroid(e),
17761
+ p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p,
17491
17762
  p1 = t0.invert(p0),
17492
17763
  k1 = typeof k === "function" ? k.apply(this, arguments) : k;
17493
17764
  return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);
17494
- });
17765
+ }, p);
17495
17766
  };
17496
17767
 
17497
- zoom.translateBy = function(selection$$1, x, y) {
17498
- zoom.transform(selection$$1, function() {
17768
+ zoom.translateBy = function(selection, x, y) {
17769
+ zoom.transform(selection, function() {
17499
17770
  return constrain(this.__zoom.translate(
17500
17771
  typeof x === "function" ? x.apply(this, arguments) : x,
17501
17772
  typeof y === "function" ? y.apply(this, arguments) : y
@@ -17503,16 +17774,16 @@ function zoom() {
17503
17774
  });
17504
17775
  };
17505
17776
 
17506
- zoom.translateTo = function(selection$$1, x, y) {
17507
- zoom.transform(selection$$1, function() {
17777
+ zoom.translateTo = function(selection, x, y, p) {
17778
+ zoom.transform(selection, function() {
17508
17779
  var e = extent.apply(this, arguments),
17509
17780
  t = this.__zoom,
17510
- p = centroid(e);
17511
- return constrain(identity$9.translate(p[0], p[1]).scale(t.k).translate(
17781
+ p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p;
17782
+ return constrain(identity$9.translate(p0[0], p0[1]).scale(t.k).translate(
17512
17783
  typeof x === "function" ? -x.apply(this, arguments) : -x,
17513
17784
  typeof y === "function" ? -y.apply(this, arguments) : -y
17514
17785
  ), e, translateExtent);
17515
- });
17786
+ }, p);
17516
17787
  };
17517
17788
 
17518
17789
  function scale(transform, k) {
@@ -17529,8 +17800,8 @@ function zoom() {
17529
17800
  return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];
17530
17801
  }
17531
17802
 
17532
- function schedule(transition$$1, transform, center) {
17533
- transition$$1
17803
+ function schedule(transition, transform, point) {
17804
+ transition
17534
17805
  .on("start.zoom", function() { gesture(this, arguments).start(); })
17535
17806
  .on("interrupt.zoom end.zoom", function() { gesture(this, arguments).end(); })
17536
17807
  .tween("zoom", function() {
@@ -17538,7 +17809,7 @@ function zoom() {
17538
17809
  args = arguments,
17539
17810
  g = gesture(that, args),
17540
17811
  e = extent.apply(that, args),
17541
- p = center || centroid(e),
17812
+ p = point == null ? centroid(e) : typeof point === "function" ? point.apply(that, args) : point,
17542
17813
  w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),
17543
17814
  a = that.__zoom,
17544
17815
  b = typeof transform === "function" ? transform.apply(that, args) : transform,
@@ -17551,27 +17822,22 @@ function zoom() {
17551
17822
  });
17552
17823
  }
17553
17824
 
17554
- function gesture(that, args) {
17555
- for (var i = 0, n = gestures.length, g; i < n; ++i) {
17556
- if ((g = gestures[i]).that === that) {
17557
- return g;
17558
- }
17559
- }
17560
- return new Gesture(that, args);
17825
+ function gesture(that, args, clean) {
17826
+ return (!clean && that.__zooming) || new Gesture(that, args);
17561
17827
  }
17562
17828
 
17563
17829
  function Gesture(that, args) {
17564
17830
  this.that = that;
17565
17831
  this.args = args;
17566
- this.index = -1;
17567
17832
  this.active = 0;
17568
17833
  this.extent = extent.apply(that, args);
17834
+ this.taps = 0;
17569
17835
  }
17570
17836
 
17571
17837
  Gesture.prototype = {
17572
17838
  start: function() {
17573
17839
  if (++this.active === 1) {
17574
- this.index = gestures.push(this) - 1;
17840
+ this.that.__zooming = this;
17575
17841
  this.emit("start");
17576
17842
  }
17577
17843
  return this;
@@ -17586,8 +17852,7 @@ function zoom() {
17586
17852
  },
17587
17853
  end: function() {
17588
17854
  if (--this.active === 0) {
17589
- gestures.splice(this.index, 1);
17590
- this.index = -1;
17855
+ delete this.that.__zooming;
17591
17856
  this.emit("end");
17592
17857
  }
17593
17858
  return this;
@@ -17635,7 +17900,7 @@ function zoom() {
17635
17900
 
17636
17901
  function mousedowned() {
17637
17902
  if (touchending || !filter.apply(this, arguments)) return;
17638
- var g = gesture(this, arguments),
17903
+ var g = gesture(this, arguments, true),
17639
17904
  v = select(exports.event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true),
17640
17905
  p = mouse(this),
17641
17906
  x0 = exports.event.clientX,
@@ -17679,46 +17944,39 @@ function zoom() {
17679
17944
 
17680
17945
  function touchstarted() {
17681
17946
  if (!filter.apply(this, arguments)) return;
17682
- var g = gesture(this, arguments),
17683
- touches$$1 = exports.event.changedTouches,
17684
- started,
17685
- n = touches$$1.length, i, t, p;
17947
+ var touches = exports.event.touches,
17948
+ n = touches.length,
17949
+ g = gesture(this, arguments, exports.event.changedTouches.length === n),
17950
+ started, i, t, p;
17686
17951
 
17687
17952
  nopropagation$2();
17688
17953
  for (i = 0; i < n; ++i) {
17689
- t = touches$$1[i], p = touch(this, touches$$1, t.identifier);
17954
+ t = touches[i], p = touch(this, touches, t.identifier);
17690
17955
  p = [p, this.__zoom.invert(p), t.identifier];
17691
- if (!g.touch0) g.touch0 = p, started = true;
17692
- else if (!g.touch1) g.touch1 = p;
17956
+ if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;
17957
+ else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;
17693
17958
  }
17694
17959
 
17695
- // If this is a dbltap, reroute to the (optional) dblclick.zoom handler.
17696
- if (touchstarting) {
17697
- touchstarting = clearTimeout(touchstarting);
17698
- if (!g.touch1) {
17699
- g.end();
17700
- p = select(this).on("dblclick.zoom");
17701
- if (p) p.apply(this, arguments);
17702
- return;
17703
- }
17704
- }
17960
+ if (touchstarting) touchstarting = clearTimeout(touchstarting);
17705
17961
 
17706
17962
  if (started) {
17707
- touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);
17963
+ if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);
17708
17964
  interrupt(this);
17709
17965
  g.start();
17710
17966
  }
17711
17967
  }
17712
17968
 
17713
17969
  function touchmoved() {
17970
+ if (!this.__zooming) return;
17714
17971
  var g = gesture(this, arguments),
17715
- touches$$1 = exports.event.changedTouches,
17716
- n = touches$$1.length, i, t, p, l;
17972
+ touches = exports.event.changedTouches,
17973
+ n = touches.length, i, t, p, l;
17717
17974
 
17718
17975
  noevent$2();
17719
17976
  if (touchstarting) touchstarting = clearTimeout(touchstarting);
17977
+ g.taps = 0;
17720
17978
  for (i = 0; i < n; ++i) {
17721
- t = touches$$1[i], p = touch(this, touches$$1, t.identifier);
17979
+ t = touches[i], p = touch(this, touches, t.identifier);
17722
17980
  if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;
17723
17981
  else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;
17724
17982
  }
@@ -17738,21 +17996,29 @@ function zoom() {
17738
17996
  }
17739
17997
 
17740
17998
  function touchended() {
17999
+ if (!this.__zooming) return;
17741
18000
  var g = gesture(this, arguments),
17742
- touches$$1 = exports.event.changedTouches,
17743
- n = touches$$1.length, i, t;
18001
+ touches = exports.event.changedTouches,
18002
+ n = touches.length, i, t;
17744
18003
 
17745
18004
  nopropagation$2();
17746
18005
  if (touchending) clearTimeout(touchending);
17747
18006
  touchending = setTimeout(function() { touchending = null; }, touchDelay);
17748
18007
  for (i = 0; i < n; ++i) {
17749
- t = touches$$1[i];
18008
+ t = touches[i];
17750
18009
  if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;
17751
18010
  else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;
17752
18011
  }
17753
18012
  if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;
17754
18013
  if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);
17755
- else g.end();
18014
+ else {
18015
+ g.end();
18016
+ // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.
18017
+ if (g.taps === 2) {
18018
+ var p = select(this).on("dblclick.zoom");
18019
+ if (p) p.apply(this, arguments);
18020
+ }
18021
+ }
17756
18022
  }
17757
18023
 
17758
18024
  zoom.wheelDelta = function(_) {
@@ -17803,128 +18069,111 @@ function zoom() {
17803
18069
  return zoom;
17804
18070
  }
17805
18071
 
17806
- exports.version = version;
17807
- exports.bisect = bisectRight;
17808
- exports.bisectRight = bisectRight;
17809
- exports.bisectLeft = bisectLeft;
18072
+ exports.FormatSpecifier = FormatSpecifier;
18073
+ exports.active = active;
18074
+ exports.arc = arc;
18075
+ exports.area = area$3;
18076
+ exports.areaRadial = areaRadial;
17810
18077
  exports.ascending = ascending;
17811
- exports.bisector = bisector;
17812
- exports.cross = cross;
17813
- exports.descending = descending;
17814
- exports.deviation = deviation;
17815
- exports.extent = extent;
17816
- exports.histogram = histogram;
17817
- exports.thresholdFreedmanDiaconis = freedmanDiaconis;
17818
- exports.thresholdScott = scott;
17819
- exports.thresholdSturges = thresholdSturges;
17820
- exports.max = max;
17821
- exports.mean = mean;
17822
- exports.median = median;
17823
- exports.merge = merge;
17824
- exports.min = min;
17825
- exports.pairs = pairs;
17826
- exports.permute = permute;
17827
- exports.quantile = threshold;
17828
- exports.range = sequence;
17829
- exports.scan = scan;
17830
- exports.shuffle = shuffle;
17831
- exports.sum = sum;
17832
- exports.ticks = ticks;
17833
- exports.tickIncrement = tickIncrement;
17834
- exports.tickStep = tickStep;
17835
- exports.transpose = transpose;
17836
- exports.variance = variance;
17837
- exports.zip = zip;
17838
- exports.axisTop = axisTop;
17839
- exports.axisRight = axisRight;
18078
+ exports.autoType = autoType;
17840
18079
  exports.axisBottom = axisBottom;
17841
18080
  exports.axisLeft = axisLeft;
18081
+ exports.axisRight = axisRight;
18082
+ exports.axisTop = axisTop;
18083
+ exports.bisect = bisectRight;
18084
+ exports.bisectLeft = bisectLeft;
18085
+ exports.bisectRight = bisectRight;
18086
+ exports.bisector = bisector;
18087
+ exports.blob = blob;
17842
18088
  exports.brush = brush;
18089
+ exports.brushSelection = brushSelection;
17843
18090
  exports.brushX = brushX;
17844
18091
  exports.brushY = brushY;
17845
- exports.brushSelection = brushSelection;
18092
+ exports.buffer = buffer;
17846
18093
  exports.chord = chord;
17847
- exports.ribbon = ribbon;
17848
- exports.nest = nest;
17849
- exports.set = set$2;
17850
- exports.map = map$1;
17851
- exports.keys = keys;
17852
- exports.values = values;
17853
- exports.entries = entries;
18094
+ exports.clientPoint = point;
18095
+ exports.cluster = cluster;
17854
18096
  exports.color = color;
17855
- exports.rgb = rgb;
17856
- exports.hsl = hsl;
17857
- exports.lab = lab;
17858
- exports.hcl = hcl;
17859
- exports.lch = lch;
17860
- exports.gray = gray;
17861
- exports.cubehelix = cubehelix;
17862
- exports.contours = contours;
17863
18097
  exports.contourDensity = density;
18098
+ exports.contours = contours;
18099
+ exports.create = create;
18100
+ exports.creator = creator;
18101
+ exports.cross = cross;
18102
+ exports.csv = csv$1;
18103
+ exports.csvFormat = csvFormat;
18104
+ exports.csvFormatBody = csvFormatBody;
18105
+ exports.csvFormatRow = csvFormatRow;
18106
+ exports.csvFormatRows = csvFormatRows;
18107
+ exports.csvFormatValue = csvFormatValue;
18108
+ exports.csvParse = csvParse;
18109
+ exports.csvParseRows = csvParseRows;
18110
+ exports.cubehelix = cubehelix;
18111
+ exports.curveBasis = basis$2;
18112
+ exports.curveBasisClosed = basisClosed$1;
18113
+ exports.curveBasisOpen = basisOpen;
18114
+ exports.curveBundle = bundle;
18115
+ exports.curveCardinal = cardinal;
18116
+ exports.curveCardinalClosed = cardinalClosed;
18117
+ exports.curveCardinalOpen = cardinalOpen;
18118
+ exports.curveCatmullRom = catmullRom;
18119
+ exports.curveCatmullRomClosed = catmullRomClosed;
18120
+ exports.curveCatmullRomOpen = catmullRomOpen;
18121
+ exports.curveLinear = curveLinear;
18122
+ exports.curveLinearClosed = linearClosed;
18123
+ exports.curveMonotoneX = monotoneX;
18124
+ exports.curveMonotoneY = monotoneY;
18125
+ exports.curveNatural = natural;
18126
+ exports.curveStep = step;
18127
+ exports.curveStepAfter = stepAfter;
18128
+ exports.curveStepBefore = stepBefore;
18129
+ exports.customEvent = customEvent;
18130
+ exports.descending = descending;
18131
+ exports.deviation = deviation;
17864
18132
  exports.dispatch = dispatch;
17865
18133
  exports.drag = drag;
17866
18134
  exports.dragDisable = dragDisable;
17867
18135
  exports.dragEnable = yesdrag;
18136
+ exports.dsv = dsv;
17868
18137
  exports.dsvFormat = dsvFormat;
17869
- exports.csvParse = csvParse;
17870
- exports.csvParseRows = csvParseRows;
17871
- exports.csvFormat = csvFormat;
17872
- exports.csvFormatBody = csvFormatBody;
17873
- exports.csvFormatRows = csvFormatRows;
17874
- exports.tsvParse = tsvParse;
17875
- exports.tsvParseRows = tsvParseRows;
17876
- exports.tsvFormat = tsvFormat;
17877
- exports.tsvFormatBody = tsvFormatBody;
17878
- exports.tsvFormatRows = tsvFormatRows;
17879
- exports.autoType = autoType;
17880
- exports.easeLinear = linear$1;
17881
- exports.easeQuad = quadInOut;
17882
- exports.easeQuadIn = quadIn;
17883
- exports.easeQuadOut = quadOut;
17884
- exports.easeQuadInOut = quadInOut;
18138
+ exports.easeBack = backInOut;
18139
+ exports.easeBackIn = backIn;
18140
+ exports.easeBackInOut = backInOut;
18141
+ exports.easeBackOut = backOut;
18142
+ exports.easeBounce = bounceOut;
18143
+ exports.easeBounceIn = bounceIn;
18144
+ exports.easeBounceInOut = bounceInOut;
18145
+ exports.easeBounceOut = bounceOut;
18146
+ exports.easeCircle = circleInOut;
18147
+ exports.easeCircleIn = circleIn;
18148
+ exports.easeCircleInOut = circleInOut;
18149
+ exports.easeCircleOut = circleOut;
17885
18150
  exports.easeCubic = cubicInOut;
17886
18151
  exports.easeCubicIn = cubicIn;
17887
- exports.easeCubicOut = cubicOut;
17888
18152
  exports.easeCubicInOut = cubicInOut;
18153
+ exports.easeCubicOut = cubicOut;
18154
+ exports.easeElastic = elasticOut;
18155
+ exports.easeElasticIn = elasticIn;
18156
+ exports.easeElasticInOut = elasticInOut;
18157
+ exports.easeElasticOut = elasticOut;
18158
+ exports.easeExp = expInOut;
18159
+ exports.easeExpIn = expIn;
18160
+ exports.easeExpInOut = expInOut;
18161
+ exports.easeExpOut = expOut;
18162
+ exports.easeLinear = linear$1;
17889
18163
  exports.easePoly = polyInOut;
17890
18164
  exports.easePolyIn = polyIn;
17891
- exports.easePolyOut = polyOut;
17892
18165
  exports.easePolyInOut = polyInOut;
18166
+ exports.easePolyOut = polyOut;
18167
+ exports.easeQuad = quadInOut;
18168
+ exports.easeQuadIn = quadIn;
18169
+ exports.easeQuadInOut = quadInOut;
18170
+ exports.easeQuadOut = quadOut;
17893
18171
  exports.easeSin = sinInOut;
17894
18172
  exports.easeSinIn = sinIn;
17895
- exports.easeSinOut = sinOut;
17896
18173
  exports.easeSinInOut = sinInOut;
17897
- exports.easeExp = expInOut;
17898
- exports.easeExpIn = expIn;
17899
- exports.easeExpOut = expOut;
17900
- exports.easeExpInOut = expInOut;
17901
- exports.easeCircle = circleInOut;
17902
- exports.easeCircleIn = circleIn;
17903
- exports.easeCircleOut = circleOut;
17904
- exports.easeCircleInOut = circleInOut;
17905
- exports.easeBounce = bounceOut;
17906
- exports.easeBounceIn = bounceIn;
17907
- exports.easeBounceOut = bounceOut;
17908
- exports.easeBounceInOut = bounceInOut;
17909
- exports.easeBack = backInOut;
17910
- exports.easeBackIn = backIn;
17911
- exports.easeBackOut = backOut;
17912
- exports.easeBackInOut = backInOut;
17913
- exports.easeElastic = elasticOut;
17914
- exports.easeElasticIn = elasticIn;
17915
- exports.easeElasticOut = elasticOut;
17916
- exports.easeElasticInOut = elasticInOut;
17917
- exports.blob = blob;
17918
- exports.buffer = buffer;
17919
- exports.dsv = dsv;
17920
- exports.csv = csv$1;
17921
- exports.tsv = tsv$1;
17922
- exports.image = image;
17923
- exports.json = json;
17924
- exports.text = text;
17925
- exports.xml = xml;
17926
- exports.html = html;
17927
- exports.svg = svg;
18174
+ exports.easeSinOut = sinOut;
18175
+ exports.entries = entries;
18176
+ exports.extent = extent;
17928
18177
  exports.forceCenter = center$1;
17929
18178
  exports.forceCollide = collide;
17930
18179
  exports.forceLink = link;
@@ -17936,10 +18185,13 @@ exports.forceY = y$2;
17936
18185
  exports.formatDefaultLocale = defaultLocale;
17937
18186
  exports.formatLocale = formatLocale;
17938
18187
  exports.formatSpecifier = formatSpecifier;
17939
- exports.precisionFixed = precisionFixed;
17940
- exports.precisionPrefix = precisionPrefix;
17941
- exports.precisionRound = precisionRound;
18188
+ exports.geoAlbers = albers;
18189
+ exports.geoAlbersUsa = albersUsa;
17942
18190
  exports.geoArea = area$1;
18191
+ exports.geoAzimuthalEqualArea = azimuthalEqualArea;
18192
+ exports.geoAzimuthalEqualAreaRaw = azimuthalEqualAreaRaw;
18193
+ exports.geoAzimuthalEquidistant = azimuthalEquidistant;
18194
+ exports.geoAzimuthalEquidistantRaw = azimuthalEquidistantRaw;
17943
18195
  exports.geoBounds = bounds;
17944
18196
  exports.geoCentroid = centroid;
17945
18197
  exports.geoCircle = circle;
@@ -17947,260 +18199,243 @@ exports.geoClipAntimeridian = clipAntimeridian;
17947
18199
  exports.geoClipCircle = clipCircle;
17948
18200
  exports.geoClipExtent = extent$1;
17949
18201
  exports.geoClipRectangle = clipRectangle;
17950
- exports.geoContains = contains$1;
17951
- exports.geoDistance = distance;
17952
- exports.geoGraticule = graticule;
17953
- exports.geoGraticule10 = graticule10;
17954
- exports.geoInterpolate = interpolate$1;
17955
- exports.geoLength = length$1;
17956
- exports.geoPath = index$1;
17957
- exports.geoAlbers = albers;
17958
- exports.geoAlbersUsa = albersUsa;
17959
- exports.geoAzimuthalEqualArea = azimuthalEqualArea;
17960
- exports.geoAzimuthalEqualAreaRaw = azimuthalEqualAreaRaw;
17961
- exports.geoAzimuthalEquidistant = azimuthalEquidistant;
17962
- exports.geoAzimuthalEquidistantRaw = azimuthalEquidistantRaw;
17963
18202
  exports.geoConicConformal = conicConformal;
17964
18203
  exports.geoConicConformalRaw = conicConformalRaw;
17965
18204
  exports.geoConicEqualArea = conicEqualArea;
17966
18205
  exports.geoConicEqualAreaRaw = conicEqualAreaRaw;
17967
18206
  exports.geoConicEquidistant = conicEquidistant;
17968
18207
  exports.geoConicEquidistantRaw = conicEquidistantRaw;
18208
+ exports.geoContains = contains$1;
18209
+ exports.geoDistance = distance;
17969
18210
  exports.geoEqualEarth = equalEarth;
17970
18211
  exports.geoEqualEarthRaw = equalEarthRaw;
17971
18212
  exports.geoEquirectangular = equirectangular;
17972
18213
  exports.geoEquirectangularRaw = equirectangularRaw;
17973
18214
  exports.geoGnomonic = gnomonic;
17974
18215
  exports.geoGnomonicRaw = gnomonicRaw;
18216
+ exports.geoGraticule = graticule;
18217
+ exports.geoGraticule10 = graticule10;
17975
18218
  exports.geoIdentity = identity$5;
17976
- exports.geoProjection = projection;
17977
- exports.geoProjectionMutator = projectionMutator;
18219
+ exports.geoInterpolate = interpolate$1;
18220
+ exports.geoLength = length$1;
17978
18221
  exports.geoMercator = mercator;
17979
18222
  exports.geoMercatorRaw = mercatorRaw;
17980
18223
  exports.geoNaturalEarth1 = naturalEarth1;
17981
18224
  exports.geoNaturalEarth1Raw = naturalEarth1Raw;
17982
18225
  exports.geoOrthographic = orthographic;
17983
18226
  exports.geoOrthographicRaw = orthographicRaw;
18227
+ exports.geoPath = index$1;
18228
+ exports.geoProjection = projection;
18229
+ exports.geoProjectionMutator = projectionMutator;
18230
+ exports.geoRotation = rotation;
17984
18231
  exports.geoStereographic = stereographic;
17985
18232
  exports.geoStereographicRaw = stereographicRaw;
17986
- exports.geoTransverseMercator = transverseMercator;
17987
- exports.geoTransverseMercatorRaw = transverseMercatorRaw;
17988
- exports.geoRotation = rotation;
17989
18233
  exports.geoStream = geoStream;
17990
18234
  exports.geoTransform = transform;
17991
- exports.cluster = cluster;
18235
+ exports.geoTransverseMercator = transverseMercator;
18236
+ exports.geoTransverseMercatorRaw = transverseMercatorRaw;
18237
+ exports.gray = gray;
18238
+ exports.hcl = hcl;
17992
18239
  exports.hierarchy = hierarchy;
17993
- exports.pack = index$2;
17994
- exports.packSiblings = siblings;
17995
- exports.packEnclose = enclose;
17996
- exports.partition = partition;
17997
- exports.stratify = stratify;
17998
- exports.tree = tree;
17999
- exports.treemap = index$3;
18000
- exports.treemapBinary = binary;
18001
- exports.treemapDice = treemapDice;
18002
- exports.treemapSlice = treemapSlice;
18003
- exports.treemapSliceDice = sliceDice;
18004
- exports.treemapSquarify = squarify;
18005
- exports.treemapResquarify = resquarify;
18240
+ exports.histogram = histogram;
18241
+ exports.hsl = hsl;
18242
+ exports.html = html;
18243
+ exports.image = image;
18006
18244
  exports.interpolate = interpolateValue;
18007
18245
  exports.interpolateArray = array$1;
18008
18246
  exports.interpolateBasis = basis$1;
18009
18247
  exports.interpolateBasisClosed = basisClosed;
18248
+ exports.interpolateBlues = Blues;
18249
+ exports.interpolateBrBG = BrBG;
18250
+ exports.interpolateBuGn = BuGn;
18251
+ exports.interpolateBuPu = BuPu;
18252
+ exports.interpolateCividis = cividis;
18253
+ exports.interpolateCool = cool;
18254
+ exports.interpolateCubehelix = cubehelix$2;
18255
+ exports.interpolateCubehelixDefault = cubehelix$3;
18256
+ exports.interpolateCubehelixLong = cubehelixLong;
18010
18257
  exports.interpolateDate = date;
18011
18258
  exports.interpolateDiscrete = discrete;
18259
+ exports.interpolateGnBu = GnBu;
18260
+ exports.interpolateGreens = Greens;
18261
+ exports.interpolateGreys = Greys;
18262
+ exports.interpolateHcl = hcl$2;
18263
+ exports.interpolateHclLong = hclLong;
18264
+ exports.interpolateHsl = hsl$2;
18265
+ exports.interpolateHslLong = hslLong;
18012
18266
  exports.interpolateHue = hue$1;
18267
+ exports.interpolateInferno = inferno;
18268
+ exports.interpolateLab = lab$1;
18269
+ exports.interpolateMagma = magma;
18013
18270
  exports.interpolateNumber = interpolateNumber;
18271
+ exports.interpolateNumberArray = numberArray;
18014
18272
  exports.interpolateObject = object;
18273
+ exports.interpolateOrRd = OrRd;
18274
+ exports.interpolateOranges = Oranges;
18275
+ exports.interpolatePRGn = PRGn;
18276
+ exports.interpolatePiYG = PiYG;
18277
+ exports.interpolatePlasma = plasma;
18278
+ exports.interpolatePuBu = PuBu;
18279
+ exports.interpolatePuBuGn = PuBuGn;
18280
+ exports.interpolatePuOr = PuOr;
18281
+ exports.interpolatePuRd = PuRd;
18282
+ exports.interpolatePurples = Purples;
18283
+ exports.interpolateRainbow = rainbow;
18284
+ exports.interpolateRdBu = RdBu;
18285
+ exports.interpolateRdGy = RdGy;
18286
+ exports.interpolateRdPu = RdPu;
18287
+ exports.interpolateRdYlBu = RdYlBu;
18288
+ exports.interpolateRdYlGn = RdYlGn;
18289
+ exports.interpolateReds = Reds;
18290
+ exports.interpolateRgb = interpolateRgb;
18291
+ exports.interpolateRgbBasis = rgbBasis;
18292
+ exports.interpolateRgbBasisClosed = rgbBasisClosed;
18015
18293
  exports.interpolateRound = interpolateRound;
18294
+ exports.interpolateSinebow = sinebow;
18295
+ exports.interpolateSpectral = Spectral;
18016
18296
  exports.interpolateString = interpolateString;
18017
18297
  exports.interpolateTransformCss = interpolateTransformCss;
18018
18298
  exports.interpolateTransformSvg = interpolateTransformSvg;
18299
+ exports.interpolateTurbo = turbo;
18300
+ exports.interpolateViridis = viridis;
18301
+ exports.interpolateWarm = warm;
18302
+ exports.interpolateYlGn = YlGn;
18303
+ exports.interpolateYlGnBu = YlGnBu;
18304
+ exports.interpolateYlOrBr = YlOrBr;
18305
+ exports.interpolateYlOrRd = YlOrRd;
18019
18306
  exports.interpolateZoom = interpolateZoom;
18020
- exports.interpolateRgb = interpolateRgb;
18021
- exports.interpolateRgbBasis = rgbBasis;
18022
- exports.interpolateRgbBasisClosed = rgbBasisClosed;
18023
- exports.interpolateHsl = hsl$2;
18024
- exports.interpolateHslLong = hslLong;
18025
- exports.interpolateLab = lab$1;
18026
- exports.interpolateHcl = hcl$2;
18027
- exports.interpolateHclLong = hclLong;
18028
- exports.interpolateCubehelix = cubehelix$2;
18029
- exports.interpolateCubehelixLong = cubehelixLong;
18030
- exports.piecewise = piecewise;
18031
- exports.quantize = quantize;
18032
- exports.path = path;
18033
- exports.polygonArea = area$2;
18034
- exports.polygonCentroid = centroid$1;
18035
- exports.polygonHull = hull;
18036
- exports.polygonContains = contains$2;
18037
- exports.polygonLength = length$2;
18038
- exports.quadtree = quadtree;
18039
- exports.randomUniform = uniform;
18040
- exports.randomNormal = normal;
18041
- exports.randomLogNormal = logNormal;
18307
+ exports.interrupt = interrupt;
18308
+ exports.interval = interval$1;
18309
+ exports.isoFormat = formatIso;
18310
+ exports.isoParse = parseIso;
18311
+ exports.json = json;
18312
+ exports.keys = keys;
18313
+ exports.lab = lab;
18314
+ exports.lch = lch;
18315
+ exports.line = line;
18316
+ exports.lineRadial = lineRadial$1;
18317
+ exports.linkHorizontal = linkHorizontal;
18318
+ exports.linkRadial = linkRadial;
18319
+ exports.linkVertical = linkVertical;
18320
+ exports.local = local;
18321
+ exports.map = map$1;
18322
+ exports.matcher = matcher;
18323
+ exports.max = max;
18324
+ exports.mean = mean;
18325
+ exports.median = median;
18326
+ exports.merge = merge;
18327
+ exports.min = min;
18328
+ exports.mouse = mouse;
18329
+ exports.namespace = namespace;
18330
+ exports.namespaces = namespaces;
18331
+ exports.nest = nest;
18332
+ exports.now = now;
18333
+ exports.pack = index$2;
18334
+ exports.packEnclose = enclose;
18335
+ exports.packSiblings = siblings;
18336
+ exports.pairs = pairs;
18337
+ exports.partition = partition;
18338
+ exports.path = path;
18339
+ exports.permute = permute;
18340
+ exports.pie = pie;
18341
+ exports.piecewise = piecewise;
18342
+ exports.pointRadial = pointRadial;
18343
+ exports.polygonArea = area$2;
18344
+ exports.polygonCentroid = centroid$1;
18345
+ exports.polygonContains = contains$2;
18346
+ exports.polygonHull = hull;
18347
+ exports.polygonLength = length$2;
18348
+ exports.precisionFixed = precisionFixed;
18349
+ exports.precisionPrefix = precisionPrefix;
18350
+ exports.precisionRound = precisionRound;
18351
+ exports.quadtree = quadtree;
18352
+ exports.quantile = threshold;
18353
+ exports.quantize = quantize;
18354
+ exports.radialArea = areaRadial;
18355
+ exports.radialLine = lineRadial$1;
18042
18356
  exports.randomBates = bates;
18043
- exports.randomIrwinHall = irwinHall;
18044
18357
  exports.randomExponential = exponential$1;
18358
+ exports.randomIrwinHall = irwinHall;
18359
+ exports.randomLogNormal = logNormal;
18360
+ exports.randomNormal = normal;
18361
+ exports.randomUniform = uniform;
18362
+ exports.range = sequence;
18363
+ exports.rgb = rgb;
18364
+ exports.ribbon = ribbon;
18045
18365
  exports.scaleBand = band;
18046
- exports.scalePoint = point$1;
18366
+ exports.scaleDiverging = diverging;
18367
+ exports.scaleDivergingLog = divergingLog;
18368
+ exports.scaleDivergingPow = divergingPow;
18369
+ exports.scaleDivergingSqrt = divergingSqrt;
18370
+ exports.scaleDivergingSymlog = divergingSymlog;
18047
18371
  exports.scaleIdentity = identity$7;
18372
+ exports.scaleImplicit = implicit;
18048
18373
  exports.scaleLinear = linear$2;
18049
18374
  exports.scaleLog = log$1;
18050
- exports.scaleSymlog = symlog;
18051
18375
  exports.scaleOrdinal = ordinal;
18052
- exports.scaleImplicit = implicit;
18376
+ exports.scalePoint = point$1;
18053
18377
  exports.scalePow = pow$1;
18054
- exports.scaleSqrt = sqrt$1;
18055
- exports.scaleQuantile = quantile$$1;
18378
+ exports.scaleQuantile = quantile;
18056
18379
  exports.scaleQuantize = quantize$1;
18057
- exports.scaleThreshold = threshold$1;
18058
- exports.scaleTime = time;
18059
- exports.scaleUtc = utcTime;
18060
18380
  exports.scaleSequential = sequential;
18061
18381
  exports.scaleSequentialLog = sequentialLog;
18062
18382
  exports.scaleSequentialPow = sequentialPow;
18383
+ exports.scaleSequentialQuantile = sequentialQuantile;
18063
18384
  exports.scaleSequentialSqrt = sequentialSqrt;
18064
18385
  exports.scaleSequentialSymlog = sequentialSymlog;
18065
- exports.scaleSequentialQuantile = sequentialQuantile;
18066
- exports.scaleDiverging = diverging;
18067
- exports.scaleDivergingLog = divergingLog;
18068
- exports.scaleDivergingPow = divergingPow;
18069
- exports.scaleDivergingSqrt = divergingSqrt;
18070
- exports.scaleDivergingSymlog = divergingSymlog;
18071
- exports.tickFormat = tickFormat;
18072
- exports.schemeCategory10 = category10;
18386
+ exports.scaleSqrt = sqrt$1;
18387
+ exports.scaleSymlog = symlog;
18388
+ exports.scaleThreshold = threshold$1;
18389
+ exports.scaleTime = time;
18390
+ exports.scaleUtc = utcTime;
18391
+ exports.scan = scan;
18073
18392
  exports.schemeAccent = Accent;
18393
+ exports.schemeBlues = scheme$l;
18394
+ exports.schemeBrBG = scheme;
18395
+ exports.schemeBuGn = scheme$9;
18396
+ exports.schemeBuPu = scheme$a;
18397
+ exports.schemeCategory10 = category10;
18074
18398
  exports.schemeDark2 = Dark2;
18399
+ exports.schemeGnBu = scheme$b;
18400
+ exports.schemeGreens = scheme$m;
18401
+ exports.schemeGreys = scheme$n;
18402
+ exports.schemeOrRd = scheme$c;
18403
+ exports.schemeOranges = scheme$q;
18404
+ exports.schemePRGn = scheme$1;
18075
18405
  exports.schemePaired = Paired;
18076
18406
  exports.schemePastel1 = Pastel1;
18077
18407
  exports.schemePastel2 = Pastel2;
18078
- exports.schemeSet1 = Set1;
18079
- exports.schemeSet2 = Set2;
18080
- exports.schemeSet3 = Set3;
18081
- exports.interpolateBrBG = BrBG;
18082
- exports.schemeBrBG = scheme;
18083
- exports.interpolatePRGn = PRGn;
18084
- exports.schemePRGn = scheme$1;
18085
- exports.interpolatePiYG = PiYG;
18086
18408
  exports.schemePiYG = scheme$2;
18087
- exports.interpolatePuOr = PuOr;
18409
+ exports.schemePuBu = scheme$e;
18410
+ exports.schemePuBuGn = scheme$d;
18088
18411
  exports.schemePuOr = scheme$3;
18089
- exports.interpolateRdBu = RdBu;
18412
+ exports.schemePuRd = scheme$f;
18413
+ exports.schemePurples = scheme$o;
18090
18414
  exports.schemeRdBu = scheme$4;
18091
- exports.interpolateRdGy = RdGy;
18092
18415
  exports.schemeRdGy = scheme$5;
18093
- exports.interpolateRdYlBu = RdYlBu;
18416
+ exports.schemeRdPu = scheme$g;
18094
18417
  exports.schemeRdYlBu = scheme$6;
18095
- exports.interpolateRdYlGn = RdYlGn;
18096
18418
  exports.schemeRdYlGn = scheme$7;
18097
- exports.interpolateSpectral = Spectral;
18419
+ exports.schemeReds = scheme$p;
18420
+ exports.schemeSet1 = Set1;
18421
+ exports.schemeSet2 = Set2;
18422
+ exports.schemeSet3 = Set3;
18098
18423
  exports.schemeSpectral = scheme$8;
18099
- exports.interpolateBuGn = BuGn;
18100
- exports.schemeBuGn = scheme$9;
18101
- exports.interpolateBuPu = BuPu;
18102
- exports.schemeBuPu = scheme$a;
18103
- exports.interpolateGnBu = GnBu;
18104
- exports.schemeGnBu = scheme$b;
18105
- exports.interpolateOrRd = OrRd;
18106
- exports.schemeOrRd = scheme$c;
18107
- exports.interpolatePuBuGn = PuBuGn;
18108
- exports.schemePuBuGn = scheme$d;
18109
- exports.interpolatePuBu = PuBu;
18110
- exports.schemePuBu = scheme$e;
18111
- exports.interpolatePuRd = PuRd;
18112
- exports.schemePuRd = scheme$f;
18113
- exports.interpolateRdPu = RdPu;
18114
- exports.schemeRdPu = scheme$g;
18115
- exports.interpolateYlGnBu = YlGnBu;
18116
- exports.schemeYlGnBu = scheme$h;
18117
- exports.interpolateYlGn = YlGn;
18424
+ exports.schemeTableau10 = Tableau10;
18118
18425
  exports.schemeYlGn = scheme$i;
18119
- exports.interpolateYlOrBr = YlOrBr;
18426
+ exports.schemeYlGnBu = scheme$h;
18120
18427
  exports.schemeYlOrBr = scheme$j;
18121
- exports.interpolateYlOrRd = YlOrRd;
18122
18428
  exports.schemeYlOrRd = scheme$k;
18123
- exports.interpolateBlues = Blues;
18124
- exports.schemeBlues = scheme$l;
18125
- exports.interpolateGreens = Greens;
18126
- exports.schemeGreens = scheme$m;
18127
- exports.interpolateGreys = Greys;
18128
- exports.schemeGreys = scheme$n;
18129
- exports.interpolatePurples = Purples;
18130
- exports.schemePurples = scheme$o;
18131
- exports.interpolateReds = Reds;
18132
- exports.schemeReds = scheme$p;
18133
- exports.interpolateOranges = Oranges;
18134
- exports.schemeOranges = scheme$q;
18135
- exports.interpolateCubehelixDefault = cubehelix$3;
18136
- exports.interpolateRainbow = rainbow;
18137
- exports.interpolateWarm = warm;
18138
- exports.interpolateCool = cool;
18139
- exports.interpolateSinebow = sinebow;
18140
- exports.interpolateViridis = viridis;
18141
- exports.interpolateMagma = magma;
18142
- exports.interpolateInferno = inferno;
18143
- exports.interpolatePlasma = plasma;
18144
- exports.create = create;
18145
- exports.creator = creator;
18146
- exports.local = local;
18147
- exports.matcher = matcher;
18148
- exports.mouse = mouse;
18149
- exports.namespace = namespace;
18150
- exports.namespaces = namespaces;
18151
- exports.clientPoint = point;
18152
18429
  exports.select = select;
18153
18430
  exports.selectAll = selectAll;
18154
18431
  exports.selection = selection;
18155
18432
  exports.selector = selector;
18156
18433
  exports.selectorAll = selectorAll;
18157
- exports.style = styleValue;
18158
- exports.touch = touch;
18159
- exports.touches = touches;
18160
- exports.window = defaultView;
18161
- exports.customEvent = customEvent;
18162
- exports.arc = arc;
18163
- exports.area = area$3;
18164
- exports.line = line;
18165
- exports.pie = pie;
18166
- exports.areaRadial = areaRadial;
18167
- exports.radialArea = areaRadial;
18168
- exports.lineRadial = lineRadial$1;
18169
- exports.radialLine = lineRadial$1;
18170
- exports.pointRadial = pointRadial;
18171
- exports.linkHorizontal = linkHorizontal;
18172
- exports.linkVertical = linkVertical;
18173
- exports.linkRadial = linkRadial;
18174
- exports.symbol = symbol;
18175
- exports.symbols = symbols;
18176
- exports.symbolCircle = circle$2;
18177
- exports.symbolCross = cross$2;
18178
- exports.symbolDiamond = diamond;
18179
- exports.symbolSquare = square;
18180
- exports.symbolStar = star;
18181
- exports.symbolTriangle = triangle;
18182
- exports.symbolWye = wye;
18183
- exports.curveBasisClosed = basisClosed$1;
18184
- exports.curveBasisOpen = basisOpen;
18185
- exports.curveBasis = basis$2;
18186
- exports.curveBundle = bundle;
18187
- exports.curveCardinalClosed = cardinalClosed;
18188
- exports.curveCardinalOpen = cardinalOpen;
18189
- exports.curveCardinal = cardinal;
18190
- exports.curveCatmullRomClosed = catmullRomClosed;
18191
- exports.curveCatmullRomOpen = catmullRomOpen;
18192
- exports.curveCatmullRom = catmullRom;
18193
- exports.curveLinearClosed = linearClosed;
18194
- exports.curveLinear = curveLinear;
18195
- exports.curveMonotoneX = monotoneX;
18196
- exports.curveMonotoneY = monotoneY;
18197
- exports.curveNatural = natural;
18198
- exports.curveStep = step;
18199
- exports.curveStepAfter = stepAfter;
18200
- exports.curveStepBefore = stepBefore;
18434
+ exports.set = set$2;
18435
+ exports.shuffle = shuffle;
18201
18436
  exports.stack = stack;
18202
- exports.stackOffsetExpand = expand;
18203
18437
  exports.stackOffsetDiverging = diverging$1;
18438
+ exports.stackOffsetExpand = expand;
18204
18439
  exports.stackOffsetNone = none$1;
18205
18440
  exports.stackOffsetSilhouette = silhouette;
18206
18441
  exports.stackOffsetWiggle = wiggle;
@@ -18210,84 +18445,124 @@ exports.stackOrderDescending = descending$2;
18210
18445
  exports.stackOrderInsideOut = insideOut;
18211
18446
  exports.stackOrderNone = none$2;
18212
18447
  exports.stackOrderReverse = reverse;
18448
+ exports.stratify = stratify;
18449
+ exports.style = styleValue;
18450
+ exports.sum = sum;
18451
+ exports.svg = svg;
18452
+ exports.symbol = symbol;
18453
+ exports.symbolCircle = circle$2;
18454
+ exports.symbolCross = cross$2;
18455
+ exports.symbolDiamond = diamond;
18456
+ exports.symbolSquare = square;
18457
+ exports.symbolStar = star;
18458
+ exports.symbolTriangle = triangle;
18459
+ exports.symbolWye = wye;
18460
+ exports.symbols = symbols;
18461
+ exports.text = text;
18462
+ exports.thresholdFreedmanDiaconis = freedmanDiaconis;
18463
+ exports.thresholdScott = scott;
18464
+ exports.thresholdSturges = thresholdSturges;
18465
+ exports.tickFormat = tickFormat;
18466
+ exports.tickIncrement = tickIncrement;
18467
+ exports.tickStep = tickStep;
18468
+ exports.ticks = ticks;
18469
+ exports.timeDay = day;
18470
+ exports.timeDays = days;
18471
+ exports.timeFormatDefaultLocale = defaultLocale$1;
18472
+ exports.timeFormatLocale = formatLocale$1;
18473
+ exports.timeFriday = friday;
18474
+ exports.timeFridays = fridays;
18475
+ exports.timeHour = hour;
18476
+ exports.timeHours = hours;
18213
18477
  exports.timeInterval = newInterval;
18214
18478
  exports.timeMillisecond = millisecond;
18215
18479
  exports.timeMilliseconds = milliseconds;
18216
- exports.utcMillisecond = millisecond;
18217
- exports.utcMilliseconds = milliseconds;
18218
- exports.timeSecond = second;
18219
- exports.timeSeconds = seconds;
18220
- exports.utcSecond = second;
18221
- exports.utcSeconds = seconds;
18222
18480
  exports.timeMinute = minute;
18223
18481
  exports.timeMinutes = minutes;
18224
- exports.timeHour = hour;
18225
- exports.timeHours = hours;
18226
- exports.timeDay = day;
18227
- exports.timeDays = days;
18228
- exports.timeWeek = sunday;
18229
- exports.timeWeeks = sundays;
18230
- exports.timeSunday = sunday;
18231
- exports.timeSundays = sundays;
18232
18482
  exports.timeMonday = monday;
18233
18483
  exports.timeMondays = mondays;
18484
+ exports.timeMonth = month;
18485
+ exports.timeMonths = months;
18486
+ exports.timeSaturday = saturday;
18487
+ exports.timeSaturdays = saturdays;
18488
+ exports.timeSecond = second;
18489
+ exports.timeSeconds = seconds;
18490
+ exports.timeSunday = sunday;
18491
+ exports.timeSundays = sundays;
18492
+ exports.timeThursday = thursday;
18493
+ exports.timeThursdays = thursdays;
18234
18494
  exports.timeTuesday = tuesday;
18235
18495
  exports.timeTuesdays = tuesdays;
18236
18496
  exports.timeWednesday = wednesday;
18237
18497
  exports.timeWednesdays = wednesdays;
18238
- exports.timeThursday = thursday;
18239
- exports.timeThursdays = thursdays;
18240
- exports.timeFriday = friday;
18241
- exports.timeFridays = fridays;
18242
- exports.timeSaturday = saturday;
18243
- exports.timeSaturdays = saturdays;
18244
- exports.timeMonth = month;
18245
- exports.timeMonths = months;
18498
+ exports.timeWeek = sunday;
18499
+ exports.timeWeeks = sundays;
18246
18500
  exports.timeYear = year;
18247
18501
  exports.timeYears = years;
18248
- exports.utcMinute = utcMinute;
18249
- exports.utcMinutes = utcMinutes;
18250
- exports.utcHour = utcHour;
18251
- exports.utcHours = utcHours;
18502
+ exports.timeout = timeout$1;
18503
+ exports.timer = timer;
18504
+ exports.timerFlush = timerFlush;
18505
+ exports.touch = touch;
18506
+ exports.touches = touches;
18507
+ exports.transition = transition;
18508
+ exports.transpose = transpose;
18509
+ exports.tree = tree;
18510
+ exports.treemap = index$3;
18511
+ exports.treemapBinary = binary;
18512
+ exports.treemapDice = treemapDice;
18513
+ exports.treemapResquarify = resquarify;
18514
+ exports.treemapSlice = treemapSlice;
18515
+ exports.treemapSliceDice = sliceDice;
18516
+ exports.treemapSquarify = squarify;
18517
+ exports.tsv = tsv$1;
18518
+ exports.tsvFormat = tsvFormat;
18519
+ exports.tsvFormatBody = tsvFormatBody;
18520
+ exports.tsvFormatRow = tsvFormatRow;
18521
+ exports.tsvFormatRows = tsvFormatRows;
18522
+ exports.tsvFormatValue = tsvFormatValue;
18523
+ exports.tsvParse = tsvParse;
18524
+ exports.tsvParseRows = tsvParseRows;
18252
18525
  exports.utcDay = utcDay;
18253
18526
  exports.utcDays = utcDays;
18254
- exports.utcWeek = utcSunday;
18255
- exports.utcWeeks = utcSundays;
18256
- exports.utcSunday = utcSunday;
18257
- exports.utcSundays = utcSundays;
18527
+ exports.utcFriday = utcFriday;
18528
+ exports.utcFridays = utcFridays;
18529
+ exports.utcHour = utcHour;
18530
+ exports.utcHours = utcHours;
18531
+ exports.utcMillisecond = millisecond;
18532
+ exports.utcMilliseconds = milliseconds;
18533
+ exports.utcMinute = utcMinute;
18534
+ exports.utcMinutes = utcMinutes;
18258
18535
  exports.utcMonday = utcMonday;
18259
18536
  exports.utcMondays = utcMondays;
18537
+ exports.utcMonth = utcMonth;
18538
+ exports.utcMonths = utcMonths;
18539
+ exports.utcSaturday = utcSaturday;
18540
+ exports.utcSaturdays = utcSaturdays;
18541
+ exports.utcSecond = second;
18542
+ exports.utcSeconds = seconds;
18543
+ exports.utcSunday = utcSunday;
18544
+ exports.utcSundays = utcSundays;
18545
+ exports.utcThursday = utcThursday;
18546
+ exports.utcThursdays = utcThursdays;
18260
18547
  exports.utcTuesday = utcTuesday;
18261
18548
  exports.utcTuesdays = utcTuesdays;
18262
18549
  exports.utcWednesday = utcWednesday;
18263
18550
  exports.utcWednesdays = utcWednesdays;
18264
- exports.utcThursday = utcThursday;
18265
- exports.utcThursdays = utcThursdays;
18266
- exports.utcFriday = utcFriday;
18267
- exports.utcFridays = utcFridays;
18268
- exports.utcSaturday = utcSaturday;
18269
- exports.utcSaturdays = utcSaturdays;
18270
- exports.utcMonth = utcMonth;
18271
- exports.utcMonths = utcMonths;
18551
+ exports.utcWeek = utcSunday;
18552
+ exports.utcWeeks = utcSundays;
18272
18553
  exports.utcYear = utcYear;
18273
18554
  exports.utcYears = utcYears;
18274
- exports.timeFormatDefaultLocale = defaultLocale$1;
18275
- exports.timeFormatLocale = formatLocale$1;
18276
- exports.isoFormat = formatIso;
18277
- exports.isoParse = parseIso;
18278
- exports.now = now;
18279
- exports.timer = timer;
18280
- exports.timerFlush = timerFlush;
18281
- exports.timeout = timeout$1;
18282
- exports.interval = interval$1;
18283
- exports.transition = transition;
18284
- exports.active = active;
18285
- exports.interrupt = interrupt;
18555
+ exports.values = values;
18556
+ exports.variance = variance;
18557
+ exports.version = version;
18286
18558
  exports.voronoi = voronoi;
18559
+ exports.window = defaultView;
18560
+ exports.xml = xml;
18561
+ exports.zip = zip;
18287
18562
  exports.zoom = zoom;
18288
- exports.zoomTransform = transform$1;
18289
18563
  exports.zoomIdentity = identity$9;
18564
+ exports.zoomTransform = transform$1;
18290
18565
 
18291
18566
  Object.defineProperty(exports, '__esModule', { value: true });
18292
18567
 
18293
- })));
18568
+ }));