d3-rails 5.9.2 → 5.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ }));