d3-rails 6.6.2 → 7.0.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 +4 -4
- data/CHANGELOG.md +4 -0
- data/LICENSE +1 -1
- data/README.md +1 -1
- data/Rakefile +4 -4
- data/app/assets/javascripts/d3.js +568 -230
- data/app/assets/javascripts/d3.min.js +2 -2
- data/app/assets/javascripts/{d3.v6.js → d3.v7.js} +568 -230
- data/app/assets/javascripts/d3.v7.min.js +2 -0
- data/lib/d3/rails/version.rb +1 -1
- metadata +5 -5
- data/app/assets/javascripts/d3.v6.min.js +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 872c8c61c83f4a64bac7ee1fa88bdbd866740c24f8f90a5bda16d1e36744fabd
|
4
|
+
data.tar.gz: bce7e7c6211e662ff499e5b01d12c3a004bd4dae20cec53df5668d2b6c68848e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d323d4461910aa437c2c82421ec1d34f6c810ff757cbe55d901bf5eacc6b30033b6ec1c43bf75300bcfbaad1acfb4d784642863cb86cd1d8476373a4b26e697
|
7
|
+
data.tar.gz: 8c352574589f6f1bd4fe666b130fc966fbd66b667123ef84184677e95f4db475f5c45f91fc1c33cc6658429f8a312bc7337766d35f3755c4f23b9cd04a18f6e9
|
data/CHANGELOG.md
CHANGED
data/LICENSE
CHANGED
@@ -3,7 +3,7 @@ license applies:
|
|
3
3
|
|
4
4
|
The MIT License
|
5
5
|
|
6
|
-
Copyright (c) 2012-
|
6
|
+
Copyright (c) 2012-2021 Markus Fenske
|
7
7
|
|
8
8
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
9
|
of this software and associated documentation files (the "Software"), to deal
|
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
|
11
|
+
d3-rails comes with version 7.0.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
|
|
data/Rakefile
CHANGED
@@ -4,10 +4,10 @@ Bundler::GemHelper.install_tasks
|
|
4
4
|
namespace :d3 do
|
5
5
|
desc 'Update d3 version'
|
6
6
|
task :update_version do
|
7
|
-
`curl -o app/assets/javascripts/d3.js https://d3js.org/d3.
|
8
|
-
`curl -o app/assets/javascripts/d3.min.js https://d3js.org/d3.
|
9
|
-
`cp app/assets/javascripts/d3.js app/assets/javascripts/d3.
|
10
|
-
`cp app/assets/javascripts/d3.min.js app/assets/javascripts/d3.
|
7
|
+
`curl -o app/assets/javascripts/d3.js https://d3js.org/d3.v7.js`
|
8
|
+
`curl -o app/assets/javascripts/d3.min.js https://d3js.org/d3.v7.min.js`
|
9
|
+
`cp app/assets/javascripts/d3.js app/assets/javascripts/d3.v7.js`
|
10
|
+
`cp app/assets/javascripts/d3.min.js app/assets/javascripts/d3.v7.min.js`
|
11
11
|
version = File.open("app/assets/javascripts/d3.js") { |f|
|
12
12
|
f.each_line.lazy.select { |line|
|
13
13
|
line.match(/((\d+\.)(\d+\.)(\*|\d+))/)
|
@@ -1,14 +1,18 @@
|
|
1
|
-
// https://d3js.org
|
1
|
+
// https://d3js.org v7.0.0 Copyright 2010-2021 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
5
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.d3 = global.d3 || {}));
|
6
6
|
}(this, (function (exports) { 'use strict';
|
7
7
|
|
8
|
-
var version = "
|
8
|
+
var version = "7.0.0";
|
9
9
|
|
10
10
|
function ascending$3(a, b) {
|
11
|
-
return a
|
11
|
+
return a == null || b == null ? NaN
|
12
|
+
: a < b ? -1
|
13
|
+
: a > b ? 1
|
14
|
+
: a >= b ? 0
|
15
|
+
: NaN;
|
12
16
|
}
|
13
17
|
|
14
18
|
function bisector(f) {
|
@@ -143,7 +147,11 @@ function cumsum(values, valueof) {
|
|
143
147
|
}
|
144
148
|
|
145
149
|
function descending$2(a, b) {
|
146
|
-
return
|
150
|
+
return a == null || b == null ? NaN
|
151
|
+
: b < a ? -1
|
152
|
+
: b > a ? 1
|
153
|
+
: b >= a ? 0
|
154
|
+
: NaN;
|
147
155
|
}
|
148
156
|
|
149
157
|
function variance(values, valueof) {
|
@@ -351,6 +359,21 @@ function groups(values, ...keys) {
|
|
351
359
|
return nest(values, Array.from, identity$9, keys);
|
352
360
|
}
|
353
361
|
|
362
|
+
function flatten$1(groups, keys) {
|
363
|
+
for (let i = 1, n = keys.length; i < n; ++i) {
|
364
|
+
groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));
|
365
|
+
}
|
366
|
+
return groups;
|
367
|
+
}
|
368
|
+
|
369
|
+
function flatGroup(values, ...keys) {
|
370
|
+
return flatten$1(groups(values, ...keys), keys);
|
371
|
+
}
|
372
|
+
|
373
|
+
function flatRollup(values, reduce, ...keys) {
|
374
|
+
return flatten$1(rollups(values, reduce, ...keys), keys);
|
375
|
+
}
|
376
|
+
|
354
377
|
function rollup(values, reduce, ...keys) {
|
355
378
|
return nest(values, identity$9, reduce, keys);
|
356
379
|
}
|
@@ -427,7 +450,7 @@ function groupSort(values, reduce, key) {
|
|
427
450
|
|
428
451
|
var array$5 = Array.prototype;
|
429
452
|
|
430
|
-
var slice$
|
453
|
+
var slice$3 = array$5.slice;
|
431
454
|
|
432
455
|
function constant$b(x) {
|
433
456
|
return function() {
|
@@ -581,7 +604,7 @@ function bin() {
|
|
581
604
|
// Assign data to bins by value, ignoring any outside the domain.
|
582
605
|
for (i = 0; i < n; ++i) {
|
583
606
|
x = values[i];
|
584
|
-
if (x0 <= x && x <= x1) {
|
607
|
+
if (x != null && x0 <= x && x <= x1) {
|
585
608
|
bins[bisectRight(tz, x, 0, m)].push(data[i]);
|
586
609
|
}
|
587
610
|
}
|
@@ -598,7 +621,7 @@ function bin() {
|
|
598
621
|
};
|
599
622
|
|
600
623
|
histogram.thresholds = function(_) {
|
601
|
-
return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant$b(slice$
|
624
|
+
return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant$b(slice$3.call(_)) : constant$b(_), histogram) : threshold;
|
602
625
|
};
|
603
626
|
|
604
627
|
return histogram;
|
@@ -802,6 +825,33 @@ function minIndex(values, valueof) {
|
|
802
825
|
return minIndex;
|
803
826
|
}
|
804
827
|
|
828
|
+
function mode(values, valueof) {
|
829
|
+
const counts = new InternMap();
|
830
|
+
if (valueof === undefined) {
|
831
|
+
for (let value of values) {
|
832
|
+
if (value != null && value >= value) {
|
833
|
+
counts.set(value, (counts.get(value) || 0) + 1);
|
834
|
+
}
|
835
|
+
}
|
836
|
+
} else {
|
837
|
+
let index = -1;
|
838
|
+
for (let value of values) {
|
839
|
+
if ((value = valueof(value, ++index, values)) != null && value >= value) {
|
840
|
+
counts.set(value, (counts.get(value) || 0) + 1);
|
841
|
+
}
|
842
|
+
}
|
843
|
+
}
|
844
|
+
let modeValue;
|
845
|
+
let modeCount = 0;
|
846
|
+
for (const [value, count] of counts) {
|
847
|
+
if (count > modeCount) {
|
848
|
+
modeCount = count;
|
849
|
+
modeValue = value;
|
850
|
+
}
|
851
|
+
}
|
852
|
+
return modeValue;
|
853
|
+
}
|
854
|
+
|
805
855
|
function pairs(values, pairof = pair) {
|
806
856
|
const pairs = [];
|
807
857
|
let previous;
|
@@ -941,7 +991,7 @@ function shuffler(random) {
|
|
941
991
|
};
|
942
992
|
}
|
943
993
|
|
944
|
-
function sum$
|
994
|
+
function sum$2(values, valueof) {
|
945
995
|
let sum = 0;
|
946
996
|
if (valueof === undefined) {
|
947
997
|
for (let value of values) {
|
@@ -1108,8 +1158,6 @@ function union(...others) {
|
|
1108
1158
|
return set;
|
1109
1159
|
}
|
1110
1160
|
|
1111
|
-
var slice$3 = Array.prototype.slice;
|
1112
|
-
|
1113
1161
|
function identity$8(x) {
|
1114
1162
|
return x;
|
1115
1163
|
}
|
@@ -1118,7 +1166,7 @@ var top = 1,
|
|
1118
1166
|
right = 2,
|
1119
1167
|
bottom = 3,
|
1120
1168
|
left = 4,
|
1121
|
-
epsilon$
|
1169
|
+
epsilon$6 = 1e-6;
|
1122
1170
|
|
1123
1171
|
function translateX(x) {
|
1124
1172
|
return "translate(" + x + ",0)";
|
@@ -1192,11 +1240,11 @@ function axis(orient, scale) {
|
|
1192
1240
|
text = text.transition(context);
|
1193
1241
|
|
1194
1242
|
tickExit = tickExit.transition(context)
|
1195
|
-
.attr("opacity", epsilon$
|
1243
|
+
.attr("opacity", epsilon$6)
|
1196
1244
|
.attr("transform", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute("transform"); });
|
1197
1245
|
|
1198
1246
|
tickEnter
|
1199
|
-
.attr("opacity", epsilon$
|
1247
|
+
.attr("opacity", epsilon$6)
|
1200
1248
|
.attr("transform", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });
|
1201
1249
|
}
|
1202
1250
|
|
@@ -1233,15 +1281,15 @@ function axis(orient, scale) {
|
|
1233
1281
|
};
|
1234
1282
|
|
1235
1283
|
axis.ticks = function() {
|
1236
|
-
return tickArguments =
|
1284
|
+
return tickArguments = Array.from(arguments), axis;
|
1237
1285
|
};
|
1238
1286
|
|
1239
1287
|
axis.tickArguments = function(_) {
|
1240
|
-
return arguments.length ? (tickArguments = _ == null ? [] :
|
1288
|
+
return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();
|
1241
1289
|
};
|
1242
1290
|
|
1243
1291
|
axis.tickValues = function(_) {
|
1244
|
-
return arguments.length ? (tickValues = _ == null ? null :
|
1292
|
+
return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();
|
1245
1293
|
};
|
1246
1294
|
|
1247
1295
|
axis.tickFormat = function(_) {
|
@@ -1432,10 +1480,14 @@ function selection_select(select) {
|
|
1432
1480
|
return new Selection$1(subgroups, this._parents);
|
1433
1481
|
}
|
1434
1482
|
|
1483
|
+
// Given something array like (or null), returns something that is strictly an
|
1484
|
+
// array. This is used to ensure that array-like objects passed to d3.selectAll
|
1485
|
+
// or selection.selectAll are converted into proper arrays when creating a
|
1486
|
+
// selection; we don’t ever want to create a selection backed by a live
|
1487
|
+
// HTMLCollection or NodeList. However, note that selection.selectAll will use a
|
1488
|
+
// static NodeList as a group, since it safely derived from querySelectorAll.
|
1435
1489
|
function array$4(x) {
|
1436
|
-
return
|
1437
|
-
? x // Array, TypedArray, NodeList, array-like
|
1438
|
-
: Array.from(x); // Map, Set, iterable, string, or anything else
|
1490
|
+
return x == null ? [] : Array.isArray(x) ? x : Array.from(x);
|
1439
1491
|
}
|
1440
1492
|
|
1441
1493
|
function empty$1() {
|
@@ -1450,8 +1502,7 @@ function selectorAll(selector) {
|
|
1450
1502
|
|
1451
1503
|
function arrayAll(select) {
|
1452
1504
|
return function() {
|
1453
|
-
|
1454
|
-
return group == null ? [] : array$4(group);
|
1505
|
+
return array$4(select.apply(this, arguments));
|
1455
1506
|
};
|
1456
1507
|
}
|
1457
1508
|
|
@@ -1503,7 +1554,7 @@ function selection_selectChild(match) {
|
|
1503
1554
|
var filter = Array.prototype.filter;
|
1504
1555
|
|
1505
1556
|
function children() {
|
1506
|
-
return this.children;
|
1557
|
+
return Array.from(this.children);
|
1507
1558
|
}
|
1508
1559
|
|
1509
1560
|
function childrenFilter(match) {
|
@@ -1648,7 +1699,7 @@ function selection_data(value, key) {
|
|
1648
1699
|
var parent = parents[j],
|
1649
1700
|
group = groups[j],
|
1650
1701
|
groupLength = group.length,
|
1651
|
-
data =
|
1702
|
+
data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),
|
1652
1703
|
dataLength = data.length,
|
1653
1704
|
enterGroup = enter[j] = new Array(dataLength),
|
1654
1705
|
updateGroup = update[j] = new Array(dataLength),
|
@@ -1674,20 +1725,40 @@ function selection_data(value, key) {
|
|
1674
1725
|
return update;
|
1675
1726
|
}
|
1676
1727
|
|
1728
|
+
// Given some data, this returns an array-like view of it: an object that
|
1729
|
+
// exposes a length property and allows numeric indexing. Note that unlike
|
1730
|
+
// selectAll, this isn’t worried about “live” collections because the resulting
|
1731
|
+
// array will only be used briefly while data is being bound. (It is possible to
|
1732
|
+
// cause the data to change while iterating by using a key function, but please
|
1733
|
+
// don’t; we’d rather avoid a gratuitous copy.)
|
1734
|
+
function arraylike(data) {
|
1735
|
+
return typeof data === "object" && "length" in data
|
1736
|
+
? data // Array, TypedArray, NodeList, array-like
|
1737
|
+
: Array.from(data); // Map, Set, iterable, string, or anything else
|
1738
|
+
}
|
1739
|
+
|
1677
1740
|
function selection_exit() {
|
1678
1741
|
return new Selection$1(this._exit || this._groups.map(sparse), this._parents);
|
1679
1742
|
}
|
1680
1743
|
|
1681
1744
|
function selection_join(onenter, onupdate, onexit) {
|
1682
1745
|
var enter = this.enter(), update = this, exit = this.exit();
|
1683
|
-
|
1684
|
-
|
1746
|
+
if (typeof onenter === "function") {
|
1747
|
+
enter = onenter(enter);
|
1748
|
+
if (enter) enter = enter.selection();
|
1749
|
+
} else {
|
1750
|
+
enter = enter.append(onenter + "");
|
1751
|
+
}
|
1752
|
+
if (onupdate != null) {
|
1753
|
+
update = onupdate(update);
|
1754
|
+
if (update) update = update.selection();
|
1755
|
+
}
|
1685
1756
|
if (onexit == null) exit.remove(); else onexit(exit);
|
1686
1757
|
return enter && update ? enter.merge(update).order() : update;
|
1687
1758
|
}
|
1688
1759
|
|
1689
|
-
function selection_merge(
|
1690
|
-
|
1760
|
+
function selection_merge(context) {
|
1761
|
+
var selection = context.selection ? context.selection() : context;
|
1691
1762
|
|
1692
1763
|
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) {
|
1693
1764
|
for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
|
@@ -2340,9 +2411,14 @@ function pointers(events, node) {
|
|
2340
2411
|
function selectAll(selector) {
|
2341
2412
|
return typeof selector === "string"
|
2342
2413
|
? new Selection$1([document.querySelectorAll(selector)], [document.documentElement])
|
2343
|
-
: new Selection$1([
|
2414
|
+
: new Selection$1([array$4(selector)], root$1);
|
2344
2415
|
}
|
2345
2416
|
|
2417
|
+
// These are typically used in conjunction with noevent to ensure that we can
|
2418
|
+
// preventDefault on the event.
|
2419
|
+
const nonpassive = {passive: false};
|
2420
|
+
const nonpassivecapture = {capture: true, passive: false};
|
2421
|
+
|
2346
2422
|
function nopropagation$2(event) {
|
2347
2423
|
event.stopImmediatePropagation();
|
2348
2424
|
}
|
@@ -2354,9 +2430,9 @@ function noevent$2(event) {
|
|
2354
2430
|
|
2355
2431
|
function dragDisable(view) {
|
2356
2432
|
var root = view.document.documentElement,
|
2357
|
-
selection = select(view).on("dragstart.drag", noevent$2,
|
2433
|
+
selection = select(view).on("dragstart.drag", noevent$2, nonpassivecapture);
|
2358
2434
|
if ("onselectstart" in root) {
|
2359
|
-
selection.on("selectstart.drag", noevent$2,
|
2435
|
+
selection.on("selectstart.drag", noevent$2, nonpassivecapture);
|
2360
2436
|
} else {
|
2361
2437
|
root.__noselect = root.style.MozUserSelect;
|
2362
2438
|
root.style.MozUserSelect = "none";
|
@@ -2367,7 +2443,7 @@ function yesdrag(view, noclick) {
|
|
2367
2443
|
var root = view.document.documentElement,
|
2368
2444
|
selection = select(view).on("dragstart.drag", null);
|
2369
2445
|
if (noclick) {
|
2370
|
-
selection.on("click.drag", noevent$2,
|
2446
|
+
selection.on("click.drag", noevent$2, nonpassivecapture);
|
2371
2447
|
setTimeout(function() { selection.on("click.drag", null); }, 0);
|
2372
2448
|
}
|
2373
2449
|
if ("onselectstart" in root) {
|
@@ -2445,7 +2521,7 @@ function drag() {
|
|
2445
2521
|
.on("mousedown.drag", mousedowned)
|
2446
2522
|
.filter(touchable)
|
2447
2523
|
.on("touchstart.drag", touchstarted)
|
2448
|
-
.on("touchmove.drag", touchmoved)
|
2524
|
+
.on("touchmove.drag", touchmoved, nonpassive)
|
2449
2525
|
.on("touchend.drag touchcancel.drag", touchended)
|
2450
2526
|
.style("touch-action", "none")
|
2451
2527
|
.style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
|
@@ -2455,7 +2531,9 @@ function drag() {
|
|
2455
2531
|
if (touchending || !filter.call(this, event, d)) return;
|
2456
2532
|
var gesture = beforestart(this, container.call(this, event, d), event, d, "mouse");
|
2457
2533
|
if (!gesture) return;
|
2458
|
-
select(event.view)
|
2534
|
+
select(event.view)
|
2535
|
+
.on("mousemove.drag", mousemoved, nonpassivecapture)
|
2536
|
+
.on("mouseup.drag", mouseupped, nonpassivecapture);
|
2459
2537
|
dragDisable(event.view);
|
2460
2538
|
nopropagation$2(event);
|
2461
2539
|
mousemoving = false;
|
@@ -2544,7 +2622,7 @@ function drag() {
|
|
2544
2622
|
var p0 = p, n;
|
2545
2623
|
switch (type) {
|
2546
2624
|
case "start": gestures[identifier] = gesture, n = active++; break;
|
2547
|
-
case "end": delete gestures[identifier], --active; //
|
2625
|
+
case "end": delete gestures[identifier], --active; // falls through
|
2548
2626
|
case "drag": p = pointer(touch || event, container), n = active; break;
|
2549
2627
|
}
|
2550
2628
|
dispatch.call(
|
@@ -3100,13 +3178,13 @@ define(Hcl, hcl$2, extend(Color, {
|
|
3100
3178
|
}));
|
3101
3179
|
|
3102
3180
|
var A = -0.14861,
|
3103
|
-
B = +1.78277,
|
3181
|
+
B$1 = +1.78277,
|
3104
3182
|
C = -0.29227,
|
3105
|
-
D = -0.90649,
|
3183
|
+
D$1 = -0.90649,
|
3106
3184
|
E = +1.97294,
|
3107
|
-
ED = E * D,
|
3108
|
-
EB = E * B,
|
3109
|
-
BC_DA = B * C - D * A;
|
3185
|
+
ED = E * D$1,
|
3186
|
+
EB = E * B$1,
|
3187
|
+
BC_DA = B$1 * C - D$1 * A;
|
3110
3188
|
|
3111
3189
|
function cubehelixConvert(o) {
|
3112
3190
|
if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);
|
@@ -3116,7 +3194,7 @@ function cubehelixConvert(o) {
|
|
3116
3194
|
b = o.b / 255,
|
3117
3195
|
l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),
|
3118
3196
|
bl = b - l,
|
3119
|
-
k = (E * (g - l) - C * bl) / D,
|
3197
|
+
k = (E * (g - l) - C * bl) / D$1,
|
3120
3198
|
s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1
|
3121
3199
|
h = s ? Math.atan2(k, bl) * degrees$2 - 120 : NaN;
|
3122
3200
|
return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);
|
@@ -3149,8 +3227,8 @@ define(Cubehelix, cubehelix$3, extend(Color, {
|
|
3149
3227
|
cosh = Math.cos(h),
|
3150
3228
|
sinh = Math.sin(h);
|
3151
3229
|
return new Rgb(
|
3152
|
-
255 * (l + a * (A * cosh + B * sinh)),
|
3153
|
-
255 * (l + a * (C * cosh + D * sinh)),
|
3230
|
+
255 * (l + a * (A * cosh + B$1 * sinh)),
|
3231
|
+
255 * (l + a * (C * cosh + D$1 * sinh)),
|
3154
3232
|
255 * (l + a * (E * cosh)),
|
3155
3233
|
this.opacity
|
3156
3234
|
);
|
@@ -3769,7 +3847,7 @@ function timerFlush() {
|
|
3769
3847
|
++frame; // Pretend we’ve set an alarm, if we haven’t already.
|
3770
3848
|
var t = taskHead, e;
|
3771
3849
|
while (t) {
|
3772
|
-
if ((e = clockNow - t._time) >= 0) t._call.call(
|
3850
|
+
if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);
|
3773
3851
|
t = t._next;
|
3774
3852
|
}
|
3775
3853
|
--frame;
|
@@ -4643,6 +4721,8 @@ Transition.prototype = transition.prototype = {
|
|
4643
4721
|
constructor: Transition,
|
4644
4722
|
select: transition_select,
|
4645
4723
|
selectAll: transition_selectAll,
|
4724
|
+
selectChild: selection_prototype.selectChild,
|
4725
|
+
selectChildren: selection_prototype.selectChildren,
|
4646
4726
|
filter: transition_filter,
|
4647
4727
|
merge: transition_merge,
|
4648
4728
|
selection: transition_selection,
|
@@ -5176,7 +5256,7 @@ function brush$1(dim) {
|
|
5176
5256
|
.style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
|
5177
5257
|
}
|
5178
5258
|
|
5179
|
-
brush.move = function(group, selection) {
|
5259
|
+
brush.move = function(group, selection, event) {
|
5180
5260
|
if (group.tween) {
|
5181
5261
|
group
|
5182
5262
|
.on("start.brush", function(event) { emitter(this, arguments).beforestart().start(event); })
|
@@ -5209,13 +5289,13 @@ function brush$1(dim) {
|
|
5209
5289
|
interrupt(that);
|
5210
5290
|
state.selection = selection1 === null ? null : selection1;
|
5211
5291
|
redraw.call(that);
|
5212
|
-
emit.start().brush().end();
|
5292
|
+
emit.start(event).brush(event).end(event);
|
5213
5293
|
});
|
5214
5294
|
}
|
5215
5295
|
};
|
5216
5296
|
|
5217
|
-
brush.clear = function(group) {
|
5218
|
-
brush.move(group, null);
|
5297
|
+
brush.clear = function(group, event) {
|
5298
|
+
brush.move(group, null, event);
|
5219
5299
|
};
|
5220
5300
|
|
5221
5301
|
function redraw() {
|
@@ -5326,6 +5406,9 @@ function brush$1(dim) {
|
|
5326
5406
|
return t;
|
5327
5407
|
});
|
5328
5408
|
|
5409
|
+
interrupt(that);
|
5410
|
+
var emit = emitter(that, arguments, true).beforestart();
|
5411
|
+
|
5329
5412
|
if (type === "overlay") {
|
5330
5413
|
if (selection) moving = true;
|
5331
5414
|
const pts = [points[0], points[1] || points[0]];
|
@@ -5336,7 +5419,7 @@ function brush$1(dim) {
|
|
5336
5419
|
e0 = dim === Y ? E : max$2(pts[0][0], pts[1][0]),
|
5337
5420
|
s0 = dim === X ? S : max$2(pts[0][1], pts[1][1])
|
5338
5421
|
]];
|
5339
|
-
if (points.length > 1) move();
|
5422
|
+
if (points.length > 1) move(event);
|
5340
5423
|
} else {
|
5341
5424
|
w0 = selection[0][0];
|
5342
5425
|
n0 = selection[0][1];
|
@@ -5355,9 +5438,6 @@ function brush$1(dim) {
|
|
5355
5438
|
var overlay = group.selectAll(".overlay")
|
5356
5439
|
.attr("cursor", cursors[type]);
|
5357
5440
|
|
5358
|
-
interrupt(that);
|
5359
|
-
var emit = emitter(that, arguments, true).beforestart();
|
5360
|
-
|
5361
5441
|
if (event.touches) {
|
5362
5442
|
emit.moved = moved;
|
5363
5443
|
emit.ended = ended;
|
@@ -5483,7 +5563,7 @@ function brush$1(dim) {
|
|
5483
5563
|
if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;
|
5484
5564
|
if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;
|
5485
5565
|
mode = MODE_CENTER;
|
5486
|
-
move();
|
5566
|
+
move(event);
|
5487
5567
|
}
|
5488
5568
|
break;
|
5489
5569
|
}
|
@@ -5493,7 +5573,7 @@ function brush$1(dim) {
|
|
5493
5573
|
if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;
|
5494
5574
|
mode = MODE_SPACE;
|
5495
5575
|
overlay.attr("cursor", cursors.selection);
|
5496
|
-
move();
|
5576
|
+
move(event);
|
5497
5577
|
}
|
5498
5578
|
break;
|
5499
5579
|
}
|
@@ -5507,7 +5587,7 @@ function brush$1(dim) {
|
|
5507
5587
|
case 16: { // SHIFT
|
5508
5588
|
if (shifting) {
|
5509
5589
|
lockX = lockY = shifting = false;
|
5510
|
-
move();
|
5590
|
+
move(event);
|
5511
5591
|
}
|
5512
5592
|
break;
|
5513
5593
|
}
|
@@ -5516,7 +5596,7 @@ function brush$1(dim) {
|
|
5516
5596
|
if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;
|
5517
5597
|
if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;
|
5518
5598
|
mode = MODE_HANDLE;
|
5519
|
-
move();
|
5599
|
+
move(event);
|
5520
5600
|
}
|
5521
5601
|
break;
|
5522
5602
|
}
|
@@ -5532,7 +5612,7 @@ function brush$1(dim) {
|
|
5532
5612
|
mode = MODE_HANDLE;
|
5533
5613
|
}
|
5534
5614
|
overlay.attr("cursor", cursors[type]);
|
5535
|
-
move();
|
5615
|
+
move(event);
|
5536
5616
|
}
|
5537
5617
|
break;
|
5538
5618
|
}
|
@@ -5592,7 +5672,7 @@ var pi$3 = Math.PI;
|
|
5592
5672
|
var halfPi$2 = pi$3 / 2;
|
5593
5673
|
var tau$4 = pi$3 * 2;
|
5594
5674
|
var max$1 = Math.max;
|
5595
|
-
var epsilon$
|
5675
|
+
var epsilon$5 = 1e-12;
|
5596
5676
|
|
5597
5677
|
function range$1(i, j) {
|
5598
5678
|
return Array.from({length: j - i}, (_, k) => i + k);
|
@@ -5717,8 +5797,8 @@ function chord$1(directed, transpose) {
|
|
5717
5797
|
|
5718
5798
|
const pi$2 = Math.PI,
|
5719
5799
|
tau$3 = 2 * pi$2,
|
5720
|
-
epsilon$
|
5721
|
-
tauEpsilon = tau$3 - epsilon$
|
5800
|
+
epsilon$4 = 1e-6,
|
5801
|
+
tauEpsilon = tau$3 - epsilon$4;
|
5722
5802
|
|
5723
5803
|
function Path$1() {
|
5724
5804
|
this._x0 = this._y0 = // start of current subpath
|
@@ -5769,12 +5849,12 @@ Path$1.prototype = path.prototype = {
|
|
5769
5849
|
}
|
5770
5850
|
|
5771
5851
|
// Or, is (x1,y1) coincident with (x0,y0)? Do nothing.
|
5772
|
-
else if (!(l01_2 > epsilon$
|
5852
|
+
else if (!(l01_2 > epsilon$4));
|
5773
5853
|
|
5774
5854
|
// Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?
|
5775
5855
|
// Equivalently, is (x1,y1) coincident with (x2,y2)?
|
5776
5856
|
// Or, is the radius zero? Line to (x1,y1).
|
5777
|
-
else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon$
|
5857
|
+
else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon$4) || !r) {
|
5778
5858
|
this._ += "L" + (this._x1 = x1) + "," + (this._y1 = y1);
|
5779
5859
|
}
|
5780
5860
|
|
@@ -5791,7 +5871,7 @@ Path$1.prototype = path.prototype = {
|
|
5791
5871
|
t21 = l / l21;
|
5792
5872
|
|
5793
5873
|
// If the start tangent is not coincident with (x0,y0), line to.
|
5794
|
-
if (Math.abs(t01 - 1) > epsilon$
|
5874
|
+
if (Math.abs(t01 - 1) > epsilon$4) {
|
5795
5875
|
this._ += "L" + (x1 + t01 * x01) + "," + (y1 + t01 * y01);
|
5796
5876
|
}
|
5797
5877
|
|
@@ -5816,7 +5896,7 @@ Path$1.prototype = path.prototype = {
|
|
5816
5896
|
}
|
5817
5897
|
|
5818
5898
|
// Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).
|
5819
|
-
else if (Math.abs(this._x1 - x0) > epsilon$
|
5899
|
+
else if (Math.abs(this._x1 - x0) > epsilon$4 || Math.abs(this._y1 - y0) > epsilon$4) {
|
5820
5900
|
this._ += "L" + x0 + "," + y0;
|
5821
5901
|
}
|
5822
5902
|
|
@@ -5832,7 +5912,7 @@ Path$1.prototype = path.prototype = {
|
|
5832
5912
|
}
|
5833
5913
|
|
5834
5914
|
// Is this arc non-empty? Draw an arc!
|
5835
|
-
else if (da > epsilon$
|
5915
|
+
else if (da > epsilon$4) {
|
5836
5916
|
this._ += "A" + r + "," + r + ",0," + (+(da >= pi$2)) + "," + cw + "," + (this._x1 = x + r * Math.cos(a1)) + "," + (this._y1 = y + r * Math.sin(a1));
|
5837
5917
|
}
|
5838
5918
|
},
|
@@ -5905,10 +5985,10 @@ function ribbon(headRadius) {
|
|
5905
5985
|
|
5906
5986
|
if (!context) context = buffer = path();
|
5907
5987
|
|
5908
|
-
if (ap > epsilon$
|
5909
|
-
if (abs$2(sa1 - sa0) > ap * 2 + epsilon$
|
5988
|
+
if (ap > epsilon$5) {
|
5989
|
+
if (abs$2(sa1 - sa0) > ap * 2 + epsilon$5) sa1 > sa0 ? (sa0 += ap, sa1 -= ap) : (sa0 -= ap, sa1 += ap);
|
5910
5990
|
else sa0 = sa1 = (sa0 + sa1) / 2;
|
5911
|
-
if (abs$2(ta1 - ta0) > ap * 2 + epsilon$
|
5991
|
+
if (abs$2(ta1 - ta0) > ap * 2 + epsilon$5) ta1 > ta0 ? (ta0 += ap, ta1 -= ap) : (ta0 -= ap, ta1 += ap);
|
5912
5992
|
else ta0 = ta1 = (ta0 + ta1) / 2;
|
5913
5993
|
}
|
5914
5994
|
|
@@ -6058,16 +6138,13 @@ function contours() {
|
|
6058
6138
|
|
6059
6139
|
// Convert number of thresholds into uniform thresholds.
|
6060
6140
|
if (!Array.isArray(tz)) {
|
6061
|
-
|
6062
|
-
tz =
|
6063
|
-
tz = sequence(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);
|
6141
|
+
const e = extent$1(values), ts = tickStep(e[0], e[1], tz);
|
6142
|
+
tz = ticks(Math.floor(e[0] / ts) * ts, Math.floor(e[1] / ts - 1) * ts, tz);
|
6064
6143
|
} else {
|
6065
6144
|
tz = tz.slice().sort(ascending$1);
|
6066
6145
|
}
|
6067
6146
|
|
6068
|
-
return tz.map(
|
6069
|
-
return contour(values, value);
|
6070
|
-
});
|
6147
|
+
return tz.map(value => contour(values, value));
|
6071
6148
|
}
|
6072
6149
|
|
6073
6150
|
// Accumulate, smooth contour rings, assign holes to exterior rings.
|
@@ -6295,14 +6372,22 @@ function density() {
|
|
6295
6372
|
|
6296
6373
|
function density(data) {
|
6297
6374
|
var values0 = new Float32Array(n * m),
|
6298
|
-
values1 = new Float32Array(n * m)
|
6375
|
+
values1 = new Float32Array(n * m),
|
6376
|
+
pow2k = Math.pow(2, -k);
|
6299
6377
|
|
6300
6378
|
data.forEach(function(d, i, data) {
|
6301
|
-
var xi = (
|
6302
|
-
yi = (
|
6379
|
+
var xi = (x(d, i, data) + o) * pow2k,
|
6380
|
+
yi = (y(d, i, data) + o) * pow2k,
|
6303
6381
|
wi = +weight(d, i, data);
|
6304
6382
|
if (xi >= 0 && xi < n && yi >= 0 && yi < m) {
|
6305
|
-
|
6383
|
+
var x0 = Math.floor(xi),
|
6384
|
+
y0 = Math.floor(yi),
|
6385
|
+
xt = xi - x0 - 0.5,
|
6386
|
+
yt = yi - y0 - 0.5;
|
6387
|
+
values0[x0 + y0 * n] += (1 - xt) * (1 - yt) * wi;
|
6388
|
+
values0[x0 + 1 + y0 * n] += xt * (1 - yt) * wi;
|
6389
|
+
values0[x0 + 1 + (y0 + 1) * n] += xt * yt * wi;
|
6390
|
+
values0[x0 + (y0 + 1) * n] += (1 - xt) * yt * wi;
|
6306
6391
|
}
|
6307
6392
|
});
|
6308
6393
|
|
@@ -6396,6 +6481,274 @@ function density() {
|
|
6396
6481
|
return density;
|
6397
6482
|
}
|
6398
6483
|
|
6484
|
+
const epsilon$3 = 1.1102230246251565e-16;
|
6485
|
+
const splitter = 134217729;
|
6486
|
+
const resulterrbound = (3 + 8 * epsilon$3) * epsilon$3;
|
6487
|
+
|
6488
|
+
// fast_expansion_sum_zeroelim routine from oritinal code
|
6489
|
+
function sum$1(elen, e, flen, f, h) {
|
6490
|
+
let Q, Qnew, hh, bvirt;
|
6491
|
+
let enow = e[0];
|
6492
|
+
let fnow = f[0];
|
6493
|
+
let eindex = 0;
|
6494
|
+
let findex = 0;
|
6495
|
+
if ((fnow > enow) === (fnow > -enow)) {
|
6496
|
+
Q = enow;
|
6497
|
+
enow = e[++eindex];
|
6498
|
+
} else {
|
6499
|
+
Q = fnow;
|
6500
|
+
fnow = f[++findex];
|
6501
|
+
}
|
6502
|
+
let hindex = 0;
|
6503
|
+
if (eindex < elen && findex < flen) {
|
6504
|
+
if ((fnow > enow) === (fnow > -enow)) {
|
6505
|
+
Qnew = enow + Q;
|
6506
|
+
hh = Q - (Qnew - enow);
|
6507
|
+
enow = e[++eindex];
|
6508
|
+
} else {
|
6509
|
+
Qnew = fnow + Q;
|
6510
|
+
hh = Q - (Qnew - fnow);
|
6511
|
+
fnow = f[++findex];
|
6512
|
+
}
|
6513
|
+
Q = Qnew;
|
6514
|
+
if (hh !== 0) {
|
6515
|
+
h[hindex++] = hh;
|
6516
|
+
}
|
6517
|
+
while (eindex < elen && findex < flen) {
|
6518
|
+
if ((fnow > enow) === (fnow > -enow)) {
|
6519
|
+
Qnew = Q + enow;
|
6520
|
+
bvirt = Qnew - Q;
|
6521
|
+
hh = Q - (Qnew - bvirt) + (enow - bvirt);
|
6522
|
+
enow = e[++eindex];
|
6523
|
+
} else {
|
6524
|
+
Qnew = Q + fnow;
|
6525
|
+
bvirt = Qnew - Q;
|
6526
|
+
hh = Q - (Qnew - bvirt) + (fnow - bvirt);
|
6527
|
+
fnow = f[++findex];
|
6528
|
+
}
|
6529
|
+
Q = Qnew;
|
6530
|
+
if (hh !== 0) {
|
6531
|
+
h[hindex++] = hh;
|
6532
|
+
}
|
6533
|
+
}
|
6534
|
+
}
|
6535
|
+
while (eindex < elen) {
|
6536
|
+
Qnew = Q + enow;
|
6537
|
+
bvirt = Qnew - Q;
|
6538
|
+
hh = Q - (Qnew - bvirt) + (enow - bvirt);
|
6539
|
+
enow = e[++eindex];
|
6540
|
+
Q = Qnew;
|
6541
|
+
if (hh !== 0) {
|
6542
|
+
h[hindex++] = hh;
|
6543
|
+
}
|
6544
|
+
}
|
6545
|
+
while (findex < flen) {
|
6546
|
+
Qnew = Q + fnow;
|
6547
|
+
bvirt = Qnew - Q;
|
6548
|
+
hh = Q - (Qnew - bvirt) + (fnow - bvirt);
|
6549
|
+
fnow = f[++findex];
|
6550
|
+
Q = Qnew;
|
6551
|
+
if (hh !== 0) {
|
6552
|
+
h[hindex++] = hh;
|
6553
|
+
}
|
6554
|
+
}
|
6555
|
+
if (Q !== 0 || hindex === 0) {
|
6556
|
+
h[hindex++] = Q;
|
6557
|
+
}
|
6558
|
+
return hindex;
|
6559
|
+
}
|
6560
|
+
|
6561
|
+
function estimate(elen, e) {
|
6562
|
+
let Q = e[0];
|
6563
|
+
for (let i = 1; i < elen; i++) Q += e[i];
|
6564
|
+
return Q;
|
6565
|
+
}
|
6566
|
+
|
6567
|
+
function vec(n) {
|
6568
|
+
return new Float64Array(n);
|
6569
|
+
}
|
6570
|
+
|
6571
|
+
const ccwerrboundA = (3 + 16 * epsilon$3) * epsilon$3;
|
6572
|
+
const ccwerrboundB = (2 + 12 * epsilon$3) * epsilon$3;
|
6573
|
+
const ccwerrboundC = (9 + 64 * epsilon$3) * epsilon$3 * epsilon$3;
|
6574
|
+
|
6575
|
+
const B = vec(4);
|
6576
|
+
const C1 = vec(8);
|
6577
|
+
const C2 = vec(12);
|
6578
|
+
const D = vec(16);
|
6579
|
+
const u = vec(4);
|
6580
|
+
|
6581
|
+
function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {
|
6582
|
+
let acxtail, acytail, bcxtail, bcytail;
|
6583
|
+
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;
|
6584
|
+
|
6585
|
+
const acx = ax - cx;
|
6586
|
+
const bcx = bx - cx;
|
6587
|
+
const acy = ay - cy;
|
6588
|
+
const bcy = by - cy;
|
6589
|
+
|
6590
|
+
s1 = acx * bcy;
|
6591
|
+
c = splitter * acx;
|
6592
|
+
ahi = c - (c - acx);
|
6593
|
+
alo = acx - ahi;
|
6594
|
+
c = splitter * bcy;
|
6595
|
+
bhi = c - (c - bcy);
|
6596
|
+
blo = bcy - bhi;
|
6597
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
6598
|
+
t1 = acy * bcx;
|
6599
|
+
c = splitter * acy;
|
6600
|
+
ahi = c - (c - acy);
|
6601
|
+
alo = acy - ahi;
|
6602
|
+
c = splitter * bcx;
|
6603
|
+
bhi = c - (c - bcx);
|
6604
|
+
blo = bcx - bhi;
|
6605
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
6606
|
+
_i = s0 - t0;
|
6607
|
+
bvirt = s0 - _i;
|
6608
|
+
B[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
6609
|
+
_j = s1 + _i;
|
6610
|
+
bvirt = _j - s1;
|
6611
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
6612
|
+
_i = _0 - t1;
|
6613
|
+
bvirt = _0 - _i;
|
6614
|
+
B[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
6615
|
+
u3 = _j + _i;
|
6616
|
+
bvirt = u3 - _j;
|
6617
|
+
B[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
6618
|
+
B[3] = u3;
|
6619
|
+
|
6620
|
+
let det = estimate(4, B);
|
6621
|
+
let errbound = ccwerrboundB * detsum;
|
6622
|
+
if (det >= errbound || -det >= errbound) {
|
6623
|
+
return det;
|
6624
|
+
}
|
6625
|
+
|
6626
|
+
bvirt = ax - acx;
|
6627
|
+
acxtail = ax - (acx + bvirt) + (bvirt - cx);
|
6628
|
+
bvirt = bx - bcx;
|
6629
|
+
bcxtail = bx - (bcx + bvirt) + (bvirt - cx);
|
6630
|
+
bvirt = ay - acy;
|
6631
|
+
acytail = ay - (acy + bvirt) + (bvirt - cy);
|
6632
|
+
bvirt = by - bcy;
|
6633
|
+
bcytail = by - (bcy + bvirt) + (bvirt - cy);
|
6634
|
+
|
6635
|
+
if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {
|
6636
|
+
return det;
|
6637
|
+
}
|
6638
|
+
|
6639
|
+
errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);
|
6640
|
+
det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);
|
6641
|
+
if (det >= errbound || -det >= errbound) return det;
|
6642
|
+
|
6643
|
+
s1 = acxtail * bcy;
|
6644
|
+
c = splitter * acxtail;
|
6645
|
+
ahi = c - (c - acxtail);
|
6646
|
+
alo = acxtail - ahi;
|
6647
|
+
c = splitter * bcy;
|
6648
|
+
bhi = c - (c - bcy);
|
6649
|
+
blo = bcy - bhi;
|
6650
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
6651
|
+
t1 = acytail * bcx;
|
6652
|
+
c = splitter * acytail;
|
6653
|
+
ahi = c - (c - acytail);
|
6654
|
+
alo = acytail - ahi;
|
6655
|
+
c = splitter * bcx;
|
6656
|
+
bhi = c - (c - bcx);
|
6657
|
+
blo = bcx - bhi;
|
6658
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
6659
|
+
_i = s0 - t0;
|
6660
|
+
bvirt = s0 - _i;
|
6661
|
+
u[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
6662
|
+
_j = s1 + _i;
|
6663
|
+
bvirt = _j - s1;
|
6664
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
6665
|
+
_i = _0 - t1;
|
6666
|
+
bvirt = _0 - _i;
|
6667
|
+
u[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
6668
|
+
u3 = _j + _i;
|
6669
|
+
bvirt = u3 - _j;
|
6670
|
+
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
6671
|
+
u[3] = u3;
|
6672
|
+
const C1len = sum$1(4, B, 4, u, C1);
|
6673
|
+
|
6674
|
+
s1 = acx * bcytail;
|
6675
|
+
c = splitter * acx;
|
6676
|
+
ahi = c - (c - acx);
|
6677
|
+
alo = acx - ahi;
|
6678
|
+
c = splitter * bcytail;
|
6679
|
+
bhi = c - (c - bcytail);
|
6680
|
+
blo = bcytail - bhi;
|
6681
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
6682
|
+
t1 = acy * bcxtail;
|
6683
|
+
c = splitter * acy;
|
6684
|
+
ahi = c - (c - acy);
|
6685
|
+
alo = acy - ahi;
|
6686
|
+
c = splitter * bcxtail;
|
6687
|
+
bhi = c - (c - bcxtail);
|
6688
|
+
blo = bcxtail - bhi;
|
6689
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
6690
|
+
_i = s0 - t0;
|
6691
|
+
bvirt = s0 - _i;
|
6692
|
+
u[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
6693
|
+
_j = s1 + _i;
|
6694
|
+
bvirt = _j - s1;
|
6695
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
6696
|
+
_i = _0 - t1;
|
6697
|
+
bvirt = _0 - _i;
|
6698
|
+
u[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
6699
|
+
u3 = _j + _i;
|
6700
|
+
bvirt = u3 - _j;
|
6701
|
+
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
6702
|
+
u[3] = u3;
|
6703
|
+
const C2len = sum$1(C1len, C1, 4, u, C2);
|
6704
|
+
|
6705
|
+
s1 = acxtail * bcytail;
|
6706
|
+
c = splitter * acxtail;
|
6707
|
+
ahi = c - (c - acxtail);
|
6708
|
+
alo = acxtail - ahi;
|
6709
|
+
c = splitter * bcytail;
|
6710
|
+
bhi = c - (c - bcytail);
|
6711
|
+
blo = bcytail - bhi;
|
6712
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
6713
|
+
t1 = acytail * bcxtail;
|
6714
|
+
c = splitter * acytail;
|
6715
|
+
ahi = c - (c - acytail);
|
6716
|
+
alo = acytail - ahi;
|
6717
|
+
c = splitter * bcxtail;
|
6718
|
+
bhi = c - (c - bcxtail);
|
6719
|
+
blo = bcxtail - bhi;
|
6720
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
6721
|
+
_i = s0 - t0;
|
6722
|
+
bvirt = s0 - _i;
|
6723
|
+
u[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
6724
|
+
_j = s1 + _i;
|
6725
|
+
bvirt = _j - s1;
|
6726
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
6727
|
+
_i = _0 - t1;
|
6728
|
+
bvirt = _0 - _i;
|
6729
|
+
u[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
6730
|
+
u3 = _j + _i;
|
6731
|
+
bvirt = u3 - _j;
|
6732
|
+
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
6733
|
+
u[3] = u3;
|
6734
|
+
const Dlen = sum$1(C2len, C2, 4, u, D);
|
6735
|
+
|
6736
|
+
return D[Dlen - 1];
|
6737
|
+
}
|
6738
|
+
|
6739
|
+
function orient2d(ax, ay, bx, by, cx, cy) {
|
6740
|
+
const detleft = (ay - cy) * (bx - cx);
|
6741
|
+
const detright = (ax - cx) * (by - cy);
|
6742
|
+
const det = detleft - detright;
|
6743
|
+
|
6744
|
+
if (detleft === 0 || detright === 0 || (detleft > 0) !== (detright > 0)) return det;
|
6745
|
+
|
6746
|
+
const detsum = Math.abs(detleft + detright);
|
6747
|
+
if (Math.abs(det) >= ccwerrboundA * detsum) return det;
|
6748
|
+
|
6749
|
+
return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);
|
6750
|
+
}
|
6751
|
+
|
6399
6752
|
const EPSILON = Math.pow(2, -52);
|
6400
6753
|
const EDGE_STACK = new Uint32Array(512);
|
6401
6754
|
|
@@ -6526,7 +6879,7 @@ class Delaunator {
|
|
6526
6879
|
}
|
6527
6880
|
|
6528
6881
|
// swap the order of the seed points for counter-clockwise orientation
|
6529
|
-
if (
|
6882
|
+
if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) {
|
6530
6883
|
const i = i1;
|
6531
6884
|
const x = i1x;
|
6532
6885
|
const y = i1y;
|
@@ -6591,7 +6944,7 @@ class Delaunator {
|
|
6591
6944
|
|
6592
6945
|
start = hullPrev[start];
|
6593
6946
|
let e = start, q;
|
6594
|
-
while (q = hullNext[e],
|
6947
|
+
while (q = hullNext[e], orient2d(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) {
|
6595
6948
|
e = q;
|
6596
6949
|
if (e === start) {
|
6597
6950
|
e = -1;
|
@@ -6610,7 +6963,7 @@ class Delaunator {
|
|
6610
6963
|
|
6611
6964
|
// walk forward through the hull, adding more triangles and flipping recursively
|
6612
6965
|
let n = hullNext[e];
|
6613
|
-
while (q = hullNext[n],
|
6966
|
+
while (q = hullNext[n], orient2d(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) {
|
6614
6967
|
t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);
|
6615
6968
|
hullTri[i] = this._legalize(t + 2);
|
6616
6969
|
hullNext[n] = n; // mark as removed
|
@@ -6620,7 +6973,7 @@ class Delaunator {
|
|
6620
6973
|
|
6621
6974
|
// walk backward from the other side, adding more triangles and flipping
|
6622
6975
|
if (e === start) {
|
6623
|
-
while (q = hullPrev[e],
|
6976
|
+
while (q = hullPrev[e], orient2d(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) {
|
6624
6977
|
t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);
|
6625
6978
|
this._legalize(t + 2);
|
6626
6979
|
hullTri[q] = t;
|
@@ -6775,21 +7128,6 @@ function dist(ax, ay, bx, by) {
|
|
6775
7128
|
return dx * dx + dy * dy;
|
6776
7129
|
}
|
6777
7130
|
|
6778
|
-
// return 2d orientation sign if we're confident in it through J. Shewchuk's error bound check
|
6779
|
-
function orientIfSure(px, py, rx, ry, qx, qy) {
|
6780
|
-
const l = (ry - py) * (qx - px);
|
6781
|
-
const r = (rx - px) * (qy - py);
|
6782
|
-
return Math.abs(l - r) >= 3.3306690738754716e-16 * Math.abs(l + r) ? l - r : 0;
|
6783
|
-
}
|
6784
|
-
|
6785
|
-
// a more robust orientation test that's stable in a given triangle (to fix robustness issues)
|
6786
|
-
function orient(rx, ry, qx, qy, px, py) {
|
6787
|
-
const sign = orientIfSure(px, py, rx, ry, qx, qy) ||
|
6788
|
-
orientIfSure(rx, ry, qx, qy, px, py) ||
|
6789
|
-
orientIfSure(qx, qy, px, py, rx, ry);
|
6790
|
-
return sign < 0;
|
6791
|
-
}
|
6792
|
-
|
6793
7131
|
function inCircle(ax, ay, bx, by, cx, cy, px, py) {
|
6794
7132
|
const dx = ax - px;
|
6795
7133
|
const dy = ay - py;
|
@@ -6982,21 +7320,26 @@ class Voronoi {
|
|
6982
7320
|
const dy = y2 - y1;
|
6983
7321
|
const ex = x3 - x1;
|
6984
7322
|
const ey = y3 - y1;
|
6985
|
-
const bl = dx * dx + dy * dy;
|
6986
|
-
const cl = ex * ex + ey * ey;
|
6987
7323
|
const ab = (dx * ey - dy * ex) * 2;
|
6988
7324
|
|
6989
|
-
if (
|
7325
|
+
if (Math.abs(ab) < 1e-9) {
|
6990
7326
|
// degenerate case (collinear diagram)
|
6991
|
-
x = (x1 + x3) / 2 - 1e8 * ey;
|
6992
|
-
y = (y1 + y3) / 2 + 1e8 * ex;
|
6993
|
-
}
|
6994
|
-
else if (Math.abs(ab) < 1e-8) {
|
6995
7327
|
// almost equal points (degenerate triangle)
|
6996
|
-
|
6997
|
-
|
7328
|
+
// the circumcenter is at the infinity, in a
|
7329
|
+
// direction that is:
|
7330
|
+
// 1. orthogonal to the halfedge.
|
7331
|
+
let a = 1e9;
|
7332
|
+
// 2. points away from the center; since the list of triangles starts
|
7333
|
+
// in the center, the first point of the first triangle
|
7334
|
+
// will be our reference
|
7335
|
+
const r = triangles[0] * 2;
|
7336
|
+
a *= Math.sign((points[r] - x1) * ey - (points[r + 1] - y1) * ex);
|
7337
|
+
x = (x1 + x3) / 2 - a * ey;
|
7338
|
+
y = (y1 + y3) / 2 + a * ex;
|
6998
7339
|
} else {
|
6999
7340
|
const d = 1 / ab;
|
7341
|
+
const bl = dx * dx + dy * dy;
|
7342
|
+
const cl = ex * ex + ey * ey;
|
7000
7343
|
x = x1 + (ey * bl - dy * cl) * d;
|
7001
7344
|
y = y1 + (dx * cl - ex * bl) * d;
|
7002
7345
|
}
|
@@ -7144,7 +7487,7 @@ class Voronoi {
|
|
7144
7487
|
let P = null;
|
7145
7488
|
let x0, y0, x1 = points[n - 2], y1 = points[n - 1];
|
7146
7489
|
let c0, c1 = this._regioncode(x1, y1);
|
7147
|
-
let e0, e1;
|
7490
|
+
let e0, e1 = 0;
|
7148
7491
|
for (let j = 0; j < n; j += 2) {
|
7149
7492
|
x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];
|
7150
7493
|
c0 = c1, c1 = this._regioncode(x1, y1);
|
@@ -7219,6 +7562,8 @@ class Voronoi {
|
|
7219
7562
|
case 0b1001: e0 = 0b0001; continue; // bottom-left
|
7220
7563
|
case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left
|
7221
7564
|
}
|
7565
|
+
// Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are
|
7566
|
+
// undefined, the conditional statement will be executed.
|
7222
7567
|
if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {
|
7223
7568
|
P.splice(j, 0, x, y), j += 2;
|
7224
7569
|
}
|
@@ -7353,10 +7698,12 @@ class Delaunay {
|
|
7353
7698
|
this.triangles = new Int32Array(3).fill(-1);
|
7354
7699
|
this.halfedges = new Int32Array(3).fill(-1);
|
7355
7700
|
this.triangles[0] = hull[0];
|
7356
|
-
this.triangles[1] = hull[1];
|
7357
|
-
this.triangles[2] = hull[1];
|
7358
7701
|
inedges[hull[0]] = 1;
|
7359
|
-
if (hull.length === 2)
|
7702
|
+
if (hull.length === 2) {
|
7703
|
+
inedges[hull[1]] = 0;
|
7704
|
+
this.triangles[1] = hull[1];
|
7705
|
+
this.triangles[2] = hull[1];
|
7706
|
+
}
|
7360
7707
|
}
|
7361
7708
|
}
|
7362
7709
|
voronoi(bounds) {
|
@@ -7433,7 +7780,9 @@ class Delaunay {
|
|
7433
7780
|
this.renderHull(context);
|
7434
7781
|
return buffer && buffer.value();
|
7435
7782
|
}
|
7436
|
-
renderPoints(context, r
|
7783
|
+
renderPoints(context, r) {
|
7784
|
+
if (r === undefined && (!context || typeof context.moveTo !== "function")) r = context, context = null;
|
7785
|
+
r = r == undefined ? 2 : +r;
|
7437
7786
|
const buffer = context == null ? context = new Path : undefined;
|
7438
7787
|
const {points} = this;
|
7439
7788
|
for (let i = 0, n = points.length; i < n; i += 2) {
|
@@ -10012,10 +10361,7 @@ function link$1(array) {
|
|
10012
10361
|
}
|
10013
10362
|
|
10014
10363
|
function longitude(point) {
|
10015
|
-
|
10016
|
-
return point[0];
|
10017
|
-
else
|
10018
|
-
return sign$1(point[0]) * ((abs$1(point[0]) + pi$1) % tau$1 - pi$1);
|
10364
|
+
return abs$1(point[0]) <= pi$1 ? point[0] : sign$1(point[0]) * ((abs$1(point[0]) + pi$1) % tau$1 - pi$1);
|
10019
10365
|
}
|
10020
10366
|
|
10021
10367
|
function polygonContains(polygon, point) {
|
@@ -14055,27 +14401,26 @@ function initInterpolator(domain, interpolator) {
|
|
14055
14401
|
const implicit = Symbol("implicit");
|
14056
14402
|
|
14057
14403
|
function ordinal() {
|
14058
|
-
var index = new
|
14404
|
+
var index = new InternMap(),
|
14059
14405
|
domain = [],
|
14060
14406
|
range = [],
|
14061
14407
|
unknown = implicit;
|
14062
14408
|
|
14063
14409
|
function scale(d) {
|
14064
|
-
|
14065
|
-
if (
|
14410
|
+
let i = index.get(d);
|
14411
|
+
if (i === undefined) {
|
14066
14412
|
if (unknown !== implicit) return unknown;
|
14067
|
-
index.set(
|
14413
|
+
index.set(d, i = domain.push(d) - 1);
|
14068
14414
|
}
|
14069
|
-
return range[
|
14415
|
+
return range[i % range.length];
|
14070
14416
|
}
|
14071
14417
|
|
14072
14418
|
scale.domain = function(_) {
|
14073
14419
|
if (!arguments.length) return domain.slice();
|
14074
|
-
domain = [], index = new
|
14420
|
+
domain = [], index = new InternMap();
|
14075
14421
|
for (const value of _) {
|
14076
|
-
|
14077
|
-
|
14078
|
-
index.set(key, domain.push(value));
|
14422
|
+
if (index.has(value)) continue;
|
14423
|
+
index.set(value, domain.push(value) - 1);
|
14079
14424
|
}
|
14080
14425
|
return scale;
|
14081
14426
|
};
|
@@ -14982,40 +15327,42 @@ millisecond.every = function(k) {
|
|
14982
15327
|
};
|
14983
15328
|
var milliseconds = millisecond.range;
|
14984
15329
|
|
14985
|
-
|
14986
|
-
|
14987
|
-
|
14988
|
-
|
14989
|
-
|
15330
|
+
const durationSecond = 1000;
|
15331
|
+
const durationMinute = durationSecond * 60;
|
15332
|
+
const durationHour = durationMinute * 60;
|
15333
|
+
const durationDay = durationHour * 24;
|
15334
|
+
const durationWeek = durationDay * 7;
|
15335
|
+
const durationMonth = durationDay * 30;
|
15336
|
+
const durationYear = durationDay * 365;
|
14990
15337
|
|
14991
15338
|
var second = newInterval(function(date) {
|
14992
15339
|
date.setTime(date - date.getMilliseconds());
|
14993
15340
|
}, function(date, step) {
|
14994
|
-
date.setTime(+date + step * durationSecond
|
15341
|
+
date.setTime(+date + step * durationSecond);
|
14995
15342
|
}, function(start, end) {
|
14996
|
-
return (end - start) / durationSecond
|
15343
|
+
return (end - start) / durationSecond;
|
14997
15344
|
}, function(date) {
|
14998
15345
|
return date.getUTCSeconds();
|
14999
15346
|
});
|
15000
15347
|
var seconds = second.range;
|
15001
15348
|
|
15002
15349
|
var minute = newInterval(function(date) {
|
15003
|
-
date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond
|
15350
|
+
date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);
|
15004
15351
|
}, function(date, step) {
|
15005
|
-
date.setTime(+date + step * durationMinute
|
15352
|
+
date.setTime(+date + step * durationMinute);
|
15006
15353
|
}, function(start, end) {
|
15007
|
-
return (end - start) / durationMinute
|
15354
|
+
return (end - start) / durationMinute;
|
15008
15355
|
}, function(date) {
|
15009
15356
|
return date.getMinutes();
|
15010
15357
|
});
|
15011
15358
|
var minutes = minute.range;
|
15012
15359
|
|
15013
15360
|
var hour = newInterval(function(date) {
|
15014
|
-
date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond
|
15361
|
+
date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);
|
15015
15362
|
}, function(date, step) {
|
15016
|
-
date.setTime(+date + step * durationHour
|
15363
|
+
date.setTime(+date + step * durationHour);
|
15017
15364
|
}, function(start, end) {
|
15018
|
-
return (end - start) / durationHour
|
15365
|
+
return (end - start) / durationHour;
|
15019
15366
|
}, function(date) {
|
15020
15367
|
return date.getHours();
|
15021
15368
|
});
|
@@ -15024,7 +15371,7 @@ var hours = hour.range;
|
|
15024
15371
|
var day = newInterval(
|
15025
15372
|
date => date.setHours(0, 0, 0, 0),
|
15026
15373
|
(date, step) => date.setDate(date.getDate() + step),
|
15027
|
-
(start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute
|
15374
|
+
(start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,
|
15028
15375
|
date => date.getDate() - 1
|
15029
15376
|
);
|
15030
15377
|
var days = day.range;
|
@@ -15036,7 +15383,7 @@ function weekday(i) {
|
|
15036
15383
|
}, function(date, step) {
|
15037
15384
|
date.setDate(date.getDate() + step * 7);
|
15038
15385
|
}, function(start, end) {
|
15039
|
-
return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute
|
15386
|
+
return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;
|
15040
15387
|
});
|
15041
15388
|
}
|
15042
15389
|
|
@@ -15094,9 +15441,9 @@ var years = year.range;
|
|
15094
15441
|
var utcMinute = newInterval(function(date) {
|
15095
15442
|
date.setUTCSeconds(0, 0);
|
15096
15443
|
}, function(date, step) {
|
15097
|
-
date.setTime(+date + step * durationMinute
|
15444
|
+
date.setTime(+date + step * durationMinute);
|
15098
15445
|
}, function(start, end) {
|
15099
|
-
return (end - start) / durationMinute
|
15446
|
+
return (end - start) / durationMinute;
|
15100
15447
|
}, function(date) {
|
15101
15448
|
return date.getUTCMinutes();
|
15102
15449
|
});
|
@@ -15105,9 +15452,9 @@ var utcMinutes = utcMinute.range;
|
|
15105
15452
|
var utcHour = newInterval(function(date) {
|
15106
15453
|
date.setUTCMinutes(0, 0, 0);
|
15107
15454
|
}, function(date, step) {
|
15108
|
-
date.setTime(+date + step * durationHour
|
15455
|
+
date.setTime(+date + step * durationHour);
|
15109
15456
|
}, function(start, end) {
|
15110
|
-
return (end - start) / durationHour
|
15457
|
+
return (end - start) / durationHour;
|
15111
15458
|
}, function(date) {
|
15112
15459
|
return date.getUTCHours();
|
15113
15460
|
});
|
@@ -15118,7 +15465,7 @@ var utcDay = newInterval(function(date) {
|
|
15118
15465
|
}, function(date, step) {
|
15119
15466
|
date.setUTCDate(date.getUTCDate() + step);
|
15120
15467
|
}, function(start, end) {
|
15121
|
-
return (end - start) / durationDay
|
15468
|
+
return (end - start) / durationDay;
|
15122
15469
|
}, function(date) {
|
15123
15470
|
return date.getUTCDate() - 1;
|
15124
15471
|
});
|
@@ -15131,7 +15478,7 @@ function utcWeekday(i) {
|
|
15131
15478
|
}, function(date, step) {
|
15132
15479
|
date.setUTCDate(date.getUTCDate() + step * 7);
|
15133
15480
|
}, function(start, end) {
|
15134
|
-
return (end - start) / durationWeek
|
15481
|
+
return (end - start) / durationWeek;
|
15135
15482
|
});
|
15136
15483
|
}
|
15137
15484
|
|
@@ -15186,6 +15533,52 @@ utcYear.every = function(k) {
|
|
15186
15533
|
};
|
15187
15534
|
var utcYears = utcYear.range;
|
15188
15535
|
|
15536
|
+
function ticker(year, month, week, day, hour, minute) {
|
15537
|
+
|
15538
|
+
const tickIntervals = [
|
15539
|
+
[second, 1, durationSecond],
|
15540
|
+
[second, 5, 5 * durationSecond],
|
15541
|
+
[second, 15, 15 * durationSecond],
|
15542
|
+
[second, 30, 30 * durationSecond],
|
15543
|
+
[minute, 1, durationMinute],
|
15544
|
+
[minute, 5, 5 * durationMinute],
|
15545
|
+
[minute, 15, 15 * durationMinute],
|
15546
|
+
[minute, 30, 30 * durationMinute],
|
15547
|
+
[ hour, 1, durationHour ],
|
15548
|
+
[ hour, 3, 3 * durationHour ],
|
15549
|
+
[ hour, 6, 6 * durationHour ],
|
15550
|
+
[ hour, 12, 12 * durationHour ],
|
15551
|
+
[ day, 1, durationDay ],
|
15552
|
+
[ day, 2, 2 * durationDay ],
|
15553
|
+
[ week, 1, durationWeek ],
|
15554
|
+
[ month, 1, durationMonth ],
|
15555
|
+
[ month, 3, 3 * durationMonth ],
|
15556
|
+
[ year, 1, durationYear ]
|
15557
|
+
];
|
15558
|
+
|
15559
|
+
function ticks(start, stop, count) {
|
15560
|
+
const reverse = stop < start;
|
15561
|
+
if (reverse) [start, stop] = [stop, start];
|
15562
|
+
const interval = count && typeof count.range === "function" ? count : tickInterval(start, stop, count);
|
15563
|
+
const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop
|
15564
|
+
return reverse ? ticks.reverse() : ticks;
|
15565
|
+
}
|
15566
|
+
|
15567
|
+
function tickInterval(start, stop, count) {
|
15568
|
+
const target = Math.abs(stop - start) / count;
|
15569
|
+
const i = bisector(([,, step]) => step).right(tickIntervals, target);
|
15570
|
+
if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));
|
15571
|
+
if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));
|
15572
|
+
const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];
|
15573
|
+
return t.every(step);
|
15574
|
+
}
|
15575
|
+
|
15576
|
+
return [ticks, tickInterval];
|
15577
|
+
}
|
15578
|
+
|
15579
|
+
const [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, utcDay, utcHour, utcMinute);
|
15580
|
+
const [timeTicks, timeTickInterval] = ticker(year, month, sunday, day, hour, minute);
|
15581
|
+
|
15189
15582
|
function localDate(d) {
|
15190
15583
|
if (0 <= d.y && d.y < 100) {
|
15191
15584
|
var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);
|
@@ -15916,14 +16309,6 @@ var parseIso = +new Date("2000-01-01T00:00:00.000Z")
|
|
15916
16309
|
? parseIsoNative
|
15917
16310
|
: exports.utcParse(isoSpecifier);
|
15918
16311
|
|
15919
|
-
var durationSecond = 1000,
|
15920
|
-
durationMinute = durationSecond * 60,
|
15921
|
-
durationHour = durationMinute * 60,
|
15922
|
-
durationDay = durationHour * 24,
|
15923
|
-
durationWeek = durationDay * 7,
|
15924
|
-
durationMonth = durationDay * 30,
|
15925
|
-
durationYear = durationDay * 365;
|
15926
|
-
|
15927
16312
|
function date(t) {
|
15928
16313
|
return new Date(t);
|
15929
16314
|
}
|
@@ -15932,7 +16317,7 @@ function number(t) {
|
|
15932
16317
|
return t instanceof Date ? +t : +new Date(+t);
|
15933
16318
|
}
|
15934
16319
|
|
15935
|
-
function calendar(year, month, week, day, hour, minute, second,
|
16320
|
+
function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {
|
15936
16321
|
var scale = continuous(),
|
15937
16322
|
invert = scale.invert,
|
15938
16323
|
domain = scale.domain;
|
@@ -15946,27 +16331,6 @@ function calendar(year, month, week, day, hour, minute, second, millisecond, for
|
|
15946
16331
|
formatMonth = format("%B"),
|
15947
16332
|
formatYear = format("%Y");
|
15948
16333
|
|
15949
|
-
var tickIntervals = [
|
15950
|
-
[second, 1, durationSecond],
|
15951
|
-
[second, 5, 5 * durationSecond],
|
15952
|
-
[second, 15, 15 * durationSecond],
|
15953
|
-
[second, 30, 30 * durationSecond],
|
15954
|
-
[minute, 1, durationMinute],
|
15955
|
-
[minute, 5, 5 * durationMinute],
|
15956
|
-
[minute, 15, 15 * durationMinute],
|
15957
|
-
[minute, 30, 30 * durationMinute],
|
15958
|
-
[ hour, 1, durationHour ],
|
15959
|
-
[ hour, 3, 3 * durationHour ],
|
15960
|
-
[ hour, 6, 6 * durationHour ],
|
15961
|
-
[ hour, 12, 12 * durationHour ],
|
15962
|
-
[ day, 1, durationDay ],
|
15963
|
-
[ day, 2, 2 * durationDay ],
|
15964
|
-
[ week, 1, durationWeek ],
|
15965
|
-
[ month, 1, durationMonth ],
|
15966
|
-
[ month, 3, 3 * durationMonth ],
|
15967
|
-
[ year, 1, durationYear ]
|
15968
|
-
];
|
15969
|
-
|
15970
16334
|
function tickFormat(date) {
|
15971
16335
|
return (second(date) < date ? formatMillisecond
|
15972
16336
|
: minute(date) < date ? formatSecond
|
@@ -15977,33 +16341,6 @@ function calendar(year, month, week, day, hour, minute, second, millisecond, for
|
|
15977
16341
|
: formatYear)(date);
|
15978
16342
|
}
|
15979
16343
|
|
15980
|
-
function tickInterval(interval, start, stop) {
|
15981
|
-
if (interval == null) interval = 10;
|
15982
|
-
|
15983
|
-
// If a desired tick count is specified, pick a reasonable tick interval
|
15984
|
-
// based on the extent of the domain and a rough estimate of tick size.
|
15985
|
-
// Otherwise, assume interval is already a time interval and use it.
|
15986
|
-
if (typeof interval === "number") {
|
15987
|
-
var target = Math.abs(stop - start) / interval,
|
15988
|
-
i = bisector(function(i) { return i[2]; }).right(tickIntervals, target),
|
15989
|
-
step;
|
15990
|
-
if (i === tickIntervals.length) {
|
15991
|
-
step = tickStep(start / durationYear, stop / durationYear, interval);
|
15992
|
-
interval = year;
|
15993
|
-
} else if (i) {
|
15994
|
-
i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];
|
15995
|
-
step = i[1];
|
15996
|
-
interval = i[0];
|
15997
|
-
} else {
|
15998
|
-
step = Math.max(tickStep(start, stop, interval), 1);
|
15999
|
-
interval = millisecond;
|
16000
|
-
}
|
16001
|
-
return interval.every(step);
|
16002
|
-
}
|
16003
|
-
|
16004
|
-
return interval;
|
16005
|
-
}
|
16006
|
-
|
16007
16344
|
scale.invert = function(y) {
|
16008
16345
|
return new Date(invert(y));
|
16009
16346
|
};
|
@@ -16013,15 +16350,8 @@ function calendar(year, month, week, day, hour, minute, second, millisecond, for
|
|
16013
16350
|
};
|
16014
16351
|
|
16015
16352
|
scale.ticks = function(interval) {
|
16016
|
-
var d = domain()
|
16017
|
-
|
16018
|
-
t1 = d[d.length - 1],
|
16019
|
-
r = t1 < t0,
|
16020
|
-
t;
|
16021
|
-
if (r) t = t0, t0 = t1, t1 = t;
|
16022
|
-
t = tickInterval(interval, t0, t1);
|
16023
|
-
t = t ? t.range(t0, t1 + 1) : []; // inclusive stop
|
16024
|
-
return r ? t.reverse() : t;
|
16353
|
+
var d = domain();
|
16354
|
+
return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);
|
16025
16355
|
};
|
16026
16356
|
|
16027
16357
|
scale.tickFormat = function(count, specifier) {
|
@@ -16030,24 +16360,23 @@ function calendar(year, month, week, day, hour, minute, second, millisecond, for
|
|
16030
16360
|
|
16031
16361
|
scale.nice = function(interval) {
|
16032
16362
|
var d = domain();
|
16033
|
-
|
16034
|
-
|
16035
|
-
: scale;
|
16363
|
+
if (!interval || typeof interval.range !== "function") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);
|
16364
|
+
return interval ? domain(nice(d, interval)) : scale;
|
16036
16365
|
};
|
16037
16366
|
|
16038
16367
|
scale.copy = function() {
|
16039
|
-
return copy$1(scale, calendar(year, month, week, day, hour, minute, second,
|
16368
|
+
return copy$1(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));
|
16040
16369
|
};
|
16041
16370
|
|
16042
16371
|
return scale;
|
16043
16372
|
}
|
16044
16373
|
|
16045
16374
|
function time() {
|
16046
|
-
return initRange.apply(calendar(year, month, sunday, day, hour, minute, second,
|
16375
|
+
return initRange.apply(calendar(timeTicks, timeTickInterval, year, month, sunday, day, hour, minute, second, exports.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);
|
16047
16376
|
}
|
16048
16377
|
|
16049
16378
|
function utcTime() {
|
16050
|
-
return initRange.apply(calendar(utcYear, utcMonth, utcSunday, utcDay, utcHour, utcMinute, second,
|
16379
|
+
return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcSunday, utcDay, utcHour, utcMinute, second, exports.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);
|
16051
16380
|
}
|
16052
16381
|
|
16053
16382
|
function transformer$1() {
|
@@ -17029,7 +17358,7 @@ Linear.prototype = {
|
|
17029
17358
|
x = +x, y = +y;
|
17030
17359
|
switch (this._point) {
|
17031
17360
|
case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
|
17032
|
-
case 1: this._point = 2; //
|
17361
|
+
case 1: this._point = 2; // falls through
|
17033
17362
|
default: this._context.lineTo(x, y); break;
|
17034
17363
|
}
|
17035
17364
|
}
|
@@ -17628,7 +17957,7 @@ Basis.prototype = {
|
|
17628
17957
|
},
|
17629
17958
|
lineEnd: function() {
|
17630
17959
|
switch (this._point) {
|
17631
|
-
case 3: point$3(this, this._x1, this._y1); //
|
17960
|
+
case 3: point$3(this, this._x1, this._y1); // falls through
|
17632
17961
|
case 2: this._context.lineTo(this._x1, this._y1); break;
|
17633
17962
|
}
|
17634
17963
|
if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();
|
@@ -17639,7 +17968,7 @@ Basis.prototype = {
|
|
17639
17968
|
switch (this._point) {
|
17640
17969
|
case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
|
17641
17970
|
case 1: this._point = 2; break;
|
17642
|
-
case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); //
|
17971
|
+
case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through
|
17643
17972
|
default: point$3(this, x, y); break;
|
17644
17973
|
}
|
17645
17974
|
this._x0 = this._x1, this._x1 = x;
|
@@ -17727,7 +18056,7 @@ BasisOpen.prototype = {
|
|
17727
18056
|
case 0: this._point = 1; break;
|
17728
18057
|
case 1: this._point = 2; break;
|
17729
18058
|
case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;
|
17730
|
-
case 3: this._point = 4; //
|
18059
|
+
case 3: this._point = 4; // falls through
|
17731
18060
|
default: point$3(this, x, y); break;
|
17732
18061
|
}
|
17733
18062
|
this._x0 = this._x1, this._x1 = x;
|
@@ -17766,7 +18095,7 @@ class Bump {
|
|
17766
18095
|
else this._context.moveTo(x, y);
|
17767
18096
|
break;
|
17768
18097
|
}
|
17769
|
-
case 1: this._point = 2; //
|
18098
|
+
case 1: this._point = 2; // falls through
|
17770
18099
|
default: {
|
17771
18100
|
if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);
|
17772
18101
|
else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);
|
@@ -17881,7 +18210,7 @@ Cardinal.prototype = {
|
|
17881
18210
|
switch (this._point) {
|
17882
18211
|
case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
|
17883
18212
|
case 1: this._point = 2; this._x1 = x, this._y1 = y; break;
|
17884
|
-
case 2: this._point = 3; //
|
18213
|
+
case 2: this._point = 3; // falls through
|
17885
18214
|
default: point$2(this, x, y); break;
|
17886
18215
|
}
|
17887
18216
|
this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;
|
@@ -17988,7 +18317,7 @@ CardinalOpen.prototype = {
|
|
17988
18317
|
case 0: this._point = 1; break;
|
17989
18318
|
case 1: this._point = 2; break;
|
17990
18319
|
case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;
|
17991
|
-
case 3: this._point = 4; //
|
18320
|
+
case 3: this._point = 4; // falls through
|
17992
18321
|
default: point$2(this, x, y); break;
|
17993
18322
|
}
|
17994
18323
|
this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;
|
@@ -18071,7 +18400,7 @@ CatmullRom.prototype = {
|
|
18071
18400
|
switch (this._point) {
|
18072
18401
|
case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
|
18073
18402
|
case 1: this._point = 2; break;
|
18074
|
-
case 2: this._point = 3; //
|
18403
|
+
case 2: this._point = 3; // falls through
|
18075
18404
|
default: point$1(this, x, y); break;
|
18076
18405
|
}
|
18077
18406
|
|
@@ -18202,7 +18531,7 @@ CatmullRomOpen.prototype = {
|
|
18202
18531
|
case 0: this._point = 1; break;
|
18203
18532
|
case 1: this._point = 2; break;
|
18204
18533
|
case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;
|
18205
|
-
case 3: this._point = 4; //
|
18534
|
+
case 3: this._point = 4; // falls through
|
18206
18535
|
default: point$1(this, x, y); break;
|
18207
18536
|
}
|
18208
18537
|
|
@@ -18446,7 +18775,7 @@ Step.prototype = {
|
|
18446
18775
|
x = +x, y = +y;
|
18447
18776
|
switch (this._point) {
|
18448
18777
|
case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
|
18449
|
-
case 1: this._point = 2; //
|
18778
|
+
case 1: this._point = 2; // falls through
|
18450
18779
|
default: {
|
18451
18780
|
if (this._t <= 0) {
|
18452
18781
|
this._context.lineTo(this._x, y);
|
@@ -18798,7 +19127,7 @@ function zoom() {
|
|
18798
19127
|
function zoom(selection) {
|
18799
19128
|
selection
|
18800
19129
|
.property("__zoom", defaultTransform)
|
18801
|
-
.on("wheel.zoom", wheeled)
|
19130
|
+
.on("wheel.zoom", wheeled, {passive: false})
|
18802
19131
|
.on("mousedown.zoom", mousedowned)
|
18803
19132
|
.on("dblclick.zoom", dblclicked)
|
18804
19133
|
.filter(touchable)
|
@@ -18995,10 +19324,10 @@ function zoom() {
|
|
18995
19324
|
|
18996
19325
|
function mousedowned(event, ...args) {
|
18997
19326
|
if (touchending || !filter.apply(this, arguments)) return;
|
18998
|
-
var
|
19327
|
+
var currentTarget = event.currentTarget,
|
19328
|
+
g = gesture(this, args, true).event(event),
|
18999
19329
|
v = select(event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true),
|
19000
19330
|
p = pointer(event, currentTarget),
|
19001
|
-
currentTarget = event.currentTarget,
|
19002
19331
|
x0 = event.clientX,
|
19003
19332
|
y0 = event.clientY;
|
19004
19333
|
|
@@ -19177,7 +19506,9 @@ exports.Delaunay = Delaunay;
|
|
19177
19506
|
exports.FormatSpecifier = FormatSpecifier;
|
19178
19507
|
exports.InternMap = InternMap;
|
19179
19508
|
exports.InternSet = InternSet;
|
19509
|
+
exports.Node = Node$1;
|
19180
19510
|
exports.Voronoi = Voronoi;
|
19511
|
+
exports.ZoomTransform = Transform;
|
19181
19512
|
exports.active = active;
|
19182
19513
|
exports.arc = arc;
|
19183
19514
|
exports.area = area;
|
@@ -19292,6 +19623,8 @@ exports.every = every;
|
|
19292
19623
|
exports.extent = extent$1;
|
19293
19624
|
exports.fcumsum = fcumsum;
|
19294
19625
|
exports.filter = filter$1;
|
19626
|
+
exports.flatGroup = flatGroup;
|
19627
|
+
exports.flatRollup = flatRollup;
|
19295
19628
|
exports.forceCenter = center;
|
19296
19629
|
exports.forceCollide = collide;
|
19297
19630
|
exports.forceLink = link$2;
|
@@ -19455,6 +19788,7 @@ exports.median = median;
|
|
19455
19788
|
exports.merge = merge;
|
19456
19789
|
exports.min = min$2;
|
19457
19790
|
exports.minIndex = minIndex;
|
19791
|
+
exports.mode = mode;
|
19458
19792
|
exports.namespace = namespace;
|
19459
19793
|
exports.namespaces = namespaces;
|
19460
19794
|
exports.nice = nice$1;
|
@@ -19601,7 +19935,7 @@ exports.stackOrderReverse = reverse;
|
|
19601
19935
|
exports.stratify = stratify;
|
19602
19936
|
exports.style = styleValue;
|
19603
19937
|
exports.subset = subset;
|
19604
|
-
exports.sum = sum$
|
19938
|
+
exports.sum = sum$2;
|
19605
19939
|
exports.superset = superset;
|
19606
19940
|
exports.svg = svg;
|
19607
19941
|
exports.symbol = symbol;
|
@@ -19646,6 +19980,8 @@ exports.timeSunday = sunday;
|
|
19646
19980
|
exports.timeSundays = sundays;
|
19647
19981
|
exports.timeThursday = thursday;
|
19648
19982
|
exports.timeThursdays = thursdays;
|
19983
|
+
exports.timeTickInterval = timeTickInterval;
|
19984
|
+
exports.timeTicks = timeTicks;
|
19649
19985
|
exports.timeTuesday = tuesday;
|
19650
19986
|
exports.timeTuesdays = tuesdays;
|
19651
19987
|
exports.timeWednesday = wednesday;
|
@@ -19698,6 +20034,8 @@ exports.utcSunday = utcSunday;
|
|
19698
20034
|
exports.utcSundays = utcSundays;
|
19699
20035
|
exports.utcThursday = utcThursday;
|
19700
20036
|
exports.utcThursdays = utcThursdays;
|
20037
|
+
exports.utcTickInterval = utcTickInterval;
|
20038
|
+
exports.utcTicks = utcTicks;
|
19701
20039
|
exports.utcTuesday = utcTuesday;
|
19702
20040
|
exports.utcTuesdays = utcTuesdays;
|
19703
20041
|
exports.utcWednesday = utcWednesday;
|