opal-d3 0.0.20170205 → 0.0.20170822
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/README.md +1 -1
- data/d3.js +1295 -778
- data/lib/opal/d3/version.rb +1 -1
- data/spec/axis_spec.rb +36 -36
- data/spec/html/d3.js +1 -0
- data/spec/misc_spec.rb +1 -1
- data/spec/nest_spec.rb +4 -4
- data/spec/selection_manipulation_spec.rb +1 -1
- metadata +2 -2
- data/spec/html/d3.js +0 -16393
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf0da071ddbd8da7c59eceede1655360c7f12983
|
4
|
+
data.tar.gz: 1f64c540471fbac2d1ad5c4141e139d1da81b26e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3620b72503511ed215c94662027cf3013c50e6d98b6242faa5e8a53484fa8d938d3801af401736d3c23bc374815cfcfe426a1fb6d651768e87ad4f1dfeddce4c
|
7
|
+
data.tar.gz: 0df3a9c5ca621c961b2c0e49a6014f93de539c39990ec75e449c3350d88587cc155cfa5a6e002548ec1e902c9db334530b0a3eaaf0e9f78c9ffb588245827126
|
data/README.md
CHANGED
@@ -4,4 +4,4 @@ It implements interface fairly closely following javascript API, except with blo
|
|
4
4
|
|
5
5
|
About 60% of D3 APIs are implemented. Pull requests for the rest welcome.
|
6
6
|
|
7
|
-
For some examples check `demo` directory.
|
7
|
+
For some examples check `demo` directory or [visit demo site](https://taw.github.io/opal-d3/).
|
data/d3.js
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
// https://d3js.org Version 4.
|
1
|
+
// https://d3js.org Version 4.10.0. Copyright 2017 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
|
(factory((global.d3 = global.d3 || {})));
|
6
6
|
}(this, (function (exports) { 'use strict';
|
7
7
|
|
8
|
-
var version = "4.
|
8
|
+
var version = "4.10.0";
|
9
9
|
|
10
10
|
var ascending = function(a, b) {
|
11
11
|
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
|
@@ -47,6 +47,37 @@ var ascendingBisect = bisector(ascending);
|
|
47
47
|
var bisectRight = ascendingBisect.right;
|
48
48
|
var bisectLeft = ascendingBisect.left;
|
49
49
|
|
50
|
+
var pairs = function(array, f) {
|
51
|
+
if (f == null) f = pair;
|
52
|
+
var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);
|
53
|
+
while (i < n) pairs[i] = f(p, p = array[++i]);
|
54
|
+
return pairs;
|
55
|
+
};
|
56
|
+
|
57
|
+
function pair(a, b) {
|
58
|
+
return [a, b];
|
59
|
+
}
|
60
|
+
|
61
|
+
var cross = function(values0, values1, reduce) {
|
62
|
+
var n0 = values0.length,
|
63
|
+
n1 = values1.length,
|
64
|
+
values = new Array(n0 * n1),
|
65
|
+
i0,
|
66
|
+
i1,
|
67
|
+
i,
|
68
|
+
value0;
|
69
|
+
|
70
|
+
if (reduce == null) reduce = pair;
|
71
|
+
|
72
|
+
for (i0 = i = 0; i0 < n0; ++i0) {
|
73
|
+
for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {
|
74
|
+
values[i] = reduce(value0, values1[i1]);
|
75
|
+
}
|
76
|
+
}
|
77
|
+
|
78
|
+
return values;
|
79
|
+
};
|
80
|
+
|
50
81
|
var descending = function(a, b) {
|
51
82
|
return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
|
52
83
|
};
|
@@ -55,36 +86,36 @@ var number = function(x) {
|
|
55
86
|
return x === null ? NaN : +x;
|
56
87
|
};
|
57
88
|
|
58
|
-
var variance = function(
|
59
|
-
var n =
|
89
|
+
var variance = function(values, valueof) {
|
90
|
+
var n = values.length,
|
60
91
|
m = 0,
|
61
|
-
a,
|
62
|
-
d,
|
63
|
-
s = 0,
|
64
92
|
i = -1,
|
65
|
-
|
93
|
+
mean = 0,
|
94
|
+
value,
|
95
|
+
delta,
|
96
|
+
sum = 0;
|
66
97
|
|
67
|
-
if (
|
98
|
+
if (valueof == null) {
|
68
99
|
while (++i < n) {
|
69
|
-
if (!isNaN(
|
70
|
-
|
71
|
-
|
72
|
-
|
100
|
+
if (!isNaN(value = number(values[i]))) {
|
101
|
+
delta = value - mean;
|
102
|
+
mean += delta / ++m;
|
103
|
+
sum += delta * (value - mean);
|
73
104
|
}
|
74
105
|
}
|
75
106
|
}
|
76
107
|
|
77
108
|
else {
|
78
109
|
while (++i < n) {
|
79
|
-
if (!isNaN(
|
80
|
-
|
81
|
-
|
82
|
-
|
110
|
+
if (!isNaN(value = number(valueof(values[i], i, values)))) {
|
111
|
+
delta = value - mean;
|
112
|
+
mean += delta / ++m;
|
113
|
+
sum += delta * (value - mean);
|
83
114
|
}
|
84
115
|
}
|
85
116
|
}
|
86
117
|
|
87
|
-
if (
|
118
|
+
if (m > 1) return sum / (m - 1);
|
88
119
|
};
|
89
120
|
|
90
121
|
var deviation = function(array, f) {
|
@@ -92,30 +123,42 @@ var deviation = function(array, f) {
|
|
92
123
|
return v ? Math.sqrt(v) : v;
|
93
124
|
};
|
94
125
|
|
95
|
-
var extent = function(
|
96
|
-
var
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
if (
|
103
|
-
while (++i < n)
|
104
|
-
|
105
|
-
|
106
|
-
|
126
|
+
var extent = function(values, valueof) {
|
127
|
+
var n = values.length,
|
128
|
+
i = -1,
|
129
|
+
value,
|
130
|
+
min,
|
131
|
+
max;
|
132
|
+
|
133
|
+
if (valueof == null) {
|
134
|
+
while (++i < n) { // Find the first comparable value.
|
135
|
+
if ((value = values[i]) != null && value >= value) {
|
136
|
+
min = max = value;
|
137
|
+
while (++i < n) { // Compare the remaining values.
|
138
|
+
if ((value = values[i]) != null) {
|
139
|
+
if (min > value) min = value;
|
140
|
+
if (max < value) max = value;
|
141
|
+
}
|
142
|
+
}
|
143
|
+
}
|
107
144
|
}
|
108
145
|
}
|
109
146
|
|
110
147
|
else {
|
111
|
-
while (++i < n)
|
112
|
-
|
113
|
-
|
114
|
-
|
148
|
+
while (++i < n) { // Find the first comparable value.
|
149
|
+
if ((value = valueof(values[i], i, values)) != null && value >= value) {
|
150
|
+
min = max = value;
|
151
|
+
while (++i < n) { // Compare the remaining values.
|
152
|
+
if ((value = valueof(values[i], i, values)) != null) {
|
153
|
+
if (min > value) min = value;
|
154
|
+
if (max < value) max = value;
|
155
|
+
}
|
156
|
+
}
|
157
|
+
}
|
115
158
|
}
|
116
159
|
}
|
117
160
|
|
118
|
-
return [
|
161
|
+
return [min, max];
|
119
162
|
};
|
120
163
|
|
121
164
|
var array = Array.prototype;
|
@@ -152,14 +195,42 @@ var e5 = Math.sqrt(10);
|
|
152
195
|
var e2 = Math.sqrt(2);
|
153
196
|
|
154
197
|
var ticks = function(start, stop, count) {
|
155
|
-
var
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
198
|
+
var reverse = stop < start,
|
199
|
+
i = -1,
|
200
|
+
n,
|
201
|
+
ticks,
|
202
|
+
step;
|
203
|
+
|
204
|
+
if (reverse) n = start, start = stop, stop = n;
|
205
|
+
|
206
|
+
if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];
|
207
|
+
|
208
|
+
if (step > 0) {
|
209
|
+
start = Math.ceil(start / step);
|
210
|
+
stop = Math.floor(stop / step);
|
211
|
+
ticks = new Array(n = Math.ceil(stop - start + 1));
|
212
|
+
while (++i < n) ticks[i] = (start + i) * step;
|
213
|
+
} else {
|
214
|
+
start = Math.floor(start * step);
|
215
|
+
stop = Math.ceil(stop * step);
|
216
|
+
ticks = new Array(n = Math.ceil(start - stop + 1));
|
217
|
+
while (++i < n) ticks[i] = (start - i) / step;
|
218
|
+
}
|
219
|
+
|
220
|
+
if (reverse) ticks.reverse();
|
221
|
+
|
222
|
+
return ticks;
|
161
223
|
};
|
162
224
|
|
225
|
+
function tickIncrement(start, stop, count) {
|
226
|
+
var step = (stop - start) / Math.max(0, count),
|
227
|
+
power = Math.floor(Math.log(step) / Math.LN10),
|
228
|
+
error = step / Math.pow(10, power);
|
229
|
+
return power >= 0
|
230
|
+
? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)
|
231
|
+
: -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);
|
232
|
+
}
|
233
|
+
|
163
234
|
function tickStep(start, stop, count) {
|
164
235
|
var step0 = Math.abs(stop - start) / Math.max(0, count),
|
165
236
|
step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),
|
@@ -195,12 +266,15 @@ var histogram = function() {
|
|
195
266
|
tz = threshold(values, x0, x1);
|
196
267
|
|
197
268
|
// Convert number of thresholds into uniform thresholds.
|
198
|
-
if (!Array.isArray(tz))
|
269
|
+
if (!Array.isArray(tz)) {
|
270
|
+
tz = tickStep(x0, x1, tz);
|
271
|
+
tz = sequence(Math.ceil(x0 / tz) * tz, Math.floor(x1 / tz) * tz, tz); // exclusive
|
272
|
+
}
|
199
273
|
|
200
274
|
// Remove any thresholds outside the domain.
|
201
275
|
var m = tz.length;
|
202
276
|
while (tz[0] <= x0) tz.shift(), --m;
|
203
|
-
while (tz[m - 1]
|
277
|
+
while (tz[m - 1] > x1) tz.pop(), --m;
|
204
278
|
|
205
279
|
var bins = new Array(m + 1),
|
206
280
|
bin;
|
@@ -238,17 +312,17 @@ var histogram = function() {
|
|
238
312
|
return histogram;
|
239
313
|
};
|
240
314
|
|
241
|
-
var threshold = function(
|
242
|
-
if (
|
243
|
-
if (!(n =
|
244
|
-
if ((p = +p) <= 0 || n < 2) return +
|
245
|
-
if (p >= 1) return +
|
315
|
+
var threshold = function(values, p, valueof) {
|
316
|
+
if (valueof == null) valueof = number;
|
317
|
+
if (!(n = values.length)) return;
|
318
|
+
if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);
|
319
|
+
if (p >= 1) return +valueof(values[n - 1], n - 1, values);
|
246
320
|
var n,
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
return
|
321
|
+
i = (n - 1) * p,
|
322
|
+
i0 = Math.floor(i),
|
323
|
+
value0 = +valueof(values[i0], i0, values),
|
324
|
+
value1 = +valueof(values[i0 + 1], i0 + 1, values);
|
325
|
+
return value0 + (value1 - value0) * (i - i0);
|
252
326
|
};
|
253
327
|
|
254
328
|
var freedmanDiaconis = function(values, min, max) {
|
@@ -260,55 +334,85 @@ var scott = function(values, min, max) {
|
|
260
334
|
return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));
|
261
335
|
};
|
262
336
|
|
263
|
-
var max = function(
|
264
|
-
var
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
if (
|
270
|
-
while (++i < n)
|
271
|
-
|
337
|
+
var max = function(values, valueof) {
|
338
|
+
var n = values.length,
|
339
|
+
i = -1,
|
340
|
+
value,
|
341
|
+
max;
|
342
|
+
|
343
|
+
if (valueof == null) {
|
344
|
+
while (++i < n) { // Find the first comparable value.
|
345
|
+
if ((value = values[i]) != null && value >= value) {
|
346
|
+
max = value;
|
347
|
+
while (++i < n) { // Compare the remaining values.
|
348
|
+
if ((value = values[i]) != null && value > max) {
|
349
|
+
max = value;
|
350
|
+
}
|
351
|
+
}
|
352
|
+
}
|
353
|
+
}
|
272
354
|
}
|
273
355
|
|
274
356
|
else {
|
275
|
-
while (++i < n)
|
276
|
-
|
357
|
+
while (++i < n) { // Find the first comparable value.
|
358
|
+
if ((value = valueof(values[i], i, values)) != null && value >= value) {
|
359
|
+
max = value;
|
360
|
+
while (++i < n) { // Compare the remaining values.
|
361
|
+
if ((value = valueof(values[i], i, values)) != null && value > max) {
|
362
|
+
max = value;
|
363
|
+
}
|
364
|
+
}
|
365
|
+
}
|
366
|
+
}
|
277
367
|
}
|
278
368
|
|
279
|
-
return
|
369
|
+
return max;
|
280
370
|
};
|
281
371
|
|
282
|
-
var mean = function(
|
283
|
-
var
|
284
|
-
|
285
|
-
a,
|
372
|
+
var mean = function(values, valueof) {
|
373
|
+
var n = values.length,
|
374
|
+
m = n,
|
286
375
|
i = -1,
|
287
|
-
|
376
|
+
value,
|
377
|
+
sum = 0;
|
288
378
|
|
289
|
-
if (
|
290
|
-
while (++i < n)
|
379
|
+
if (valueof == null) {
|
380
|
+
while (++i < n) {
|
381
|
+
if (!isNaN(value = number(values[i]))) sum += value;
|
382
|
+
else --m;
|
383
|
+
}
|
291
384
|
}
|
292
385
|
|
293
386
|
else {
|
294
|
-
while (++i < n)
|
387
|
+
while (++i < n) {
|
388
|
+
if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;
|
389
|
+
else --m;
|
390
|
+
}
|
295
391
|
}
|
296
392
|
|
297
|
-
if (
|
393
|
+
if (m) return sum / m;
|
298
394
|
};
|
299
395
|
|
300
|
-
var median = function(
|
301
|
-
var
|
302
|
-
|
303
|
-
|
304
|
-
|
396
|
+
var median = function(values, valueof) {
|
397
|
+
var n = values.length,
|
398
|
+
i = -1,
|
399
|
+
value,
|
400
|
+
numbers = [];
|
305
401
|
|
306
|
-
if (
|
307
|
-
while (++i < n)
|
402
|
+
if (valueof == null) {
|
403
|
+
while (++i < n) {
|
404
|
+
if (!isNaN(value = number(values[i]))) {
|
405
|
+
numbers.push(value);
|
406
|
+
}
|
407
|
+
}
|
308
408
|
}
|
309
409
|
|
310
410
|
else {
|
311
|
-
while (++i < n)
|
411
|
+
while (++i < n) {
|
412
|
+
if (!isNaN(value = number(valueof(values[i], i, values)))) {
|
413
|
+
numbers.push(value);
|
414
|
+
}
|
415
|
+
}
|
312
416
|
}
|
313
417
|
|
314
418
|
return threshold(numbers.sort(ascending), 0.5);
|
@@ -336,29 +440,39 @@ var merge = function(arrays) {
|
|
336
440
|
return merged;
|
337
441
|
};
|
338
442
|
|
339
|
-
var min = function(
|
340
|
-
var
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
if (
|
346
|
-
while (++i < n)
|
347
|
-
|
443
|
+
var min = function(values, valueof) {
|
444
|
+
var n = values.length,
|
445
|
+
i = -1,
|
446
|
+
value,
|
447
|
+
min;
|
448
|
+
|
449
|
+
if (valueof == null) {
|
450
|
+
while (++i < n) { // Find the first comparable value.
|
451
|
+
if ((value = values[i]) != null && value >= value) {
|
452
|
+
min = value;
|
453
|
+
while (++i < n) { // Compare the remaining values.
|
454
|
+
if ((value = values[i]) != null && min > value) {
|
455
|
+
min = value;
|
456
|
+
}
|
457
|
+
}
|
458
|
+
}
|
459
|
+
}
|
348
460
|
}
|
349
461
|
|
350
462
|
else {
|
351
|
-
while (++i < n)
|
352
|
-
|
463
|
+
while (++i < n) { // Find the first comparable value.
|
464
|
+
if ((value = valueof(values[i], i, values)) != null && value >= value) {
|
465
|
+
min = value;
|
466
|
+
while (++i < n) { // Compare the remaining values.
|
467
|
+
if ((value = valueof(values[i], i, values)) != null && min > value) {
|
468
|
+
min = value;
|
469
|
+
}
|
470
|
+
}
|
471
|
+
}
|
472
|
+
}
|
353
473
|
}
|
354
474
|
|
355
|
-
return
|
356
|
-
};
|
357
|
-
|
358
|
-
var pairs = function(array) {
|
359
|
-
var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);
|
360
|
-
while (i < n) pairs[i] = [p, p = array[++i]];
|
361
|
-
return pairs;
|
475
|
+
return min;
|
362
476
|
};
|
363
477
|
|
364
478
|
var permute = function(array, indexes) {
|
@@ -367,17 +481,21 @@ var permute = function(array, indexes) {
|
|
367
481
|
return permutes;
|
368
482
|
};
|
369
483
|
|
370
|
-
var scan = function(
|
371
|
-
if (!(n =
|
372
|
-
var
|
373
|
-
|
484
|
+
var scan = function(values, compare) {
|
485
|
+
if (!(n = values.length)) return;
|
486
|
+
var n,
|
487
|
+
i = 0,
|
374
488
|
j = 0,
|
375
489
|
xi,
|
376
|
-
xj =
|
490
|
+
xj = values[j];
|
377
491
|
|
378
|
-
if (
|
492
|
+
if (compare == null) compare = ascending;
|
379
493
|
|
380
|
-
while (++i < n)
|
494
|
+
while (++i < n) {
|
495
|
+
if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {
|
496
|
+
xj = xi, j = i;
|
497
|
+
}
|
498
|
+
}
|
381
499
|
|
382
500
|
if (compare(xj, xj) === 0) return j;
|
383
501
|
};
|
@@ -397,21 +515,25 @@ var shuffle = function(array, i0, i1) {
|
|
397
515
|
return array;
|
398
516
|
};
|
399
517
|
|
400
|
-
var sum = function(
|
401
|
-
var
|
402
|
-
|
403
|
-
|
404
|
-
|
518
|
+
var sum = function(values, valueof) {
|
519
|
+
var n = values.length,
|
520
|
+
i = -1,
|
521
|
+
value,
|
522
|
+
sum = 0;
|
405
523
|
|
406
|
-
if (
|
407
|
-
while (++i < n)
|
524
|
+
if (valueof == null) {
|
525
|
+
while (++i < n) {
|
526
|
+
if (value = +values[i]) sum += value; // Note: zero and null are equivalent.
|
527
|
+
}
|
408
528
|
}
|
409
529
|
|
410
530
|
else {
|
411
|
-
while (++i < n)
|
531
|
+
while (++i < n) {
|
532
|
+
if (value = +valueof(values[i], i, values)) sum += value;
|
533
|
+
}
|
412
534
|
}
|
413
535
|
|
414
|
-
return
|
536
|
+
return sum;
|
415
537
|
};
|
416
538
|
|
417
539
|
var transpose = function(matrix) {
|
@@ -444,21 +566,25 @@ var bottom = 3;
|
|
444
566
|
var left = 4;
|
445
567
|
var epsilon = 1e-6;
|
446
568
|
|
447
|
-
function translateX(
|
448
|
-
|
449
|
-
|
569
|
+
function translateX(x) {
|
570
|
+
return "translate(" + (x + 0.5) + ",0)";
|
571
|
+
}
|
572
|
+
|
573
|
+
function translateY(y) {
|
574
|
+
return "translate(0," + (y + 0.5) + ")";
|
450
575
|
}
|
451
576
|
|
452
|
-
function
|
453
|
-
|
454
|
-
|
577
|
+
function number$1(scale) {
|
578
|
+
return function(d) {
|
579
|
+
return +scale(d);
|
580
|
+
};
|
455
581
|
}
|
456
582
|
|
457
583
|
function center(scale) {
|
458
|
-
var offset = scale.bandwidth() / 2;
|
584
|
+
var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.
|
459
585
|
if (scale.round()) offset = Math.round(offset);
|
460
586
|
return function(d) {
|
461
|
-
return scale(d) + offset;
|
587
|
+
return +scale(d) + offset;
|
462
588
|
};
|
463
589
|
}
|
464
590
|
|
@@ -472,26 +598,26 @@ function axis(orient, scale) {
|
|
472
598
|
tickFormat = null,
|
473
599
|
tickSizeInner = 6,
|
474
600
|
tickSizeOuter = 6,
|
475
|
-
tickPadding = 3
|
601
|
+
tickPadding = 3,
|
602
|
+
k = orient === top || orient === left ? -1 : 1,
|
603
|
+
x = orient === left || orient === right ? "x" : "y",
|
604
|
+
transform = orient === top || orient === bottom ? translateX : translateY;
|
476
605
|
|
477
606
|
function axis(context) {
|
478
607
|
var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,
|
479
608
|
format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity$1) : tickFormat,
|
480
609
|
spacing = Math.max(tickSizeInner, 0) + tickPadding,
|
481
|
-
transform = orient === top || orient === bottom ? translateX : translateY,
|
482
610
|
range = scale.range(),
|
483
|
-
range0 = range[0] + 0.5,
|
484
|
-
range1 = range[range.length - 1] + 0.5,
|
485
|
-
position = (scale.bandwidth ? center :
|
611
|
+
range0 = +range[0] + 0.5,
|
612
|
+
range1 = +range[range.length - 1] + 0.5,
|
613
|
+
position = (scale.bandwidth ? center : number$1)(scale.copy()),
|
486
614
|
selection = context.selection ? context.selection() : context,
|
487
615
|
path = selection.selectAll(".domain").data([null]),
|
488
616
|
tick = selection.selectAll(".tick").data(values, scale).order(),
|
489
617
|
tickExit = tick.exit(),
|
490
618
|
tickEnter = tick.enter().append("g").attr("class", "tick"),
|
491
619
|
line = tick.select("line"),
|
492
|
-
text = tick.select("text")
|
493
|
-
k = orient === top || orient === left ? -1 : 1,
|
494
|
-
x, y = orient === left || orient === right ? (x = "x", "y") : (x = "y", "x");
|
620
|
+
text = tick.select("text");
|
495
621
|
|
496
622
|
path = path.merge(path.enter().insert("path", ".tick")
|
497
623
|
.attr("class", "domain")
|
@@ -501,14 +627,11 @@ function axis(orient, scale) {
|
|
501
627
|
|
502
628
|
line = line.merge(tickEnter.append("line")
|
503
629
|
.attr("stroke", "#000")
|
504
|
-
.attr(x + "2", k * tickSizeInner)
|
505
|
-
.attr(y + "1", 0.5)
|
506
|
-
.attr(y + "2", 0.5));
|
630
|
+
.attr(x + "2", k * tickSizeInner));
|
507
631
|
|
508
632
|
text = text.merge(tickEnter.append("text")
|
509
633
|
.attr("fill", "#000")
|
510
634
|
.attr(x, k * spacing)
|
511
|
-
.attr(y, 0.5)
|
512
635
|
.attr("dy", orient === top ? "0em" : orient === bottom ? "0.71em" : "0.32em"));
|
513
636
|
|
514
637
|
if (context !== selection) {
|
@@ -519,11 +642,11 @@ function axis(orient, scale) {
|
|
519
642
|
|
520
643
|
tickExit = tickExit.transition(context)
|
521
644
|
.attr("opacity", epsilon)
|
522
|
-
.attr("transform", function(d) { return
|
645
|
+
.attr("transform", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute("transform"); });
|
523
646
|
|
524
647
|
tickEnter
|
525
648
|
.attr("opacity", epsilon)
|
526
|
-
.attr("transform", function(d) {
|
649
|
+
.attr("transform", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });
|
527
650
|
}
|
528
651
|
|
529
652
|
tickExit.remove();
|
@@ -535,7 +658,7 @@ function axis(orient, scale) {
|
|
535
658
|
|
536
659
|
tick
|
537
660
|
.attr("opacity", 1)
|
538
|
-
.attr("transform", function(d) { return transform(position
|
661
|
+
.attr("transform", function(d) { return transform(position(d)); });
|
539
662
|
|
540
663
|
line
|
541
664
|
.attr(x + "2", k * tickSizeInner);
|
@@ -1127,9 +1250,9 @@ var selection_exit = function() {
|
|
1127
1250
|
return new Selection(this._exit || this._groups.map(sparse), this._parents);
|
1128
1251
|
};
|
1129
1252
|
|
1130
|
-
var selection_merge = function(selection) {
|
1253
|
+
var selection_merge = function(selection$$1) {
|
1131
1254
|
|
1132
|
-
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) {
|
1255
|
+
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) {
|
1133
1256
|
for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
|
1134
1257
|
if (node = group0[i] || group1[i]) {
|
1135
1258
|
merge[i] = node;
|
@@ -1283,7 +1406,7 @@ var selection_attr = function(name, value) {
|
|
1283
1406
|
: (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));
|
1284
1407
|
};
|
1285
1408
|
|
1286
|
-
var
|
1409
|
+
var defaultView = function(node) {
|
1287
1410
|
return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node
|
1288
1411
|
|| (node.document && node) // node is a Window
|
1289
1412
|
|| node.defaultView; // node is a Document
|
@@ -1310,17 +1433,19 @@ function styleFunction(name, value, priority) {
|
|
1310
1433
|
}
|
1311
1434
|
|
1312
1435
|
var selection_style = function(name, value, priority) {
|
1313
|
-
var node;
|
1314
1436
|
return arguments.length > 1
|
1315
1437
|
? this.each((value == null
|
1316
1438
|
? styleRemove : typeof value === "function"
|
1317
1439
|
? styleFunction
|
1318
1440
|
: styleConstant)(name, value, priority == null ? "" : priority))
|
1319
|
-
:
|
1320
|
-
.getComputedStyle(node, null)
|
1321
|
-
.getPropertyValue(name);
|
1441
|
+
: styleValue(this.node(), name);
|
1322
1442
|
};
|
1323
1443
|
|
1444
|
+
function styleValue(node, name) {
|
1445
|
+
return node.style.getPropertyValue(name)
|
1446
|
+
|| defaultView(node).getComputedStyle(node, null).getPropertyValue(name);
|
1447
|
+
}
|
1448
|
+
|
1324
1449
|
function propertyRemove(name) {
|
1325
1450
|
return function() {
|
1326
1451
|
delete this[name];
|
@@ -1529,13 +1654,13 @@ var selection_datum = function(value) {
|
|
1529
1654
|
};
|
1530
1655
|
|
1531
1656
|
function dispatchEvent(node, type, params) {
|
1532
|
-
var window
|
1533
|
-
event = window
|
1657
|
+
var window = defaultView(node),
|
1658
|
+
event = window.CustomEvent;
|
1534
1659
|
|
1535
|
-
if (event) {
|
1660
|
+
if (typeof event === "function") {
|
1536
1661
|
event = new event(type, params);
|
1537
1662
|
} else {
|
1538
|
-
event = window
|
1663
|
+
event = window.document.createEvent("Event");
|
1539
1664
|
if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;
|
1540
1665
|
else event.initEvent(type, false, false);
|
1541
1666
|
}
|
@@ -1711,6 +1836,10 @@ function defaultSubject(d) {
|
|
1711
1836
|
return d == null ? {x: exports.event.x, y: exports.event.y} : d;
|
1712
1837
|
}
|
1713
1838
|
|
1839
|
+
function touchable() {
|
1840
|
+
return "ontouchstart" in this;
|
1841
|
+
}
|
1842
|
+
|
1714
1843
|
var drag = function() {
|
1715
1844
|
var filter = defaultFilter$1,
|
1716
1845
|
container = defaultContainer,
|
@@ -1718,15 +1847,20 @@ var drag = function() {
|
|
1718
1847
|
gestures = {},
|
1719
1848
|
listeners = dispatch("start", "drag", "end"),
|
1720
1849
|
active = 0,
|
1850
|
+
mousedownx,
|
1851
|
+
mousedowny,
|
1721
1852
|
mousemoving,
|
1722
|
-
touchending
|
1853
|
+
touchending,
|
1854
|
+
clickDistance2 = 0;
|
1723
1855
|
|
1724
|
-
function drag(selection
|
1725
|
-
selection
|
1856
|
+
function drag(selection) {
|
1857
|
+
selection
|
1726
1858
|
.on("mousedown.drag", mousedowned)
|
1859
|
+
.filter(touchable)
|
1727
1860
|
.on("touchstart.drag", touchstarted)
|
1728
1861
|
.on("touchmove.drag", touchmoved)
|
1729
1862
|
.on("touchend.drag touchcancel.drag", touchended)
|
1863
|
+
.style("touch-action", "none")
|
1730
1864
|
.style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
|
1731
1865
|
}
|
1732
1866
|
|
@@ -1738,12 +1872,17 @@ var drag = function() {
|
|
1738
1872
|
dragDisable(exports.event.view);
|
1739
1873
|
nopropagation();
|
1740
1874
|
mousemoving = false;
|
1875
|
+
mousedownx = exports.event.clientX;
|
1876
|
+
mousedowny = exports.event.clientY;
|
1741
1877
|
gesture("start");
|
1742
1878
|
}
|
1743
1879
|
|
1744
1880
|
function mousemoved() {
|
1745
1881
|
noevent();
|
1746
|
-
mousemoving
|
1882
|
+
if (!mousemoving) {
|
1883
|
+
var dx = exports.event.clientX - mousedownx, dy = exports.event.clientY - mousedowny;
|
1884
|
+
mousemoving = dx * dx + dy * dy > clickDistance2;
|
1885
|
+
}
|
1747
1886
|
gestures.mouse("drag");
|
1748
1887
|
}
|
1749
1888
|
|
@@ -1833,6 +1972,10 @@ var drag = function() {
|
|
1833
1972
|
return value === listeners ? drag : value;
|
1834
1973
|
};
|
1835
1974
|
|
1975
|
+
drag.clickDistance = function(_) {
|
1976
|
+
return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);
|
1977
|
+
};
|
1978
|
+
|
1836
1979
|
return drag;
|
1837
1980
|
};
|
1838
1981
|
|
@@ -2408,7 +2551,7 @@ function nogamma(a, b) {
|
|
2408
2551
|
return d ? linear(a, d) : constant$3(isNaN(a) ? b : a);
|
2409
2552
|
}
|
2410
2553
|
|
2411
|
-
var interpolateRgb = (
|
2554
|
+
var interpolateRgb = (function rgbGamma(y) {
|
2412
2555
|
var color$$1 = gamma(y);
|
2413
2556
|
|
2414
2557
|
function rgb$$1(start, end) {
|
@@ -2428,7 +2571,7 @@ var interpolateRgb = ((function rgbGamma(y) {
|
|
2428
2571
|
rgb$$1.gamma = rgbGamma;
|
2429
2572
|
|
2430
2573
|
return rgb$$1;
|
2431
|
-
})
|
2574
|
+
})(1);
|
2432
2575
|
|
2433
2576
|
function rgbSpline(spline) {
|
2434
2577
|
return function(colors) {
|
@@ -2581,7 +2724,7 @@ var interpolateValue = function(a, b) {
|
|
2581
2724
|
: b instanceof color ? interpolateRgb
|
2582
2725
|
: b instanceof Date ? date
|
2583
2726
|
: Array.isArray(b) ? array$1
|
2584
|
-
: isNaN(b) ? object
|
2727
|
+
: typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object
|
2585
2728
|
: reinterpolate)(a, b);
|
2586
2729
|
};
|
2587
2730
|
|
@@ -2863,7 +3006,7 @@ var clockLast = 0;
|
|
2863
3006
|
var clockNow = 0;
|
2864
3007
|
var clockSkew = 0;
|
2865
3008
|
var clock = typeof performance === "object" && performance.now ? performance : Date;
|
2866
|
-
var setFrame = typeof
|
3009
|
+
var setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };
|
2867
3010
|
|
2868
3011
|
function now() {
|
2869
3012
|
return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);
|
@@ -2959,7 +3102,7 @@ function sleep(time) {
|
|
2959
3102
|
if (time < Infinity) timeout = setTimeout(wake, delay);
|
2960
3103
|
if (interval) interval = clearInterval(interval);
|
2961
3104
|
} else {
|
2962
|
-
if (!interval) interval = setInterval(poke, pokeDelay);
|
3105
|
+
if (!interval) clockLast = clockNow, interval = setInterval(poke, pokeDelay);
|
2963
3106
|
frame = 1, setFrame(wake);
|
2964
3107
|
}
|
2965
3108
|
}
|
@@ -3141,7 +3284,7 @@ function create(node, id, self) {
|
|
3141
3284
|
|
3142
3285
|
var interrupt = function(node, name) {
|
3143
3286
|
var schedules = node.__transition,
|
3144
|
-
schedule,
|
3287
|
+
schedule$$1,
|
3145
3288
|
active,
|
3146
3289
|
empty = true,
|
3147
3290
|
i;
|
@@ -3151,11 +3294,11 @@ var interrupt = function(node, name) {
|
|
3151
3294
|
name = name == null ? null : name + "";
|
3152
3295
|
|
3153
3296
|
for (i in schedules) {
|
3154
|
-
if ((schedule = schedules[i]).name !== name) { empty = false; continue; }
|
3155
|
-
active = schedule.state > STARTING && schedule.state < ENDING;
|
3156
|
-
schedule.state = ENDED;
|
3157
|
-
schedule.timer.stop();
|
3158
|
-
if (active) schedule.on.call("interrupt", node, node.__data__, schedule.index, schedule.group);
|
3297
|
+
if ((schedule$$1 = schedules[i]).name !== name) { empty = false; continue; }
|
3298
|
+
active = schedule$$1.state > STARTING && schedule$$1.state < ENDING;
|
3299
|
+
schedule$$1.state = ENDED;
|
3300
|
+
schedule$$1.timer.stop();
|
3301
|
+
if (active) schedule$$1.on.call("interrupt", node, node.__data__, schedule$$1.index, schedule$$1.group);
|
3159
3302
|
delete schedules[i];
|
3160
3303
|
}
|
3161
3304
|
|
@@ -3171,8 +3314,8 @@ var selection_interrupt = function(name) {
|
|
3171
3314
|
function tweenRemove(id, name) {
|
3172
3315
|
var tween0, tween1;
|
3173
3316
|
return function() {
|
3174
|
-
var schedule = set$1(this, id),
|
3175
|
-
tween = schedule.tween;
|
3317
|
+
var schedule$$1 = set$1(this, id),
|
3318
|
+
tween = schedule$$1.tween;
|
3176
3319
|
|
3177
3320
|
// If this node shared tween with the previous node,
|
3178
3321
|
// just assign the updated shared tween and we’re done!
|
@@ -3188,7 +3331,7 @@ function tweenRemove(id, name) {
|
|
3188
3331
|
}
|
3189
3332
|
}
|
3190
3333
|
|
3191
|
-
schedule.tween = tween1;
|
3334
|
+
schedule$$1.tween = tween1;
|
3192
3335
|
};
|
3193
3336
|
}
|
3194
3337
|
|
@@ -3196,8 +3339,8 @@ function tweenFunction(id, name, value) {
|
|
3196
3339
|
var tween0, tween1;
|
3197
3340
|
if (typeof value !== "function") throw new Error;
|
3198
3341
|
return function() {
|
3199
|
-
var schedule = set$1(this, id),
|
3200
|
-
tween = schedule.tween;
|
3342
|
+
var schedule$$1 = set$1(this, id),
|
3343
|
+
tween = schedule$$1.tween;
|
3201
3344
|
|
3202
3345
|
// If this node shared tween with the previous node,
|
3203
3346
|
// just assign the updated shared tween and we’re done!
|
@@ -3213,7 +3356,7 @@ function tweenFunction(id, name, value) {
|
|
3213
3356
|
if (i === n) tween1.push(t);
|
3214
3357
|
}
|
3215
3358
|
|
3216
|
-
schedule.tween = tween1;
|
3359
|
+
schedule$$1.tween = tween1;
|
3217
3360
|
};
|
3218
3361
|
}
|
3219
3362
|
|
@@ -3239,8 +3382,8 @@ function tweenValue(transition, name, value) {
|
|
3239
3382
|
var id = transition._id;
|
3240
3383
|
|
3241
3384
|
transition.each(function() {
|
3242
|
-
var schedule = set$1(this, id);
|
3243
|
-
(schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);
|
3385
|
+
var schedule$$1 = set$1(this, id);
|
3386
|
+
(schedule$$1.value || (schedule$$1.value = {}))[name] = value.apply(this, arguments);
|
3244
3387
|
});
|
3245
3388
|
|
3246
3389
|
return function(node) {
|
@@ -3248,7 +3391,7 @@ function tweenValue(transition, name, value) {
|
|
3248
3391
|
};
|
3249
3392
|
}
|
3250
3393
|
|
3251
|
-
var interpolate
|
3394
|
+
var interpolate = function(a, b) {
|
3252
3395
|
var c;
|
3253
3396
|
return (typeof b === "number" ? reinterpolate
|
3254
3397
|
: b instanceof color ? interpolateRgb
|
@@ -3319,11 +3462,11 @@ function attrFunctionNS$1(fullname, interpolate$$1, value) {
|
|
3319
3462
|
}
|
3320
3463
|
|
3321
3464
|
var transition_attr = function(name, value) {
|
3322
|
-
var fullname = namespace(name), i = fullname === "transform" ? interpolateTransformSvg : interpolate
|
3465
|
+
var fullname = namespace(name), i = fullname === "transform" ? interpolateTransformSvg : interpolate;
|
3323
3466
|
return this.attrTween(name, typeof value === "function"
|
3324
3467
|
? (fullname.local ? attrFunctionNS$1 : attrFunction$1)(fullname, i, tweenValue(this, "attr." + name, value))
|
3325
3468
|
: value == null ? (fullname.local ? attrRemoveNS$1 : attrRemove$1)(fullname)
|
3326
|
-
: (fullname.local ? attrConstantNS$1 : attrConstant$1)(fullname, i, value));
|
3469
|
+
: (fullname.local ? attrConstantNS$1 : attrConstant$1)(fullname, i, value + ""));
|
3327
3470
|
};
|
3328
3471
|
|
3329
3472
|
function attrTweenNS(fullname, value) {
|
@@ -3430,10 +3573,10 @@ var transition_filter = function(match) {
|
|
3430
3573
|
return new Transition(subgroups, this._parents, this._name, this._id);
|
3431
3574
|
};
|
3432
3575
|
|
3433
|
-
var transition_merge = function(transition) {
|
3434
|
-
if (transition._id !== this._id) throw new Error;
|
3576
|
+
var transition_merge = function(transition$$1) {
|
3577
|
+
if (transition$$1._id !== this._id) throw new Error;
|
3435
3578
|
|
3436
|
-
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) {
|
3579
|
+
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) {
|
3437
3580
|
for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
|
3438
3581
|
if (node = group0[i] || group1[i]) {
|
3439
3582
|
merge[i] = node;
|
@@ -3459,15 +3602,15 @@ function start(name) {
|
|
3459
3602
|
function onFunction(id, name, listener) {
|
3460
3603
|
var on0, on1, sit = start(name) ? init : set$1;
|
3461
3604
|
return function() {
|
3462
|
-
var schedule = sit(this, id),
|
3463
|
-
on = schedule.on;
|
3605
|
+
var schedule$$1 = sit(this, id),
|
3606
|
+
on = schedule$$1.on;
|
3464
3607
|
|
3465
3608
|
// If this node shared a dispatch with the previous node,
|
3466
3609
|
// just assign the updated shared dispatch and we’re done!
|
3467
3610
|
// Otherwise, copy-on-write.
|
3468
3611
|
if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);
|
3469
3612
|
|
3470
|
-
schedule.on = on1;
|
3613
|
+
schedule$$1.on = on1;
|
3471
3614
|
};
|
3472
3615
|
}
|
3473
3616
|
|
@@ -3539,17 +3682,16 @@ var transition_selection = function() {
|
|
3539
3682
|
return new Selection$1(this._groups, this._parents);
|
3540
3683
|
};
|
3541
3684
|
|
3542
|
-
function styleRemove$1(name, interpolate$$
|
3685
|
+
function styleRemove$1(name, interpolate$$1) {
|
3543
3686
|
var value00,
|
3544
3687
|
value10,
|
3545
3688
|
interpolate0;
|
3546
3689
|
return function() {
|
3547
|
-
var
|
3548
|
-
|
3549
|
-
value1 = (this.style.removeProperty(name), style.getPropertyValue(name));
|
3690
|
+
var value0 = styleValue(this, name),
|
3691
|
+
value1 = (this.style.removeProperty(name), styleValue(this, name));
|
3550
3692
|
return value0 === value1 ? null
|
3551
3693
|
: value0 === value00 && value1 === value10 ? interpolate0
|
3552
|
-
: interpolate0 = interpolate$$
|
3694
|
+
: interpolate0 = interpolate$$1(value00 = value0, value10 = value1);
|
3553
3695
|
};
|
3554
3696
|
}
|
3555
3697
|
|
@@ -3559,40 +3701,39 @@ function styleRemoveEnd(name) {
|
|
3559
3701
|
};
|
3560
3702
|
}
|
3561
3703
|
|
3562
|
-
function styleConstant$1(name, interpolate$$
|
3704
|
+
function styleConstant$1(name, interpolate$$1, value1) {
|
3563
3705
|
var value00,
|
3564
3706
|
interpolate0;
|
3565
3707
|
return function() {
|
3566
|
-
var value0 =
|
3708
|
+
var value0 = styleValue(this, name);
|
3567
3709
|
return value0 === value1 ? null
|
3568
3710
|
: value0 === value00 ? interpolate0
|
3569
|
-
: interpolate0 = interpolate$$
|
3711
|
+
: interpolate0 = interpolate$$1(value00 = value0, value1);
|
3570
3712
|
};
|
3571
3713
|
}
|
3572
3714
|
|
3573
|
-
function styleFunction$1(name, interpolate$$
|
3715
|
+
function styleFunction$1(name, interpolate$$1, value) {
|
3574
3716
|
var value00,
|
3575
3717
|
value10,
|
3576
3718
|
interpolate0;
|
3577
3719
|
return function() {
|
3578
|
-
var
|
3579
|
-
value0 = style.getPropertyValue(name),
|
3720
|
+
var value0 = styleValue(this, name),
|
3580
3721
|
value1 = value(this);
|
3581
|
-
if (value1 == null) value1 = (this.style.removeProperty(name),
|
3722
|
+
if (value1 == null) value1 = (this.style.removeProperty(name), styleValue(this, name));
|
3582
3723
|
return value0 === value1 ? null
|
3583
3724
|
: value0 === value00 && value1 === value10 ? interpolate0
|
3584
|
-
: interpolate0 = interpolate$$
|
3725
|
+
: interpolate0 = interpolate$$1(value00 = value0, value10 = value1);
|
3585
3726
|
};
|
3586
3727
|
}
|
3587
3728
|
|
3588
3729
|
var transition_style = function(name, value, priority) {
|
3589
|
-
var i = (name += "") === "transform" ? interpolateTransformCss : interpolate
|
3730
|
+
var i = (name += "") === "transform" ? interpolateTransformCss : interpolate;
|
3590
3731
|
return value == null ? this
|
3591
3732
|
.styleTween(name, styleRemove$1(name, i))
|
3592
3733
|
.on("end.style." + name, styleRemoveEnd(name))
|
3593
3734
|
: this.styleTween(name, typeof value === "function"
|
3594
3735
|
? styleFunction$1(name, i, tweenValue(this, "style." + name, value))
|
3595
|
-
: styleConstant$1(name, i, value), priority);
|
3736
|
+
: styleConstant$1(name, i, value + ""), priority);
|
3596
3737
|
};
|
3597
3738
|
|
3598
3739
|
function styleTween(name, value, priority) {
|
@@ -3957,13 +4098,13 @@ var root$1 = [null];
|
|
3957
4098
|
|
3958
4099
|
var active = function(node, name) {
|
3959
4100
|
var schedules = node.__transition,
|
3960
|
-
schedule,
|
4101
|
+
schedule$$1,
|
3961
4102
|
i;
|
3962
4103
|
|
3963
4104
|
if (schedules) {
|
3964
4105
|
name = name == null ? null : name + "";
|
3965
4106
|
for (i in schedules) {
|
3966
|
-
if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {
|
4107
|
+
if ((schedule$$1 = schedules[i]).state > SCHEDULED && schedule$$1.name === name) {
|
3967
4108
|
return new Transition([[node]], root$1, name, +i);
|
3968
4109
|
}
|
3969
4110
|
}
|
@@ -4172,7 +4313,7 @@ function brush$1(dim) {
|
|
4172
4313
|
.on("mousedown.brush touchstart.brush", started);
|
4173
4314
|
}
|
4174
4315
|
|
4175
|
-
brush.move = function(group, selection
|
4316
|
+
brush.move = function(group, selection) {
|
4176
4317
|
if (group.selection) {
|
4177
4318
|
group
|
4178
4319
|
.on("start.brush", function() { emitter(this, arguments).beforestart().start(); })
|
@@ -4182,7 +4323,7 @@ function brush$1(dim) {
|
|
4182
4323
|
state = that.__brush,
|
4183
4324
|
emit = emitter(that, arguments),
|
4184
4325
|
selection0 = state.selection,
|
4185
|
-
selection1 = dim.input(typeof selection
|
4326
|
+
selection1 = dim.input(typeof selection === "function" ? selection.apply(this, arguments) : selection, state.extent),
|
4186
4327
|
i = interpolateValue(selection0, selection1);
|
4187
4328
|
|
4188
4329
|
function tween(t) {
|
@@ -4199,7 +4340,7 @@ function brush$1(dim) {
|
|
4199
4340
|
var that = this,
|
4200
4341
|
args = arguments,
|
4201
4342
|
state = that.__brush,
|
4202
|
-
selection1 = dim.input(typeof selection
|
4343
|
+
selection1 = dim.input(typeof selection === "function" ? selection.apply(that, args) : selection, state.extent),
|
4203
4344
|
emit = emitter(that, args).beforestart();
|
4204
4345
|
|
4205
4346
|
interrupt(that);
|
@@ -4212,22 +4353,22 @@ function brush$1(dim) {
|
|
4212
4353
|
|
4213
4354
|
function redraw() {
|
4214
4355
|
var group = select(this),
|
4215
|
-
selection
|
4356
|
+
selection = local$$1(this).selection;
|
4216
4357
|
|
4217
|
-
if (selection
|
4358
|
+
if (selection) {
|
4218
4359
|
group.selectAll(".selection")
|
4219
4360
|
.style("display", null)
|
4220
|
-
.attr("x", selection
|
4221
|
-
.attr("y", selection
|
4222
|
-
.attr("width", selection
|
4223
|
-
.attr("height", selection
|
4361
|
+
.attr("x", selection[0][0])
|
4362
|
+
.attr("y", selection[0][1])
|
4363
|
+
.attr("width", selection[1][0] - selection[0][0])
|
4364
|
+
.attr("height", selection[1][1] - selection[0][1]);
|
4224
4365
|
|
4225
4366
|
group.selectAll(".handle")
|
4226
4367
|
.style("display", null)
|
4227
|
-
.attr("x", function(d) { return d.type[d.type.length - 1] === "e" ? selection
|
4228
|
-
.attr("y", function(d) { return d.type[0] === "s" ? selection
|
4229
|
-
.attr("width", function(d) { return d.type === "n" || d.type === "s" ? selection
|
4230
|
-
.attr("height", function(d) { return d.type === "e" || d.type === "w" ? selection
|
4368
|
+
.attr("x", function(d) { return d.type[d.type.length - 1] === "e" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })
|
4369
|
+
.attr("y", function(d) { return d.type[0] === "s" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })
|
4370
|
+
.attr("width", function(d) { return d.type === "n" || d.type === "s" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })
|
4371
|
+
.attr("height", function(d) { return d.type === "e" || d.type === "w" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });
|
4231
4372
|
}
|
4232
4373
|
|
4233
4374
|
else {
|
@@ -4285,7 +4426,7 @@ function brush$1(dim) {
|
|
4285
4426
|
signY = dim === X ? null : signsY[type],
|
4286
4427
|
state = local$$1(that),
|
4287
4428
|
extent = state.extent,
|
4288
|
-
selection
|
4429
|
+
selection = state.selection,
|
4289
4430
|
W = extent[0][0], w0, w1,
|
4290
4431
|
N = extent[0][1], n0, n1,
|
4291
4432
|
E = extent[1][0], e0, e1,
|
@@ -4301,15 +4442,15 @@ function brush$1(dim) {
|
|
4301
4442
|
emit = emitter(that, arguments).beforestart();
|
4302
4443
|
|
4303
4444
|
if (type === "overlay") {
|
4304
|
-
state.selection = selection
|
4445
|
+
state.selection = selection = [
|
4305
4446
|
[w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],
|
4306
4447
|
[e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]
|
4307
4448
|
];
|
4308
4449
|
} else {
|
4309
|
-
w0 = selection
|
4310
|
-
n0 = selection
|
4311
|
-
e0 = selection
|
4312
|
-
s0 = selection
|
4450
|
+
w0 = selection[0][0];
|
4451
|
+
n0 = selection[0][1];
|
4452
|
+
e0 = selection[1][0];
|
4453
|
+
s0 = selection[1][1];
|
4313
4454
|
}
|
4314
4455
|
|
4315
4456
|
w1 = w0;
|
@@ -4395,14 +4536,14 @@ function brush$1(dim) {
|
|
4395
4536
|
if (type in flipY) overlay.attr("cursor", cursors[type = flipY[type]]);
|
4396
4537
|
}
|
4397
4538
|
|
4398
|
-
if (state.selection) selection
|
4399
|
-
if (lockX) w1 = selection
|
4400
|
-
if (lockY) n1 = selection
|
4539
|
+
if (state.selection) selection = state.selection; // May be set by brush.move!
|
4540
|
+
if (lockX) w1 = selection[0][0], e1 = selection[1][0];
|
4541
|
+
if (lockY) n1 = selection[0][1], s1 = selection[1][1];
|
4401
4542
|
|
4402
|
-
if (selection
|
4403
|
-
|| selection
|
4404
|
-
|| selection
|
4405
|
-
|| selection
|
4543
|
+
if (selection[0][0] !== w1
|
4544
|
+
|| selection[0][1] !== n1
|
4545
|
+
|| selection[1][0] !== e1
|
4546
|
+
|| selection[1][1] !== s1) {
|
4406
4547
|
state.selection = [[w1, n1], [e1, s1]];
|
4407
4548
|
redraw.call(that);
|
4408
4549
|
emit.brush();
|
@@ -4422,8 +4563,8 @@ function brush$1(dim) {
|
|
4422
4563
|
}
|
4423
4564
|
group.attr("pointer-events", "all");
|
4424
4565
|
overlay.attr("cursor", cursors.overlay);
|
4425
|
-
if (state.selection) selection
|
4426
|
-
if (empty(selection
|
4566
|
+
if (state.selection) selection = state.selection; // May be set by brush.move (on start)!
|
4567
|
+
if (empty(selection)) state.selection = null, redraw.call(that);
|
4427
4568
|
emit.end();
|
4428
4569
|
}
|
4429
4570
|
|
@@ -4766,14 +4907,16 @@ Path.prototype = path.prototype = {
|
|
4766
4907
|
// Is this arc empty? We’re done.
|
4767
4908
|
if (!r) return;
|
4768
4909
|
|
4910
|
+
// Does the angle go the wrong way? Flip the direction.
|
4911
|
+
if (da < 0) da = da % tau$2 + tau$2;
|
4912
|
+
|
4769
4913
|
// Is this a complete circle? Draw two arcs to complete the circle.
|
4770
4914
|
if (da > tauEpsilon) {
|
4771
4915
|
this._ += "A" + r + "," + r + ",0,1," + cw + "," + (x - dx) + "," + (y - dy) + "A" + r + "," + r + ",0,1," + cw + "," + (this._x1 = x0) + "," + (this._y1 = y0);
|
4772
4916
|
}
|
4773
4917
|
|
4774
|
-
//
|
4775
|
-
else {
|
4776
|
-
if (da < 0) da = da % tau$2 + tau$2;
|
4918
|
+
// Is this arc non-empty? Draw an arc!
|
4919
|
+
else if (da > epsilon$1) {
|
4777
4920
|
this._ += "A" + r + "," + r + ",0," + (+(da >= pi$2)) + "," + cw + "," + (this._x1 = x + r * Math.cos(a1)) + "," + (this._y1 = y + r * Math.sin(a1));
|
4778
4921
|
}
|
4779
4922
|
},
|
@@ -4950,10 +5093,10 @@ var nest = function() {
|
|
4950
5093
|
nest;
|
4951
5094
|
|
4952
5095
|
function apply(array, depth, createResult, setResult) {
|
4953
|
-
if (depth >= keys.length)
|
4954
|
-
|
4955
|
-
|
4956
|
-
|
5096
|
+
if (depth >= keys.length) {
|
5097
|
+
if (sortValues != null) array.sort(sortValues);
|
5098
|
+
return rollup != null ? rollup(array) : array;
|
5099
|
+
}
|
4957
5100
|
|
4958
5101
|
var i = -1,
|
4959
5102
|
n = array.length,
|
@@ -5098,7 +5241,7 @@ function inferColumns(rows) {
|
|
5098
5241
|
}
|
5099
5242
|
|
5100
5243
|
var dsv = function(delimiter) {
|
5101
|
-
var reFormat = new RegExp("[\"" + delimiter + "\n]"),
|
5244
|
+
var reFormat = new RegExp("[\"" + delimiter + "\n\r]"),
|
5102
5245
|
delimiterCode = delimiter.charCodeAt(0);
|
5103
5246
|
|
5104
5247
|
function parse(text, f) {
|
@@ -6058,17 +6201,17 @@ var manyBody = function() {
|
|
6058
6201
|
}
|
6059
6202
|
|
6060
6203
|
function accumulate(quad) {
|
6061
|
-
var strength = 0, q, c, x
|
6204
|
+
var strength = 0, q, c, x, y, i;
|
6062
6205
|
|
6063
6206
|
// For internal nodes, accumulate forces from child quadrants.
|
6064
6207
|
if (quad.length) {
|
6065
|
-
for (x
|
6208
|
+
for (x = y = i = 0; i < 4; ++i) {
|
6066
6209
|
if ((q = quad[i]) && (c = q.value)) {
|
6067
|
-
strength += c, x
|
6210
|
+
strength += c, x += c * q.x, y += c * q.y;
|
6068
6211
|
}
|
6069
6212
|
}
|
6070
|
-
quad.x = x
|
6071
|
-
quad.y = y
|
6213
|
+
quad.x = x / strength;
|
6214
|
+
quad.y = y / strength;
|
6072
6215
|
}
|
6073
6216
|
|
6074
6217
|
// For leaf nodes, accumulate forces from coincident quadrants.
|
@@ -6086,20 +6229,20 @@ var manyBody = function() {
|
|
6086
6229
|
function apply(quad, x1, _, x2) {
|
6087
6230
|
if (!quad.value) return true;
|
6088
6231
|
|
6089
|
-
var x
|
6090
|
-
y
|
6232
|
+
var x = quad.x - node.x,
|
6233
|
+
y = quad.y - node.y,
|
6091
6234
|
w = x2 - x1,
|
6092
|
-
l = x
|
6235
|
+
l = x * x + y * y;
|
6093
6236
|
|
6094
6237
|
// Apply the Barnes-Hut approximation if possible.
|
6095
6238
|
// Limit forces for very close nodes; randomize direction if coincident.
|
6096
6239
|
if (w * w / theta2 < l) {
|
6097
6240
|
if (l < distanceMax2) {
|
6098
|
-
if (x
|
6099
|
-
if (y
|
6241
|
+
if (x === 0) x = jiggle(), l += x * x;
|
6242
|
+
if (y === 0) y = jiggle(), l += y * y;
|
6100
6243
|
if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);
|
6101
|
-
node.vx += x
|
6102
|
-
node.vy += y
|
6244
|
+
node.vx += x * quad.value * alpha / l;
|
6245
|
+
node.vy += y * quad.value * alpha / l;
|
6103
6246
|
}
|
6104
6247
|
return true;
|
6105
6248
|
}
|
@@ -6109,15 +6252,15 @@ var manyBody = function() {
|
|
6109
6252
|
|
6110
6253
|
// Limit forces for very close nodes; randomize direction if coincident.
|
6111
6254
|
if (quad.data !== node || quad.next) {
|
6112
|
-
if (x
|
6113
|
-
if (y
|
6255
|
+
if (x === 0) x = jiggle(), l += x * x;
|
6256
|
+
if (y === 0) y = jiggle(), l += y * y;
|
6114
6257
|
if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);
|
6115
6258
|
}
|
6116
6259
|
|
6117
6260
|
do if (quad.data !== node) {
|
6118
6261
|
w = strengths[quad.data.index] * alpha / l;
|
6119
|
-
node.vx += x
|
6120
|
-
node.vy += y
|
6262
|
+
node.vx += x * w;
|
6263
|
+
node.vy += y * w;
|
6121
6264
|
} while (quad = quad.next);
|
6122
6265
|
}
|
6123
6266
|
|
@@ -6263,6 +6406,14 @@ var formatGroup = function(grouping, thousands) {
|
|
6263
6406
|
};
|
6264
6407
|
};
|
6265
6408
|
|
6409
|
+
var formatNumerals = function(numerals) {
|
6410
|
+
return function(value) {
|
6411
|
+
return value.replace(/[0-9]/g, function(i) {
|
6412
|
+
return numerals[+i];
|
6413
|
+
});
|
6414
|
+
};
|
6415
|
+
};
|
6416
|
+
|
6266
6417
|
var formatDefault = function(x, p) {
|
6267
6418
|
x = x.toPrecision(p);
|
6268
6419
|
|
@@ -6323,9 +6474,11 @@ var formatTypes = {
|
|
6323
6474
|
// [[fill]align][sign][symbol][0][width][,][.precision][type]
|
6324
6475
|
var re = /^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;
|
6325
6476
|
|
6326
|
-
|
6477
|
+
function formatSpecifier(specifier) {
|
6327
6478
|
return new FormatSpecifier(specifier);
|
6328
|
-
}
|
6479
|
+
}
|
6480
|
+
|
6481
|
+
formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof
|
6329
6482
|
|
6330
6483
|
function FormatSpecifier(specifier) {
|
6331
6484
|
if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier);
|
@@ -6373,16 +6526,18 @@ FormatSpecifier.prototype.toString = function() {
|
|
6373
6526
|
+ this.type;
|
6374
6527
|
};
|
6375
6528
|
|
6376
|
-
var
|
6377
|
-
|
6378
|
-
function identity$3(x) {
|
6529
|
+
var identity$3 = function(x) {
|
6379
6530
|
return x;
|
6380
|
-
}
|
6531
|
+
};
|
6532
|
+
|
6533
|
+
var prefixes = ["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];
|
6381
6534
|
|
6382
6535
|
var formatLocale = function(locale) {
|
6383
6536
|
var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity$3,
|
6384
6537
|
currency = locale.currency,
|
6385
|
-
decimal = locale.decimal
|
6538
|
+
decimal = locale.decimal,
|
6539
|
+
numerals = locale.numerals ? formatNumerals(locale.numerals) : identity$3,
|
6540
|
+
percent = locale.percent || "%";
|
6386
6541
|
|
6387
6542
|
function newFormat(specifier) {
|
6388
6543
|
specifier = formatSpecifier(specifier);
|
@@ -6400,7 +6555,7 @@ var formatLocale = function(locale) {
|
|
6400
6555
|
// Compute the prefix and suffix.
|
6401
6556
|
// For SI-prefix, the suffix is lazily computed.
|
6402
6557
|
var prefix = symbol === "$" ? currency[0] : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "",
|
6403
|
-
suffix = symbol === "$" ? currency[1] : /[%p]/.test(type) ?
|
6558
|
+
suffix = symbol === "$" ? currency[1] : /[%p]/.test(type) ? percent : "";
|
6404
6559
|
|
6405
6560
|
// What format function should we use?
|
6406
6561
|
// Is this an integer type?
|
@@ -6427,27 +6582,12 @@ var formatLocale = function(locale) {
|
|
6427
6582
|
} else {
|
6428
6583
|
value = +value;
|
6429
6584
|
|
6430
|
-
// Convert negative to positive, and compute the prefix.
|
6431
|
-
// Note that -0 is not less than 0, but 1 / -0 is!
|
6432
|
-
var valueNegative = (value < 0 || 1 / value < 0) && (value *= -1, true);
|
6433
|
-
|
6434
6585
|
// Perform the initial formatting.
|
6435
|
-
|
6586
|
+
var valueNegative = value < 0;
|
6587
|
+
value = formatType(Math.abs(value), precision);
|
6436
6588
|
|
6437
|
-
// If
|
6438
|
-
|
6439
|
-
if (valueNegative) {
|
6440
|
-
i = -1, n = value.length;
|
6441
|
-
valueNegative = false;
|
6442
|
-
while (++i < n) {
|
6443
|
-
if (c = value.charCodeAt(i), (48 < c && c < 58)
|
6444
|
-
|| (type === "x" && 96 < c && c < 103)
|
6445
|
-
|| (type === "X" && 64 < c && c < 71)) {
|
6446
|
-
valueNegative = true;
|
6447
|
-
break;
|
6448
|
-
}
|
6449
|
-
}
|
6450
|
-
}
|
6589
|
+
// If a negative value rounds to zero during formatting, treat as positive.
|
6590
|
+
if (valueNegative && +value === 0) valueNegative = false;
|
6451
6591
|
|
6452
6592
|
// Compute the prefix and suffix.
|
6453
6593
|
valuePrefix = (valueNegative ? (sign === "(" ? sign : "-") : sign === "-" || sign === "(" ? "" : sign) + valuePrefix;
|
@@ -6479,11 +6619,13 @@ var formatLocale = function(locale) {
|
|
6479
6619
|
|
6480
6620
|
// Reconstruct the final output based on the desired alignment.
|
6481
6621
|
switch (align) {
|
6482
|
-
case "<":
|
6483
|
-
case "=":
|
6484
|
-
case "^":
|
6622
|
+
case "<": value = valuePrefix + value + valueSuffix + padding; break;
|
6623
|
+
case "=": value = valuePrefix + padding + value + valueSuffix; break;
|
6624
|
+
case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;
|
6625
|
+
default: value = padding + valuePrefix + value + valueSuffix; break;
|
6485
6626
|
}
|
6486
|
-
|
6627
|
+
|
6628
|
+
return numerals(value);
|
6487
6629
|
}
|
6488
6630
|
|
6489
6631
|
format.toString = function() {
|
@@ -6626,8 +6768,8 @@ function streamGeometry(geometry, stream) {
|
|
6626
6768
|
}
|
6627
6769
|
|
6628
6770
|
var streamObjectType = {
|
6629
|
-
Feature: function(
|
6630
|
-
streamGeometry(
|
6771
|
+
Feature: function(object, stream) {
|
6772
|
+
streamGeometry(object.geometry, stream);
|
6631
6773
|
},
|
6632
6774
|
FeatureCollection: function(object, stream) {
|
6633
6775
|
var features = object.features, i = -1, n = features.length;
|
@@ -6874,8 +7016,10 @@ function linePoint(lambda, phi) {
|
|
6874
7016
|
}
|
6875
7017
|
}
|
6876
7018
|
} else {
|
6877
|
-
|
7019
|
+
ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]);
|
6878
7020
|
}
|
7021
|
+
if (phi < phi0) phi0 = phi;
|
7022
|
+
if (phi > phi1) phi1 = phi;
|
6879
7023
|
p0 = p, lambda2 = lambda;
|
6880
7024
|
}
|
6881
7025
|
|
@@ -7074,9 +7218,8 @@ function centroidRingPoint(lambda, phi) {
|
|
7074
7218
|
cy = z0 * x - x0 * z,
|
7075
7219
|
cz = x0 * y - y0 * x,
|
7076
7220
|
m = sqrt(cx * cx + cy * cy + cz * cz),
|
7077
|
-
|
7078
|
-
v = m && -
|
7079
|
-
w = atan2(m, u); // line weight
|
7221
|
+
w = asin(m), // line weight = angle
|
7222
|
+
v = m && -w / m; // area weight multiplier
|
7080
7223
|
X2 += v * cx;
|
7081
7224
|
Y2 += v * cy;
|
7082
7225
|
Z2 += v * cz;
|
@@ -7643,6 +7786,71 @@ var extent$1 = function() {
|
|
7643
7786
|
};
|
7644
7787
|
};
|
7645
7788
|
|
7789
|
+
var sum$1 = adder();
|
7790
|
+
|
7791
|
+
var polygonContains = function(polygon, point) {
|
7792
|
+
var lambda = point[0],
|
7793
|
+
phi = point[1],
|
7794
|
+
normal = [sin$1(lambda), -cos$1(lambda), 0],
|
7795
|
+
angle = 0,
|
7796
|
+
winding = 0;
|
7797
|
+
|
7798
|
+
sum$1.reset();
|
7799
|
+
|
7800
|
+
for (var i = 0, n = polygon.length; i < n; ++i) {
|
7801
|
+
if (!(m = (ring = polygon[i]).length)) continue;
|
7802
|
+
var ring,
|
7803
|
+
m,
|
7804
|
+
point0 = ring[m - 1],
|
7805
|
+
lambda0 = point0[0],
|
7806
|
+
phi0 = point0[1] / 2 + quarterPi,
|
7807
|
+
sinPhi0 = sin$1(phi0),
|
7808
|
+
cosPhi0 = cos$1(phi0);
|
7809
|
+
|
7810
|
+
for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {
|
7811
|
+
var point1 = ring[j],
|
7812
|
+
lambda1 = point1[0],
|
7813
|
+
phi1 = point1[1] / 2 + quarterPi,
|
7814
|
+
sinPhi1 = sin$1(phi1),
|
7815
|
+
cosPhi1 = cos$1(phi1),
|
7816
|
+
delta = lambda1 - lambda0,
|
7817
|
+
sign$$1 = delta >= 0 ? 1 : -1,
|
7818
|
+
absDelta = sign$$1 * delta,
|
7819
|
+
antimeridian = absDelta > pi$3,
|
7820
|
+
k = sinPhi0 * sinPhi1;
|
7821
|
+
|
7822
|
+
sum$1.add(atan2(k * sign$$1 * sin$1(absDelta), cosPhi0 * cosPhi1 + k * cos$1(absDelta)));
|
7823
|
+
angle += antimeridian ? delta + sign$$1 * tau$3 : delta;
|
7824
|
+
|
7825
|
+
// Are the longitudes either side of the point’s meridian (lambda),
|
7826
|
+
// and are the latitudes smaller than the parallel (phi)?
|
7827
|
+
if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {
|
7828
|
+
var arc = cartesianCross(cartesian(point0), cartesian(point1));
|
7829
|
+
cartesianNormalizeInPlace(arc);
|
7830
|
+
var intersection = cartesianCross(normal, arc);
|
7831
|
+
cartesianNormalizeInPlace(intersection);
|
7832
|
+
var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);
|
7833
|
+
if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {
|
7834
|
+
winding += antimeridian ^ delta >= 0 ? 1 : -1;
|
7835
|
+
}
|
7836
|
+
}
|
7837
|
+
}
|
7838
|
+
}
|
7839
|
+
|
7840
|
+
// First, determine whether the South pole is inside or outside:
|
7841
|
+
//
|
7842
|
+
// It is inside if:
|
7843
|
+
// * the polygon winds around it in a clockwise direction.
|
7844
|
+
// * the polygon does not (cumulatively) wind around it, but has a negative
|
7845
|
+
// (counter-clockwise) area.
|
7846
|
+
//
|
7847
|
+
// Second, count the (signed) number of times a segment crosses a lambda
|
7848
|
+
// from the point to the South pole. If it is zero, then the point is the
|
7849
|
+
// same side as the South pole.
|
7850
|
+
|
7851
|
+
return (angle < -epsilon$2 || angle < epsilon$2 && sum$1 < -epsilon$2) ^ (winding & 1);
|
7852
|
+
};
|
7853
|
+
|
7646
7854
|
var lengthSum = adder();
|
7647
7855
|
var lambda0$2;
|
7648
7856
|
var sinPhi0$1;
|
@@ -7701,6 +7909,87 @@ var distance = function(a, b) {
|
|
7701
7909
|
return length$1(object$1);
|
7702
7910
|
};
|
7703
7911
|
|
7912
|
+
var containsObjectType = {
|
7913
|
+
Feature: function(object, point) {
|
7914
|
+
return containsGeometry(object.geometry, point);
|
7915
|
+
},
|
7916
|
+
FeatureCollection: function(object, point) {
|
7917
|
+
var features = object.features, i = -1, n = features.length;
|
7918
|
+
while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;
|
7919
|
+
return false;
|
7920
|
+
}
|
7921
|
+
};
|
7922
|
+
|
7923
|
+
var containsGeometryType = {
|
7924
|
+
Sphere: function() {
|
7925
|
+
return true;
|
7926
|
+
},
|
7927
|
+
Point: function(object, point) {
|
7928
|
+
return containsPoint(object.coordinates, point);
|
7929
|
+
},
|
7930
|
+
MultiPoint: function(object, point) {
|
7931
|
+
var coordinates = object.coordinates, i = -1, n = coordinates.length;
|
7932
|
+
while (++i < n) if (containsPoint(coordinates[i], point)) return true;
|
7933
|
+
return false;
|
7934
|
+
},
|
7935
|
+
LineString: function(object, point) {
|
7936
|
+
return containsLine(object.coordinates, point);
|
7937
|
+
},
|
7938
|
+
MultiLineString: function(object, point) {
|
7939
|
+
var coordinates = object.coordinates, i = -1, n = coordinates.length;
|
7940
|
+
while (++i < n) if (containsLine(coordinates[i], point)) return true;
|
7941
|
+
return false;
|
7942
|
+
},
|
7943
|
+
Polygon: function(object, point) {
|
7944
|
+
return containsPolygon(object.coordinates, point);
|
7945
|
+
},
|
7946
|
+
MultiPolygon: function(object, point) {
|
7947
|
+
var coordinates = object.coordinates, i = -1, n = coordinates.length;
|
7948
|
+
while (++i < n) if (containsPolygon(coordinates[i], point)) return true;
|
7949
|
+
return false;
|
7950
|
+
},
|
7951
|
+
GeometryCollection: function(object, point) {
|
7952
|
+
var geometries = object.geometries, i = -1, n = geometries.length;
|
7953
|
+
while (++i < n) if (containsGeometry(geometries[i], point)) return true;
|
7954
|
+
return false;
|
7955
|
+
}
|
7956
|
+
};
|
7957
|
+
|
7958
|
+
function containsGeometry(geometry, point) {
|
7959
|
+
return geometry && containsGeometryType.hasOwnProperty(geometry.type)
|
7960
|
+
? containsGeometryType[geometry.type](geometry, point)
|
7961
|
+
: false;
|
7962
|
+
}
|
7963
|
+
|
7964
|
+
function containsPoint(coordinates, point) {
|
7965
|
+
return distance(coordinates, point) === 0;
|
7966
|
+
}
|
7967
|
+
|
7968
|
+
function containsLine(coordinates, point) {
|
7969
|
+
var ab = distance(coordinates[0], coordinates[1]),
|
7970
|
+
ao = distance(coordinates[0], point),
|
7971
|
+
ob = distance(point, coordinates[1]);
|
7972
|
+
return ao + ob <= ab + epsilon$2;
|
7973
|
+
}
|
7974
|
+
|
7975
|
+
function containsPolygon(coordinates, point) {
|
7976
|
+
return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));
|
7977
|
+
}
|
7978
|
+
|
7979
|
+
function ringRadians(ring) {
|
7980
|
+
return ring = ring.map(pointRadians), ring.pop(), ring;
|
7981
|
+
}
|
7982
|
+
|
7983
|
+
function pointRadians(point) {
|
7984
|
+
return [point[0] * radians, point[1] * radians];
|
7985
|
+
}
|
7986
|
+
|
7987
|
+
var contains = function(object, point) {
|
7988
|
+
return (object && containsObjectType.hasOwnProperty(object.type)
|
7989
|
+
? containsObjectType[object.type]
|
7990
|
+
: containsGeometry)(object, point);
|
7991
|
+
};
|
7992
|
+
|
7704
7993
|
function graticuleX(y0, y1, dy) {
|
7705
7994
|
var y = sequence(y0, y1 - epsilon$2, dy).concat(y1);
|
7706
7995
|
return function(x) { return y.map(function(y) { return [x, y]; }); };
|
@@ -8053,16 +8342,58 @@ PathContext.prototype = {
|
|
8053
8342
|
result: noop$1
|
8054
8343
|
};
|
8055
8344
|
|
8056
|
-
|
8057
|
-
|
8058
|
-
|
8345
|
+
var lengthSum$1 = adder();
|
8346
|
+
var lengthRing;
|
8347
|
+
var x00$2;
|
8348
|
+
var y00$2;
|
8349
|
+
var x0$4;
|
8350
|
+
var y0$4;
|
8059
8351
|
|
8060
|
-
|
8061
|
-
|
8062
|
-
|
8063
|
-
|
8352
|
+
var lengthStream$1 = {
|
8353
|
+
point: noop$1,
|
8354
|
+
lineStart: function() {
|
8355
|
+
lengthStream$1.point = lengthPointFirst$1;
|
8064
8356
|
},
|
8065
|
-
|
8357
|
+
lineEnd: function() {
|
8358
|
+
if (lengthRing) lengthPoint$1(x00$2, y00$2);
|
8359
|
+
lengthStream$1.point = noop$1;
|
8360
|
+
},
|
8361
|
+
polygonStart: function() {
|
8362
|
+
lengthRing = true;
|
8363
|
+
},
|
8364
|
+
polygonEnd: function() {
|
8365
|
+
lengthRing = null;
|
8366
|
+
},
|
8367
|
+
result: function() {
|
8368
|
+
var length = +lengthSum$1;
|
8369
|
+
lengthSum$1.reset();
|
8370
|
+
return length;
|
8371
|
+
}
|
8372
|
+
};
|
8373
|
+
|
8374
|
+
function lengthPointFirst$1(x, y) {
|
8375
|
+
lengthStream$1.point = lengthPoint$1;
|
8376
|
+
x00$2 = x0$4 = x, y00$2 = y0$4 = y;
|
8377
|
+
}
|
8378
|
+
|
8379
|
+
function lengthPoint$1(x, y) {
|
8380
|
+
x0$4 -= x, y0$4 -= y;
|
8381
|
+
lengthSum$1.add(sqrt(x0$4 * x0$4 + y0$4 * y0$4));
|
8382
|
+
x0$4 = x, y0$4 = y;
|
8383
|
+
}
|
8384
|
+
|
8385
|
+
function PathString() {
|
8386
|
+
this._string = [];
|
8387
|
+
}
|
8388
|
+
|
8389
|
+
PathString.prototype = {
|
8390
|
+
_radius: 4.5,
|
8391
|
+
_circle: circle$1(4.5),
|
8392
|
+
pointRadius: function(_) {
|
8393
|
+
if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;
|
8394
|
+
return this;
|
8395
|
+
},
|
8396
|
+
polygonStart: function() {
|
8066
8397
|
this._line = 0;
|
8067
8398
|
},
|
8068
8399
|
polygonEnd: function() {
|
@@ -8087,6 +8418,7 @@ PathString.prototype = {
|
|
8087
8418
|
break;
|
8088
8419
|
}
|
8089
8420
|
default: {
|
8421
|
+
if (this._circle == null) this._circle = circle$1(this._radius);
|
8090
8422
|
this._string.push("M", x, ",", y, this._circle);
|
8091
8423
|
break;
|
8092
8424
|
}
|
@@ -8097,6 +8429,8 @@ PathString.prototype = {
|
|
8097
8429
|
var result = this._string.join("");
|
8098
8430
|
this._string = [];
|
8099
8431
|
return result;
|
8432
|
+
} else {
|
8433
|
+
return null;
|
8100
8434
|
}
|
8101
8435
|
}
|
8102
8436
|
};
|
@@ -8126,6 +8460,11 @@ var index$1 = function(projection, context) {
|
|
8126
8460
|
return areaStream$1.result();
|
8127
8461
|
};
|
8128
8462
|
|
8463
|
+
path.measure = function(object) {
|
8464
|
+
geoStream(object, projectionStream(lengthStream$1));
|
8465
|
+
return lengthStream$1.result();
|
8466
|
+
};
|
8467
|
+
|
8129
8468
|
path.bounds = function(object) {
|
8130
8469
|
geoStream(object, projectionStream(boundsStream$1));
|
8131
8470
|
return boundsStream$1.result();
|
@@ -8156,71 +8495,6 @@ var index$1 = function(projection, context) {
|
|
8156
8495
|
return path.projection(projection).context(context);
|
8157
8496
|
};
|
8158
8497
|
|
8159
|
-
var sum$1 = adder();
|
8160
|
-
|
8161
|
-
var polygonContains = function(polygon, point) {
|
8162
|
-
var lambda = point[0],
|
8163
|
-
phi = point[1],
|
8164
|
-
normal = [sin$1(lambda), -cos$1(lambda), 0],
|
8165
|
-
angle = 0,
|
8166
|
-
winding = 0;
|
8167
|
-
|
8168
|
-
sum$1.reset();
|
8169
|
-
|
8170
|
-
for (var i = 0, n = polygon.length; i < n; ++i) {
|
8171
|
-
if (!(m = (ring = polygon[i]).length)) continue;
|
8172
|
-
var ring,
|
8173
|
-
m,
|
8174
|
-
point0 = ring[m - 1],
|
8175
|
-
lambda0 = point0[0],
|
8176
|
-
phi0 = point0[1] / 2 + quarterPi,
|
8177
|
-
sinPhi0 = sin$1(phi0),
|
8178
|
-
cosPhi0 = cos$1(phi0);
|
8179
|
-
|
8180
|
-
for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {
|
8181
|
-
var point1 = ring[j],
|
8182
|
-
lambda1 = point1[0],
|
8183
|
-
phi1 = point1[1] / 2 + quarterPi,
|
8184
|
-
sinPhi1 = sin$1(phi1),
|
8185
|
-
cosPhi1 = cos$1(phi1),
|
8186
|
-
delta = lambda1 - lambda0,
|
8187
|
-
sign$$1 = delta >= 0 ? 1 : -1,
|
8188
|
-
absDelta = sign$$1 * delta,
|
8189
|
-
antimeridian = absDelta > pi$3,
|
8190
|
-
k = sinPhi0 * sinPhi1;
|
8191
|
-
|
8192
|
-
sum$1.add(atan2(k * sign$$1 * sin$1(absDelta), cosPhi0 * cosPhi1 + k * cos$1(absDelta)));
|
8193
|
-
angle += antimeridian ? delta + sign$$1 * tau$3 : delta;
|
8194
|
-
|
8195
|
-
// Are the longitudes either side of the point’s meridian (lambda),
|
8196
|
-
// and are the latitudes smaller than the parallel (phi)?
|
8197
|
-
if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {
|
8198
|
-
var arc = cartesianCross(cartesian(point0), cartesian(point1));
|
8199
|
-
cartesianNormalizeInPlace(arc);
|
8200
|
-
var intersection = cartesianCross(normal, arc);
|
8201
|
-
cartesianNormalizeInPlace(intersection);
|
8202
|
-
var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);
|
8203
|
-
if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {
|
8204
|
-
winding += antimeridian ^ delta >= 0 ? 1 : -1;
|
8205
|
-
}
|
8206
|
-
}
|
8207
|
-
}
|
8208
|
-
}
|
8209
|
-
|
8210
|
-
// First, determine whether the South pole is inside or outside:
|
8211
|
-
//
|
8212
|
-
// It is inside if:
|
8213
|
-
// * the polygon winds around it in a clockwise direction.
|
8214
|
-
// * the polygon does not (cumulatively) wind around it, but has a negative
|
8215
|
-
// (counter-clockwise) area.
|
8216
|
-
//
|
8217
|
-
// Second, count the (signed) number of times a segment crosses a lambda
|
8218
|
-
// from the point to the South pole. If it is zero, then the point is the
|
8219
|
-
// same side as the South pole.
|
8220
|
-
|
8221
|
-
return (angle < -epsilon$2 || angle < epsilon$2 && sum$1 < -epsilon$2) ^ (winding & 1);
|
8222
|
-
};
|
8223
|
-
|
8224
8498
|
var clip = function(pointVisible, clipLine, interpolate, start) {
|
8225
8499
|
return function(rotate, sink) {
|
8226
8500
|
var line = clipLine(sink),
|
@@ -8481,7 +8755,7 @@ var clipCircle = function(radius, delta) {
|
|
8481
8755
|
// TODO ignore if not clipping polygons.
|
8482
8756
|
if (v !== v0) {
|
8483
8757
|
point2 = intersect(point0, point1);
|
8484
|
-
if (pointEqual(point0, point2) || pointEqual(point1, point2)) {
|
8758
|
+
if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {
|
8485
8759
|
point1[0] += epsilon$2;
|
8486
8760
|
point1[1] += epsilon$2;
|
8487
8761
|
v = visible(point1[0], point1[1]);
|
@@ -9098,31 +9372,38 @@ var mercator = function() {
|
|
9098
9372
|
|
9099
9373
|
function mercatorProjection(project) {
|
9100
9374
|
var m = projection(project),
|
9375
|
+
center = m.center,
|
9101
9376
|
scale = m.scale,
|
9102
9377
|
translate = m.translate,
|
9103
9378
|
clipExtent = m.clipExtent,
|
9104
|
-
|
9379
|
+
x0 = null, y0, x1, y1; // clip extent
|
9105
9380
|
|
9106
9381
|
m.scale = function(_) {
|
9107
|
-
return arguments.length ? (scale(_),
|
9382
|
+
return arguments.length ? (scale(_), reclip()) : scale();
|
9108
9383
|
};
|
9109
9384
|
|
9110
9385
|
m.translate = function(_) {
|
9111
|
-
return arguments.length ? (translate(_),
|
9386
|
+
return arguments.length ? (translate(_), reclip()) : translate();
|
9387
|
+
};
|
9388
|
+
|
9389
|
+
m.center = function(_) {
|
9390
|
+
return arguments.length ? (center(_), reclip()) : center();
|
9112
9391
|
};
|
9113
9392
|
|
9114
9393
|
m.clipExtent = function(_) {
|
9115
|
-
|
9116
|
-
if (clipAuto = _ == null) {
|
9117
|
-
var k = pi$3 * scale(),
|
9118
|
-
t = translate();
|
9119
|
-
_ = [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]];
|
9120
|
-
}
|
9121
|
-
clipExtent(_);
|
9122
|
-
return m;
|
9394
|
+
return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];
|
9123
9395
|
};
|
9124
9396
|
|
9125
|
-
|
9397
|
+
function reclip() {
|
9398
|
+
var k = pi$3 * scale(),
|
9399
|
+
t = m(rotation(m.rotate()).invert([0, 0]));
|
9400
|
+
return clipExtent(x0 == null
|
9401
|
+
? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw
|
9402
|
+
? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]
|
9403
|
+
: [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);
|
9404
|
+
}
|
9405
|
+
|
9406
|
+
return reclip();
|
9126
9407
|
}
|
9127
9408
|
|
9128
9409
|
function tany(y) {
|
@@ -9216,7 +9497,7 @@ function scaleTranslate(kx, ky, tx, ty) {
|
|
9216
9497
|
}
|
9217
9498
|
|
9218
9499
|
var identity$5 = function() {
|
9219
|
-
var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity$4, // scale, translate and reflect
|
9500
|
+
var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform$$1 = identity$4, // scale, translate and reflect
|
9220
9501
|
x0 = null, y0, x1, y1, clip = identity$4, // clip extent
|
9221
9502
|
cache,
|
9222
9503
|
cacheStream,
|
@@ -9229,22 +9510,22 @@ var identity$5 = function() {
|
|
9229
9510
|
|
9230
9511
|
return projection = {
|
9231
9512
|
stream: function(stream) {
|
9232
|
-
return cache && cacheStream === stream ? cache : cache = transform(clip(cacheStream = stream));
|
9513
|
+
return cache && cacheStream === stream ? cache : cache = transform$$1(clip(cacheStream = stream));
|
9233
9514
|
},
|
9234
9515
|
clipExtent: function(_) {
|
9235
9516
|
return arguments.length ? (clip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$4) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];
|
9236
9517
|
},
|
9237
9518
|
scale: function(_) {
|
9238
|
-
return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;
|
9519
|
+
return arguments.length ? (transform$$1 = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;
|
9239
9520
|
},
|
9240
9521
|
translate: function(_) {
|
9241
|
-
return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];
|
9522
|
+
return arguments.length ? (transform$$1 = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];
|
9242
9523
|
},
|
9243
9524
|
reflectX: function(_) {
|
9244
|
-
return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;
|
9525
|
+
return arguments.length ? (transform$$1 = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;
|
9245
9526
|
},
|
9246
9527
|
reflectY: function(_) {
|
9247
|
-
return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;
|
9528
|
+
return arguments.length ? (transform$$1 = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;
|
9248
9529
|
},
|
9249
9530
|
fitExtent: function(extent, object) {
|
9250
9531
|
return fitExtent(projection, extent, object);
|
@@ -9392,6 +9673,19 @@ var cluster = function() {
|
|
9392
9673
|
return cluster;
|
9393
9674
|
};
|
9394
9675
|
|
9676
|
+
function count(node) {
|
9677
|
+
var sum = 0,
|
9678
|
+
children = node.children,
|
9679
|
+
i = children && children.length;
|
9680
|
+
if (!i) sum = 1;
|
9681
|
+
else while (--i >= 0) sum += children[i].value;
|
9682
|
+
node.value = sum;
|
9683
|
+
}
|
9684
|
+
|
9685
|
+
var node_count = function() {
|
9686
|
+
return this.eachAfter(count);
|
9687
|
+
};
|
9688
|
+
|
9395
9689
|
var node_each = function(callback) {
|
9396
9690
|
var node = this, current, next = [node], children, i, n;
|
9397
9691
|
do {
|
@@ -9570,6 +9864,7 @@ function Node(data) {
|
|
9570
9864
|
|
9571
9865
|
Node.prototype = hierarchy.prototype = {
|
9572
9866
|
constructor: Node,
|
9867
|
+
count: node_count,
|
9573
9868
|
each: node_each,
|
9574
9869
|
eachAfter: node_eachAfter,
|
9575
9870
|
eachBefore: node_eachBefore,
|
@@ -9583,83 +9878,92 @@ Node.prototype = hierarchy.prototype = {
|
|
9583
9878
|
copy: node_copy
|
9584
9879
|
};
|
9585
9880
|
|
9586
|
-
|
9587
|
-
this._ = value;
|
9588
|
-
this.next = null;
|
9589
|
-
}
|
9881
|
+
var slice$3 = Array.prototype.slice;
|
9590
9882
|
|
9591
|
-
|
9592
|
-
var
|
9593
|
-
|
9594
|
-
|
9595
|
-
node = head;
|
9883
|
+
function shuffle$1(array) {
|
9884
|
+
var m = array.length,
|
9885
|
+
t,
|
9886
|
+
i;
|
9596
9887
|
|
9597
|
-
while (
|
9598
|
-
|
9599
|
-
|
9600
|
-
|
9601
|
-
array[i] =
|
9888
|
+
while (m) {
|
9889
|
+
i = Math.random() * m-- | 0;
|
9890
|
+
t = array[m];
|
9891
|
+
array[m] = array[i];
|
9892
|
+
array[i] = t;
|
9602
9893
|
}
|
9603
9894
|
|
9604
|
-
return
|
9605
|
-
|
9606
|
-
tail: node
|
9607
|
-
};
|
9608
|
-
};
|
9895
|
+
return array;
|
9896
|
+
}
|
9609
9897
|
|
9610
9898
|
var enclose = function(circles) {
|
9611
|
-
|
9899
|
+
var i = 0, n = (circles = shuffle$1(slice$3.call(circles))).length, B = [], p, e;
|
9900
|
+
|
9901
|
+
while (i < n) {
|
9902
|
+
p = circles[i];
|
9903
|
+
if (e && enclosesWeak(e, p)) ++i;
|
9904
|
+
else e = encloseBasis(B = extendBasis(B, p)), i = 0;
|
9905
|
+
}
|
9906
|
+
|
9907
|
+
return e;
|
9612
9908
|
};
|
9613
9909
|
|
9614
|
-
function
|
9615
|
-
var
|
9616
|
-
dy = b.y - a.y,
|
9617
|
-
dr = a.r - b.r;
|
9618
|
-
return dr * dr + 1e-6 > dx * dx + dy * dy;
|
9619
|
-
}
|
9910
|
+
function extendBasis(B, p) {
|
9911
|
+
var i, j;
|
9620
9912
|
|
9621
|
-
|
9622
|
-
function encloseN(L, B) {
|
9623
|
-
var circle,
|
9624
|
-
l0 = null,
|
9625
|
-
l1 = L.head,
|
9626
|
-
l2,
|
9627
|
-
p1;
|
9913
|
+
if (enclosesWeakAll(p, B)) return [p];
|
9628
9914
|
|
9629
|
-
|
9630
|
-
|
9631
|
-
|
9632
|
-
|
9915
|
+
// If we get here then B must have at least one element.
|
9916
|
+
for (i = 0; i < B.length; ++i) {
|
9917
|
+
if (enclosesNot(p, B[i])
|
9918
|
+
&& enclosesWeakAll(encloseBasis2(B[i], p), B)) {
|
9919
|
+
return [B[i], p];
|
9920
|
+
}
|
9633
9921
|
}
|
9634
9922
|
|
9635
|
-
|
9636
|
-
|
9637
|
-
|
9923
|
+
// If we get here then B must have at least two elements.
|
9924
|
+
for (i = 0; i < B.length - 1; ++i) {
|
9925
|
+
for (j = i + 1; j < B.length; ++j) {
|
9926
|
+
if (enclosesNot(encloseBasis2(B[i], B[j]), p)
|
9927
|
+
&& enclosesNot(encloseBasis2(B[i], p), B[j])
|
9928
|
+
&& enclosesNot(encloseBasis2(B[j], p), B[i])
|
9929
|
+
&& enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {
|
9930
|
+
return [B[i], B[j], p];
|
9931
|
+
}
|
9932
|
+
}
|
9933
|
+
}
|
9638
9934
|
|
9639
|
-
|
9640
|
-
|
9641
|
-
|
9935
|
+
// If we get here then something is very wrong.
|
9936
|
+
throw new Error;
|
9937
|
+
}
|
9642
9938
|
|
9643
|
-
|
9644
|
-
|
9645
|
-
|
9939
|
+
function enclosesNot(a, b) {
|
9940
|
+
var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;
|
9941
|
+
return dr < 0 || dr * dr < dx * dx + dy * dy;
|
9942
|
+
}
|
9646
9943
|
|
9647
|
-
|
9648
|
-
|
9649
|
-
|
9650
|
-
|
9944
|
+
function enclosesWeak(a, b) {
|
9945
|
+
var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;
|
9946
|
+
return dr > 0 && dr * dr > dx * dx + dy * dy;
|
9947
|
+
}
|
9651
9948
|
|
9652
|
-
|
9653
|
-
|
9949
|
+
function enclosesWeakAll(a, B) {
|
9950
|
+
for (var i = 0; i < B.length; ++i) {
|
9951
|
+
if (!enclosesWeak(a, B[i])) {
|
9952
|
+
return false;
|
9654
9953
|
}
|
9655
|
-
l1 = l2;
|
9656
9954
|
}
|
9955
|
+
return true;
|
9956
|
+
}
|
9657
9957
|
|
9658
|
-
|
9659
|
-
|
9958
|
+
function encloseBasis(B) {
|
9959
|
+
switch (B.length) {
|
9960
|
+
case 1: return encloseBasis1(B[0]);
|
9961
|
+
case 2: return encloseBasis2(B[0], B[1]);
|
9962
|
+
case 3: return encloseBasis3(B[0], B[1], B[2]);
|
9963
|
+
}
|
9660
9964
|
}
|
9661
9965
|
|
9662
|
-
function
|
9966
|
+
function encloseBasis1(a) {
|
9663
9967
|
return {
|
9664
9968
|
x: a.x,
|
9665
9969
|
y: a.y,
|
@@ -9667,7 +9971,7 @@ function enclose1(a) {
|
|
9667
9971
|
};
|
9668
9972
|
}
|
9669
9973
|
|
9670
|
-
function
|
9974
|
+
function encloseBasis2(a, b) {
|
9671
9975
|
var x1 = a.x, y1 = a.y, r1 = a.r,
|
9672
9976
|
x2 = b.x, y2 = b.y, r2 = b.r,
|
9673
9977
|
x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,
|
@@ -9679,30 +9983,31 @@ function enclose2(a, b) {
|
|
9679
9983
|
};
|
9680
9984
|
}
|
9681
9985
|
|
9682
|
-
function
|
9986
|
+
function encloseBasis3(a, b, c) {
|
9683
9987
|
var x1 = a.x, y1 = a.y, r1 = a.r,
|
9684
9988
|
x2 = b.x, y2 = b.y, r2 = b.r,
|
9685
9989
|
x3 = c.x, y3 = c.y, r3 = c.r,
|
9686
|
-
a2 =
|
9687
|
-
|
9688
|
-
|
9689
|
-
|
9690
|
-
|
9691
|
-
|
9692
|
-
|
9693
|
-
|
9990
|
+
a2 = x1 - x2,
|
9991
|
+
a3 = x1 - x3,
|
9992
|
+
b2 = y1 - y2,
|
9993
|
+
b3 = y1 - y3,
|
9994
|
+
c2 = r2 - r1,
|
9995
|
+
c3 = r3 - r1,
|
9996
|
+
d1 = x1 * x1 + y1 * y1 - r1 * r1,
|
9997
|
+
d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,
|
9998
|
+
d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,
|
9694
9999
|
ab = a3 * b2 - a2 * b3,
|
9695
|
-
xa = (b2 * d3 - b3 * d2) / ab - x1,
|
10000
|
+
xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,
|
9696
10001
|
xb = (b3 * c2 - b2 * c3) / ab,
|
9697
|
-
ya = (a3 * d2 - a2 * d3) / ab - y1,
|
10002
|
+
ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,
|
9698
10003
|
yb = (a2 * c3 - a3 * c2) / ab,
|
9699
10004
|
A = xb * xb + yb * yb - 1,
|
9700
|
-
B = 2 * (xa * xb + ya * yb
|
10005
|
+
B = 2 * (r1 + xa * xb + ya * yb),
|
9701
10006
|
C = xa * xa + ya * ya - r1 * r1,
|
9702
|
-
r = (
|
10007
|
+
r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);
|
9703
10008
|
return {
|
9704
|
-
x: xa + xb * r
|
9705
|
-
y: ya + yb * r
|
10009
|
+
x: x1 + xa + xb * r,
|
10010
|
+
y: y1 + ya + yb * r,
|
9706
10011
|
r: r
|
9707
10012
|
};
|
9708
10013
|
}
|
@@ -9730,12 +10035,15 @@ function intersects(a, b) {
|
|
9730
10035
|
var dx = b.x - a.x,
|
9731
10036
|
dy = b.y - a.y,
|
9732
10037
|
dr = a.r + b.r;
|
9733
|
-
return dr * dr > dx * dx + dy * dy;
|
10038
|
+
return dr * dr - 1e-6 > dx * dx + dy * dy;
|
9734
10039
|
}
|
9735
10040
|
|
9736
|
-
function
|
9737
|
-
var
|
9738
|
-
|
10041
|
+
function score(node) {
|
10042
|
+
var a = node._,
|
10043
|
+
b = node.next._,
|
10044
|
+
ab = a.r + b.r,
|
10045
|
+
dx = (a.x * b.r + b.x * a.r) / ab,
|
10046
|
+
dy = (a.y * b.r + b.y * a.r) / ab;
|
9739
10047
|
return dx * dx + dy * dy;
|
9740
10048
|
}
|
9741
10049
|
|
@@ -9748,7 +10056,7 @@ function Node$1(circle) {
|
|
9748
10056
|
function packEnclose(circles) {
|
9749
10057
|
if (!(n = circles.length)) return 0;
|
9750
10058
|
|
9751
|
-
var a, b, c, n;
|
10059
|
+
var a, b, c, n, aa, ca, i, j, k, sj, sk;
|
9752
10060
|
|
9753
10061
|
// Place the first circle.
|
9754
10062
|
a = circles[0], a.x = 0, a.y = 0;
|
@@ -9761,15 +10069,6 @@ function packEnclose(circles) {
|
|
9761
10069
|
// Place the third circle.
|
9762
10070
|
place(b, a, c = circles[2]);
|
9763
10071
|
|
9764
|
-
// Initialize the weighted centroid.
|
9765
|
-
var aa = a.r * a.r,
|
9766
|
-
ba = b.r * b.r,
|
9767
|
-
ca = c.r * c.r,
|
9768
|
-
oa = aa + ba + ca,
|
9769
|
-
ox = aa * a.x + ba * b.x + ca * c.x,
|
9770
|
-
oy = aa * a.y + ba * b.y + ca * c.y,
|
9771
|
-
cx, cy, i, j, k, sj, sk;
|
9772
|
-
|
9773
10072
|
// Initialize the front-chain using the first three circles a, b and c.
|
9774
10073
|
a = new Node$1(a), b = new Node$1(b), c = new Node$1(c);
|
9775
10074
|
a.next = c.previous = b;
|
@@ -9780,48 +10079,33 @@ function packEnclose(circles) {
|
|
9780
10079
|
pack: for (i = 3; i < n; ++i) {
|
9781
10080
|
place(a._, b._, c = circles[i]), c = new Node$1(c);
|
9782
10081
|
|
9783
|
-
// If there are only three elements in the front-chain…
|
9784
|
-
if ((k = a.previous) === (j = b.next)) {
|
9785
|
-
// If the new circle intersects the third circle,
|
9786
|
-
// rotate the front chain to try the next position.
|
9787
|
-
if (intersects(j._, c._)) {
|
9788
|
-
a = b, b = j, --i;
|
9789
|
-
continue pack;
|
9790
|
-
}
|
9791
|
-
}
|
9792
|
-
|
9793
10082
|
// Find the closest intersecting circle on the front-chain, if any.
|
9794
|
-
|
9795
|
-
|
9796
|
-
|
9797
|
-
|
9798
|
-
|
9799
|
-
|
9800
|
-
|
9801
|
-
|
9802
|
-
j = j.next, sj += j._.r;
|
9803
|
-
} else {
|
9804
|
-
if (intersects(k._, c._)) {
|
9805
|
-
a = k, a.next = b, b.previous = a, --i;
|
9806
|
-
continue pack;
|
9807
|
-
}
|
9808
|
-
k = k.previous, sk += k._.r;
|
10083
|
+
// “Closeness” is determined by linear distance along the front-chain.
|
10084
|
+
// “Ahead” or “behind” is likewise determined by linear distance.
|
10085
|
+
j = b.next, k = a.previous, sj = b._.r, sk = a._.r;
|
10086
|
+
do {
|
10087
|
+
if (sj <= sk) {
|
10088
|
+
if (intersects(j._, c._)) {
|
10089
|
+
b = j, a.next = b, b.previous = a, --i;
|
10090
|
+
continue pack;
|
9809
10091
|
}
|
9810
|
-
|
9811
|
-
|
10092
|
+
sj += j._.r, j = j.next;
|
10093
|
+
} else {
|
10094
|
+
if (intersects(k._, c._)) {
|
10095
|
+
a = k, a.next = b, b.previous = a, --i;
|
10096
|
+
continue pack;
|
10097
|
+
}
|
10098
|
+
sk += k._.r, k = k.previous;
|
10099
|
+
}
|
10100
|
+
} while (j !== k.next);
|
9812
10101
|
|
9813
10102
|
// Success! Insert the new circle c between a and b.
|
9814
10103
|
c.previous = a, c.next = b, a.next = b.previous = b = c;
|
9815
10104
|
|
9816
|
-
//
|
9817
|
-
|
9818
|
-
ox += ca * c._.x;
|
9819
|
-
oy += ca * c._.y;
|
9820
|
-
|
9821
|
-
// Compute the new closest circle a to centroid.
|
9822
|
-
aa = distance2(a._, cx = ox / oa, cy = oy / oa);
|
10105
|
+
// Compute the new closest circle pair to the centroid.
|
10106
|
+
aa = score(a);
|
9823
10107
|
while ((c = c.next) !== b) {
|
9824
|
-
if ((ca =
|
10108
|
+
if ((ca = score(c)) < aa) {
|
9825
10109
|
a = c, aa = ca;
|
9826
10110
|
}
|
9827
10111
|
}
|
@@ -10378,7 +10662,7 @@ function squarifyRatio(ratio, parent, x0, y0, x1, y1) {
|
|
10378
10662
|
return rows;
|
10379
10663
|
}
|
10380
10664
|
|
10381
|
-
var squarify = (
|
10665
|
+
var squarify = (function custom(ratio) {
|
10382
10666
|
|
10383
10667
|
function squarify(parent, x0, y0, x1, y1) {
|
10384
10668
|
squarifyRatio(ratio, parent, x0, y0, x1, y1);
|
@@ -10389,7 +10673,7 @@ var squarify = ((function custom(ratio) {
|
|
10389
10673
|
};
|
10390
10674
|
|
10391
10675
|
return squarify;
|
10392
|
-
})
|
10676
|
+
})(phi);
|
10393
10677
|
|
10394
10678
|
var index$3 = function() {
|
10395
10679
|
var tile = squarify,
|
@@ -10511,17 +10795,19 @@ var binary = function(parent, x0, y0, x1, y1) {
|
|
10511
10795
|
else hi = mid;
|
10512
10796
|
}
|
10513
10797
|
|
10798
|
+
if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;
|
10799
|
+
|
10514
10800
|
var valueLeft = sums[k] - valueOffset,
|
10515
10801
|
valueRight = value - valueLeft;
|
10516
10802
|
|
10517
|
-
if ((
|
10518
|
-
var yk = (y0 * valueRight + y1 * valueLeft) / value;
|
10519
|
-
partition(i, k, valueLeft, x0, y0, x1, yk);
|
10520
|
-
partition(k, j, valueRight, x0, yk, x1, y1);
|
10521
|
-
} else {
|
10803
|
+
if ((x1 - x0) > (y1 - y0)) {
|
10522
10804
|
var xk = (x0 * valueRight + x1 * valueLeft) / value;
|
10523
10805
|
partition(i, k, valueLeft, x0, y0, xk, y1);
|
10524
10806
|
partition(k, j, valueRight, xk, y0, x1, y1);
|
10807
|
+
} else {
|
10808
|
+
var yk = (y0 * valueRight + y1 * valueLeft) / value;
|
10809
|
+
partition(i, k, valueLeft, x0, y0, x1, yk);
|
10810
|
+
partition(k, j, valueRight, x0, yk, x1, y1);
|
10525
10811
|
}
|
10526
10812
|
}
|
10527
10813
|
};
|
@@ -10530,7 +10816,7 @@ var sliceDice = function(parent, x0, y0, x1, y1) {
|
|
10530
10816
|
(parent.depth & 1 ? treemapSlice : treemapDice)(parent, x0, y0, x1, y1);
|
10531
10817
|
};
|
10532
10818
|
|
10533
|
-
var resquarify = (
|
10819
|
+
var resquarify = (function custom(ratio) {
|
10534
10820
|
|
10535
10821
|
function resquarify(parent, x0, y0, x1, y1) {
|
10536
10822
|
if ((rows = parent._squarify) && (rows.ratio === ratio)) {
|
@@ -10561,7 +10847,7 @@ var resquarify = ((function custom(ratio) {
|
|
10561
10847
|
};
|
10562
10848
|
|
10563
10849
|
return resquarify;
|
10564
|
-
})
|
10850
|
+
})(phi);
|
10565
10851
|
|
10566
10852
|
var area$1 = function(polygon) {
|
10567
10853
|
var i = -1,
|
@@ -10604,7 +10890,7 @@ var centroid$1 = function(polygon) {
|
|
10604
10890
|
// the 3D cross product in a quadrant I Cartesian coordinate system (+x is
|
10605
10891
|
// right, +y is up). Returns a positive value if ABC is counter-clockwise,
|
10606
10892
|
// negative if clockwise, and zero if the points are collinear.
|
10607
|
-
var cross = function(a, b, c) {
|
10893
|
+
var cross$1 = function(a, b, c) {
|
10608
10894
|
return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);
|
10609
10895
|
};
|
10610
10896
|
|
@@ -10621,7 +10907,7 @@ function computeUpperHullIndexes(points) {
|
|
10621
10907
|
size = 2;
|
10622
10908
|
|
10623
10909
|
for (var i = 2; i < n; ++i) {
|
10624
|
-
while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;
|
10910
|
+
while (size > 1 && cross$1(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;
|
10625
10911
|
indexes[size++] = i;
|
10626
10912
|
}
|
10627
10913
|
|
@@ -10656,7 +10942,7 @@ var hull = function(points) {
|
|
10656
10942
|
return hull;
|
10657
10943
|
};
|
10658
10944
|
|
10659
|
-
var contains = function(polygon, point) {
|
10945
|
+
var contains$1 = function(polygon, point) {
|
10660
10946
|
var n = polygon.length,
|
10661
10947
|
p = polygon[n - 1],
|
10662
10948
|
x = point[0], y = point[1],
|
@@ -10697,12 +10983,11 @@ var length$2 = function(polygon) {
|
|
10697
10983
|
return perimeter;
|
10698
10984
|
};
|
10699
10985
|
|
10700
|
-
var slice$
|
10986
|
+
var slice$4 = [].slice;
|
10701
10987
|
|
10702
10988
|
var noabort = {};
|
10703
10989
|
|
10704
10990
|
function Queue(size) {
|
10705
|
-
if (!(size >= 1)) throw new Error;
|
10706
10991
|
this._size = size;
|
10707
10992
|
this._call =
|
10708
10993
|
this._error = null;
|
@@ -10717,9 +11002,10 @@ function Queue(size) {
|
|
10717
11002
|
Queue.prototype = queue.prototype = {
|
10718
11003
|
constructor: Queue,
|
10719
11004
|
defer: function(callback) {
|
10720
|
-
if (typeof callback !== "function"
|
11005
|
+
if (typeof callback !== "function") throw new Error("invalid callback");
|
11006
|
+
if (this._call) throw new Error("defer after await");
|
10721
11007
|
if (this._error != null) return this;
|
10722
|
-
var t = slice$
|
11008
|
+
var t = slice$4.call(arguments, 1);
|
10723
11009
|
t.push(callback);
|
10724
11010
|
++this._waiting, this._tasks.push(t);
|
10725
11011
|
poke$1(this);
|
@@ -10730,13 +11016,15 @@ Queue.prototype = queue.prototype = {
|
|
10730
11016
|
return this;
|
10731
11017
|
},
|
10732
11018
|
await: function(callback) {
|
10733
|
-
if (typeof callback !== "function"
|
11019
|
+
if (typeof callback !== "function") throw new Error("invalid callback");
|
11020
|
+
if (this._call) throw new Error("multiple await");
|
10734
11021
|
this._call = function(error, results) { callback.apply(null, [error].concat(results)); };
|
10735
11022
|
maybeNotify(this);
|
10736
11023
|
return this;
|
10737
11024
|
},
|
10738
11025
|
awaitAll: function(callback) {
|
10739
|
-
if (typeof callback !== "function"
|
11026
|
+
if (typeof callback !== "function") throw new Error("invalid callback");
|
11027
|
+
if (this._call) throw new Error("multiple await");
|
10740
11028
|
this._call = callback;
|
10741
11029
|
maybeNotify(this);
|
10742
11030
|
return this;
|
@@ -10812,66 +11100,108 @@ function maybeNotify(q) {
|
|
10812
11100
|
}
|
10813
11101
|
|
10814
11102
|
function queue(concurrency) {
|
10815
|
-
|
11103
|
+
if (concurrency == null) concurrency = Infinity;
|
11104
|
+
else if (!((concurrency = +concurrency) >= 1)) throw new Error("invalid concurrency");
|
11105
|
+
return new Queue(concurrency);
|
10816
11106
|
}
|
10817
11107
|
|
10818
|
-
var
|
10819
|
-
|
10820
|
-
max = max == null ? 1 : +max;
|
10821
|
-
if (arguments.length === 1) max = min, min = 0;
|
10822
|
-
else max -= min;
|
10823
|
-
return function() {
|
10824
|
-
return Math.random() * max + min;
|
10825
|
-
};
|
11108
|
+
var defaultSource$1 = function() {
|
11109
|
+
return Math.random();
|
10826
11110
|
};
|
10827
11111
|
|
10828
|
-
var
|
10829
|
-
|
10830
|
-
|
10831
|
-
|
10832
|
-
|
10833
|
-
|
11112
|
+
var uniform = (function sourceRandomUniform(source) {
|
11113
|
+
function randomUniform(min, max) {
|
11114
|
+
min = min == null ? 0 : +min;
|
11115
|
+
max = max == null ? 1 : +max;
|
11116
|
+
if (arguments.length === 1) max = min, min = 0;
|
11117
|
+
else max -= min;
|
11118
|
+
return function() {
|
11119
|
+
return source() * max + min;
|
11120
|
+
};
|
11121
|
+
}
|
10834
11122
|
|
10835
|
-
|
10836
|
-
if (x != null) y = x, x = null;
|
11123
|
+
randomUniform.source = sourceRandomUniform;
|
10837
11124
|
|
10838
|
-
|
10839
|
-
|
10840
|
-
x = Math.random() * 2 - 1;
|
10841
|
-
y = Math.random() * 2 - 1;
|
10842
|
-
r = x * x + y * y;
|
10843
|
-
} while (!r || r > 1);
|
11125
|
+
return randomUniform;
|
11126
|
+
})(defaultSource$1);
|
10844
11127
|
|
10845
|
-
|
10846
|
-
|
10847
|
-
|
11128
|
+
var normal = (function sourceRandomNormal(source) {
|
11129
|
+
function randomNormal(mu, sigma) {
|
11130
|
+
var x, r;
|
11131
|
+
mu = mu == null ? 0 : +mu;
|
11132
|
+
sigma = sigma == null ? 1 : +sigma;
|
11133
|
+
return function() {
|
11134
|
+
var y;
|
10848
11135
|
|
10849
|
-
|
10850
|
-
|
10851
|
-
return function() {
|
10852
|
-
return Math.exp(randomNormal());
|
10853
|
-
};
|
10854
|
-
};
|
11136
|
+
// If available, use the second previously-generated uniform random.
|
11137
|
+
if (x != null) y = x, x = null;
|
10855
11138
|
|
10856
|
-
|
10857
|
-
|
10858
|
-
|
10859
|
-
|
10860
|
-
|
10861
|
-
};
|
11139
|
+
// Otherwise, generate a new x and y.
|
11140
|
+
else do {
|
11141
|
+
x = source() * 2 - 1;
|
11142
|
+
y = source() * 2 - 1;
|
11143
|
+
r = x * x + y * y;
|
11144
|
+
} while (!r || r > 1);
|
10862
11145
|
|
10863
|
-
|
10864
|
-
|
10865
|
-
|
10866
|
-
return randomIrwinHall() / n;
|
10867
|
-
};
|
10868
|
-
};
|
11146
|
+
return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);
|
11147
|
+
};
|
11148
|
+
}
|
10869
11149
|
|
10870
|
-
|
10871
|
-
|
10872
|
-
|
10873
|
-
|
10874
|
-
|
11150
|
+
randomNormal.source = sourceRandomNormal;
|
11151
|
+
|
11152
|
+
return randomNormal;
|
11153
|
+
})(defaultSource$1);
|
11154
|
+
|
11155
|
+
var logNormal = (function sourceRandomLogNormal(source) {
|
11156
|
+
function randomLogNormal() {
|
11157
|
+
var randomNormal = normal.source(source).apply(this, arguments);
|
11158
|
+
return function() {
|
11159
|
+
return Math.exp(randomNormal());
|
11160
|
+
};
|
11161
|
+
}
|
11162
|
+
|
11163
|
+
randomLogNormal.source = sourceRandomLogNormal;
|
11164
|
+
|
11165
|
+
return randomLogNormal;
|
11166
|
+
})(defaultSource$1);
|
11167
|
+
|
11168
|
+
var irwinHall = (function sourceRandomIrwinHall(source) {
|
11169
|
+
function randomIrwinHall(n) {
|
11170
|
+
return function() {
|
11171
|
+
for (var sum = 0, i = 0; i < n; ++i) sum += source();
|
11172
|
+
return sum;
|
11173
|
+
};
|
11174
|
+
}
|
11175
|
+
|
11176
|
+
randomIrwinHall.source = sourceRandomIrwinHall;
|
11177
|
+
|
11178
|
+
return randomIrwinHall;
|
11179
|
+
})(defaultSource$1);
|
11180
|
+
|
11181
|
+
var bates = (function sourceRandomBates(source) {
|
11182
|
+
function randomBates(n) {
|
11183
|
+
var randomIrwinHall = irwinHall.source(source)(n);
|
11184
|
+
return function() {
|
11185
|
+
return randomIrwinHall() / n;
|
11186
|
+
};
|
11187
|
+
}
|
11188
|
+
|
11189
|
+
randomBates.source = sourceRandomBates;
|
11190
|
+
|
11191
|
+
return randomBates;
|
11192
|
+
})(defaultSource$1);
|
11193
|
+
|
11194
|
+
var exponential$1 = (function sourceRandomExponential(source) {
|
11195
|
+
function randomExponential(lambda) {
|
11196
|
+
return function() {
|
11197
|
+
return -Math.log(1 - source()) / lambda;
|
11198
|
+
};
|
11199
|
+
}
|
11200
|
+
|
11201
|
+
randomExponential.source = sourceRandomExponential;
|
11202
|
+
|
11203
|
+
return randomExponential;
|
11204
|
+
})(defaultSource$1);
|
10875
11205
|
|
10876
11206
|
var request = function(url, callback) {
|
10877
11207
|
var request,
|
@@ -11074,7 +11404,7 @@ var tsv$1 = dsv$1("text/tab-separated-values", tsvParse);
|
|
11074
11404
|
var array$2 = Array.prototype;
|
11075
11405
|
|
11076
11406
|
var map$3 = array$2.map;
|
11077
|
-
var slice$
|
11407
|
+
var slice$5 = array$2.slice;
|
11078
11408
|
|
11079
11409
|
var implicit = {name: "implicit"};
|
11080
11410
|
|
@@ -11083,7 +11413,7 @@ function ordinal(range) {
|
|
11083
11413
|
domain = [],
|
11084
11414
|
unknown = implicit;
|
11085
11415
|
|
11086
|
-
range = range == null ? [] : slice$
|
11416
|
+
range = range == null ? [] : slice$5.call(range);
|
11087
11417
|
|
11088
11418
|
function scale(d) {
|
11089
11419
|
var key = d + "", i = index.get(key);
|
@@ -11103,7 +11433,7 @@ function ordinal(range) {
|
|
11103
11433
|
};
|
11104
11434
|
|
11105
11435
|
scale.range = function(_) {
|
11106
|
-
return arguments.length ? (range = slice$
|
11436
|
+
return arguments.length ? (range = slice$5.call(_), scale) : range.slice();
|
11107
11437
|
};
|
11108
11438
|
|
11109
11439
|
scale.unknown = function(_) {
|
@@ -11124,7 +11454,7 @@ function band() {
|
|
11124
11454
|
var scale = ordinal().unknown(undefined),
|
11125
11455
|
domain = scale.domain,
|
11126
11456
|
ordinalRange = scale.range,
|
11127
|
-
range
|
11457
|
+
range = [0, 1],
|
11128
11458
|
step,
|
11129
11459
|
bandwidth,
|
11130
11460
|
round = false,
|
@@ -11136,9 +11466,9 @@ function band() {
|
|
11136
11466
|
|
11137
11467
|
function rescale() {
|
11138
11468
|
var n = domain().length,
|
11139
|
-
reverse = range
|
11140
|
-
start = range
|
11141
|
-
stop = range
|
11469
|
+
reverse = range[1] < range[0],
|
11470
|
+
start = range[reverse - 0],
|
11471
|
+
stop = range[1 - reverse];
|
11142
11472
|
step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);
|
11143
11473
|
if (round) step = Math.floor(step);
|
11144
11474
|
start += (stop - start - step * (n - paddingInner)) * align;
|
@@ -11153,11 +11483,11 @@ function band() {
|
|
11153
11483
|
};
|
11154
11484
|
|
11155
11485
|
scale.range = function(_) {
|
11156
|
-
return arguments.length ? (range
|
11486
|
+
return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();
|
11157
11487
|
};
|
11158
11488
|
|
11159
11489
|
scale.rangeRound = function(_) {
|
11160
|
-
return range
|
11490
|
+
return range = [+_[0], +_[1]], round = true, rescale();
|
11161
11491
|
};
|
11162
11492
|
|
11163
11493
|
scale.bandwidth = function() {
|
@@ -11191,7 +11521,7 @@ function band() {
|
|
11191
11521
|
scale.copy = function() {
|
11192
11522
|
return band()
|
11193
11523
|
.domain(domain())
|
11194
|
-
.range(range
|
11524
|
+
.range(range)
|
11195
11525
|
.round(round)
|
11196
11526
|
.paddingInner(paddingInner)
|
11197
11527
|
.paddingOuter(paddingOuter)
|
@@ -11225,7 +11555,7 @@ var constant$9 = function(x) {
|
|
11225
11555
|
};
|
11226
11556
|
};
|
11227
11557
|
|
11228
|
-
var number$
|
11558
|
+
var number$2 = function(x) {
|
11229
11559
|
return +x;
|
11230
11560
|
};
|
11231
11561
|
|
@@ -11244,22 +11574,22 @@ function deinterpolateClamp(deinterpolate) {
|
|
11244
11574
|
};
|
11245
11575
|
}
|
11246
11576
|
|
11247
|
-
function reinterpolateClamp(reinterpolate) {
|
11577
|
+
function reinterpolateClamp(reinterpolate$$1) {
|
11248
11578
|
return function(a, b) {
|
11249
|
-
var r = reinterpolate(a = +a, b = +b);
|
11579
|
+
var r = reinterpolate$$1(a = +a, b = +b);
|
11250
11580
|
return function(t) { return t <= 0 ? a : t >= 1 ? b : r(t); };
|
11251
11581
|
};
|
11252
11582
|
}
|
11253
11583
|
|
11254
|
-
function bimap(domain, range
|
11255
|
-
var d0 = domain[0], d1 = domain[1], r0 = range
|
11256
|
-
if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);
|
11257
|
-
else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);
|
11584
|
+
function bimap(domain, range, deinterpolate, reinterpolate$$1) {
|
11585
|
+
var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];
|
11586
|
+
if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate$$1(r1, r0);
|
11587
|
+
else d0 = deinterpolate(d0, d1), r0 = reinterpolate$$1(r0, r1);
|
11258
11588
|
return function(x) { return r0(d0(x)); };
|
11259
11589
|
}
|
11260
11590
|
|
11261
|
-
function polymap(domain, range
|
11262
|
-
var j = Math.min(domain.length, range
|
11591
|
+
function polymap(domain, range, deinterpolate, reinterpolate$$1) {
|
11592
|
+
var j = Math.min(domain.length, range.length) - 1,
|
11263
11593
|
d = new Array(j),
|
11264
11594
|
r = new Array(j),
|
11265
11595
|
i = -1;
|
@@ -11267,12 +11597,12 @@ function polymap(domain, range$$1, deinterpolate, reinterpolate) {
|
|
11267
11597
|
// Reverse descending domains.
|
11268
11598
|
if (domain[j] < domain[0]) {
|
11269
11599
|
domain = domain.slice().reverse();
|
11270
|
-
range
|
11600
|
+
range = range.slice().reverse();
|
11271
11601
|
}
|
11272
11602
|
|
11273
11603
|
while (++i < j) {
|
11274
11604
|
d[i] = deinterpolate(domain[i], domain[i + 1]);
|
11275
|
-
r[i] = reinterpolate(range
|
11605
|
+
r[i] = reinterpolate$$1(range[i], range[i + 1]);
|
11276
11606
|
}
|
11277
11607
|
|
11278
11608
|
return function(x) {
|
@@ -11291,39 +11621,39 @@ function copy(source, target) {
|
|
11291
11621
|
|
11292
11622
|
// deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].
|
11293
11623
|
// reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].
|
11294
|
-
function continuous(deinterpolate, reinterpolate) {
|
11624
|
+
function continuous(deinterpolate, reinterpolate$$1) {
|
11295
11625
|
var domain = unit,
|
11296
|
-
range
|
11297
|
-
interpolate
|
11626
|
+
range = unit,
|
11627
|
+
interpolate = interpolateValue,
|
11298
11628
|
clamp = false,
|
11299
11629
|
piecewise,
|
11300
11630
|
output,
|
11301
11631
|
input;
|
11302
11632
|
|
11303
11633
|
function rescale() {
|
11304
|
-
piecewise = Math.min(domain.length, range
|
11634
|
+
piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;
|
11305
11635
|
output = input = null;
|
11306
11636
|
return scale;
|
11307
11637
|
}
|
11308
11638
|
|
11309
11639
|
function scale(x) {
|
11310
|
-
return (output || (output = piecewise(domain, range
|
11640
|
+
return (output || (output = piecewise(domain, range, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate)))(+x);
|
11311
11641
|
}
|
11312
11642
|
|
11313
11643
|
scale.invert = function(y) {
|
11314
|
-
return (input || (input = piecewise(range
|
11644
|
+
return (input || (input = piecewise(range, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate$$1) : reinterpolate$$1)))(+y);
|
11315
11645
|
};
|
11316
11646
|
|
11317
11647
|
scale.domain = function(_) {
|
11318
|
-
return arguments.length ? (domain = map$3.call(_, number$
|
11648
|
+
return arguments.length ? (domain = map$3.call(_, number$2), rescale()) : domain.slice();
|
11319
11649
|
};
|
11320
11650
|
|
11321
11651
|
scale.range = function(_) {
|
11322
|
-
return arguments.length ? (range
|
11652
|
+
return arguments.length ? (range = slice$5.call(_), rescale()) : range.slice();
|
11323
11653
|
};
|
11324
11654
|
|
11325
11655
|
scale.rangeRound = function(_) {
|
11326
|
-
return range
|
11656
|
+
return range = slice$5.call(_), interpolate = interpolateRound, rescale();
|
11327
11657
|
};
|
11328
11658
|
|
11329
11659
|
scale.clamp = function(_) {
|
@@ -11331,7 +11661,7 @@ function continuous(deinterpolate, reinterpolate) {
|
|
11331
11661
|
};
|
11332
11662
|
|
11333
11663
|
scale.interpolate = function(_) {
|
11334
|
-
return arguments.length ? (interpolate
|
11664
|
+
return arguments.length ? (interpolate = _, rescale()) : interpolate;
|
11335
11665
|
};
|
11336
11666
|
|
11337
11667
|
return rescale();
|
@@ -11379,17 +11709,39 @@ function linearish(scale) {
|
|
11379
11709
|
};
|
11380
11710
|
|
11381
11711
|
scale.nice = function(count) {
|
11712
|
+
if (count == null) count = 10;
|
11713
|
+
|
11382
11714
|
var d = domain(),
|
11383
|
-
|
11384
|
-
|
11385
|
-
start = d[
|
11386
|
-
stop = d[
|
11387
|
-
step
|
11388
|
-
|
11389
|
-
if (
|
11390
|
-
step =
|
11391
|
-
|
11392
|
-
|
11715
|
+
i0 = 0,
|
11716
|
+
i1 = d.length - 1,
|
11717
|
+
start = d[i0],
|
11718
|
+
stop = d[i1],
|
11719
|
+
step;
|
11720
|
+
|
11721
|
+
if (stop < start) {
|
11722
|
+
step = start, start = stop, stop = step;
|
11723
|
+
step = i0, i0 = i1, i1 = step;
|
11724
|
+
}
|
11725
|
+
|
11726
|
+
step = tickIncrement(start, stop, count);
|
11727
|
+
|
11728
|
+
if (step > 0) {
|
11729
|
+
start = Math.floor(start / step) * step;
|
11730
|
+
stop = Math.ceil(stop / step) * step;
|
11731
|
+
step = tickIncrement(start, stop, count);
|
11732
|
+
} else if (step < 0) {
|
11733
|
+
start = Math.ceil(start * step) / step;
|
11734
|
+
stop = Math.floor(stop * step) / step;
|
11735
|
+
step = tickIncrement(start, stop, count);
|
11736
|
+
}
|
11737
|
+
|
11738
|
+
if (step > 0) {
|
11739
|
+
d[i0] = Math.floor(start / step) * step;
|
11740
|
+
d[i1] = Math.ceil(stop / step) * step;
|
11741
|
+
domain(d);
|
11742
|
+
} else if (step < 0) {
|
11743
|
+
d[i0] = Math.ceil(start * step) / step;
|
11744
|
+
d[i1] = Math.floor(stop * step) / step;
|
11393
11745
|
domain(d);
|
11394
11746
|
}
|
11395
11747
|
|
@@ -11419,7 +11771,7 @@ function identity$6() {
|
|
11419
11771
|
scale.invert = scale;
|
11420
11772
|
|
11421
11773
|
scale.domain = scale.range = function(_) {
|
11422
|
-
return arguments.length ? (domain = map$3.call(_, number$
|
11774
|
+
return arguments.length ? (domain = map$3.call(_, number$2), scale) : domain.slice();
|
11423
11775
|
};
|
11424
11776
|
|
11425
11777
|
scale.copy = function() {
|
@@ -11606,24 +11958,24 @@ function sqrt$1() {
|
|
11606
11958
|
return pow$1().exponent(0.5);
|
11607
11959
|
}
|
11608
11960
|
|
11609
|
-
function quantile
|
11961
|
+
function quantile() {
|
11610
11962
|
var domain = [],
|
11611
|
-
range
|
11963
|
+
range = [],
|
11612
11964
|
thresholds = [];
|
11613
11965
|
|
11614
11966
|
function rescale() {
|
11615
|
-
var i = 0, n = Math.max(1, range
|
11967
|
+
var i = 0, n = Math.max(1, range.length);
|
11616
11968
|
thresholds = new Array(n - 1);
|
11617
11969
|
while (++i < n) thresholds[i - 1] = threshold(domain, i / n);
|
11618
11970
|
return scale;
|
11619
11971
|
}
|
11620
11972
|
|
11621
11973
|
function scale(x) {
|
11622
|
-
if (!isNaN(x = +x)) return range
|
11974
|
+
if (!isNaN(x = +x)) return range[bisectRight(thresholds, x)];
|
11623
11975
|
}
|
11624
11976
|
|
11625
11977
|
scale.invertExtent = function(y) {
|
11626
|
-
var i = range
|
11978
|
+
var i = range.indexOf(y);
|
11627
11979
|
return i < 0 ? [NaN, NaN] : [
|
11628
11980
|
i > 0 ? thresholds[i - 1] : domain[0],
|
11629
11981
|
i < thresholds.length ? thresholds[i] : domain[domain.length - 1]
|
@@ -11639,7 +11991,7 @@ function quantile$$1() {
|
|
11639
11991
|
};
|
11640
11992
|
|
11641
11993
|
scale.range = function(_) {
|
11642
|
-
return arguments.length ? (range
|
11994
|
+
return arguments.length ? (range = slice$5.call(_), rescale()) : range.slice();
|
11643
11995
|
};
|
11644
11996
|
|
11645
11997
|
scale.quantiles = function() {
|
@@ -11647,9 +11999,9 @@ function quantile$$1() {
|
|
11647
11999
|
};
|
11648
12000
|
|
11649
12001
|
scale.copy = function() {
|
11650
|
-
return quantile
|
12002
|
+
return quantile()
|
11651
12003
|
.domain(domain)
|
11652
|
-
.range(range
|
12004
|
+
.range(range);
|
11653
12005
|
};
|
11654
12006
|
|
11655
12007
|
return scale;
|
@@ -11660,10 +12012,10 @@ function quantize$1() {
|
|
11660
12012
|
x1 = 1,
|
11661
12013
|
n = 1,
|
11662
12014
|
domain = [0.5],
|
11663
|
-
range
|
12015
|
+
range = [0, 1];
|
11664
12016
|
|
11665
12017
|
function scale(x) {
|
11666
|
-
if (x <= x) return range
|
12018
|
+
if (x <= x) return range[bisectRight(domain, x, 0, n)];
|
11667
12019
|
}
|
11668
12020
|
|
11669
12021
|
function rescale() {
|
@@ -11678,11 +12030,11 @@ function quantize$1() {
|
|
11678
12030
|
};
|
11679
12031
|
|
11680
12032
|
scale.range = function(_) {
|
11681
|
-
return arguments.length ? (n = (range
|
12033
|
+
return arguments.length ? (n = (range = slice$5.call(_)).length - 1, rescale()) : range.slice();
|
11682
12034
|
};
|
11683
12035
|
|
11684
12036
|
scale.invertExtent = function(y) {
|
11685
|
-
var i = range
|
12037
|
+
var i = range.indexOf(y);
|
11686
12038
|
return i < 0 ? [NaN, NaN]
|
11687
12039
|
: i < 1 ? [x0, domain[0]]
|
11688
12040
|
: i >= n ? [domain[n - 1], x1]
|
@@ -11692,7 +12044,7 @@ function quantize$1() {
|
|
11692
12044
|
scale.copy = function() {
|
11693
12045
|
return quantize$1()
|
11694
12046
|
.domain([x0, x1])
|
11695
|
-
.range(range
|
12047
|
+
.range(range);
|
11696
12048
|
};
|
11697
12049
|
|
11698
12050
|
return linearish(scale);
|
@@ -11700,30 +12052,30 @@ function quantize$1() {
|
|
11700
12052
|
|
11701
12053
|
function threshold$1() {
|
11702
12054
|
var domain = [0.5],
|
11703
|
-
range
|
12055
|
+
range = [0, 1],
|
11704
12056
|
n = 1;
|
11705
12057
|
|
11706
12058
|
function scale(x) {
|
11707
|
-
if (x <= x) return range
|
12059
|
+
if (x <= x) return range[bisectRight(domain, x, 0, n)];
|
11708
12060
|
}
|
11709
12061
|
|
11710
12062
|
scale.domain = function(_) {
|
11711
|
-
return arguments.length ? (domain = slice$
|
12063
|
+
return arguments.length ? (domain = slice$5.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();
|
11712
12064
|
};
|
11713
12065
|
|
11714
12066
|
scale.range = function(_) {
|
11715
|
-
return arguments.length ? (range
|
12067
|
+
return arguments.length ? (range = slice$5.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();
|
11716
12068
|
};
|
11717
12069
|
|
11718
12070
|
scale.invertExtent = function(y) {
|
11719
|
-
var i = range
|
12071
|
+
var i = range.indexOf(y);
|
11720
12072
|
return [domain[i - 1], domain[i]];
|
11721
12073
|
};
|
11722
12074
|
|
11723
12075
|
scale.copy = function() {
|
11724
12076
|
return threshold$1()
|
11725
12077
|
.domain(domain)
|
11726
|
-
.range(range
|
12078
|
+
.range(range);
|
11727
12079
|
};
|
11728
12080
|
|
11729
12081
|
return scale;
|
@@ -11767,7 +12119,13 @@ function newInterval(floori, offseti, count, field) {
|
|
11767
12119
|
return newInterval(function(date) {
|
11768
12120
|
if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);
|
11769
12121
|
}, function(date, step) {
|
11770
|
-
if (date >= date)
|
12122
|
+
if (date >= date) {
|
12123
|
+
if (step < 0) while (++step <= 0) {
|
12124
|
+
while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty
|
12125
|
+
} else while (--step >= 0) {
|
12126
|
+
while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty
|
12127
|
+
}
|
12128
|
+
}
|
11771
12129
|
});
|
11772
12130
|
};
|
11773
12131
|
|
@@ -12620,7 +12978,7 @@ function date$1(t) {
|
|
12620
12978
|
return new Date(t);
|
12621
12979
|
}
|
12622
12980
|
|
12623
|
-
function number$
|
12981
|
+
function number$3(t) {
|
12624
12982
|
return t instanceof Date ? +t : +new Date(+t);
|
12625
12983
|
}
|
12626
12984
|
|
@@ -12659,39 +13017,39 @@ function calendar(year$$1, month$$1, week, day$$1, hour$$1, minute$$1, second$$1
|
|
12659
13017
|
[ year$$1, 1, durationYear ]
|
12660
13018
|
];
|
12661
13019
|
|
12662
|
-
function tickFormat(date) {
|
12663
|
-
return (second$$1(date) < date ? formatMillisecond
|
12664
|
-
: minute$$1(date) < date ? formatSecond
|
12665
|
-
: hour$$1(date) < date ? formatMinute
|
12666
|
-
: day$$1(date) < date ? formatHour
|
12667
|
-
: month$$1(date) < date ? (week(date) < date ? formatDay : formatWeek)
|
12668
|
-
: year$$1(date) < date ? formatMonth
|
12669
|
-
: formatYear)(date);
|
13020
|
+
function tickFormat(date$$1) {
|
13021
|
+
return (second$$1(date$$1) < date$$1 ? formatMillisecond
|
13022
|
+
: minute$$1(date$$1) < date$$1 ? formatSecond
|
13023
|
+
: hour$$1(date$$1) < date$$1 ? formatMinute
|
13024
|
+
: day$$1(date$$1) < date$$1 ? formatHour
|
13025
|
+
: month$$1(date$$1) < date$$1 ? (week(date$$1) < date$$1 ? formatDay : formatWeek)
|
13026
|
+
: year$$1(date$$1) < date$$1 ? formatMonth
|
13027
|
+
: formatYear)(date$$1);
|
12670
13028
|
}
|
12671
13029
|
|
12672
|
-
function tickInterval(interval, start, stop, step) {
|
12673
|
-
if (interval == null) interval = 10;
|
13030
|
+
function tickInterval(interval$$1, start, stop, step) {
|
13031
|
+
if (interval$$1 == null) interval$$1 = 10;
|
12674
13032
|
|
12675
13033
|
// If a desired tick count is specified, pick a reasonable tick interval
|
12676
13034
|
// based on the extent of the domain and a rough estimate of tick size.
|
12677
13035
|
// Otherwise, assume interval is already a time interval and use it.
|
12678
|
-
if (typeof interval === "number") {
|
12679
|
-
var target = Math.abs(stop - start) / interval,
|
13036
|
+
if (typeof interval$$1 === "number") {
|
13037
|
+
var target = Math.abs(stop - start) / interval$$1,
|
12680
13038
|
i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);
|
12681
13039
|
if (i === tickIntervals.length) {
|
12682
|
-
step = tickStep(start / durationYear, stop / durationYear, interval);
|
12683
|
-
interval = year$$1;
|
13040
|
+
step = tickStep(start / durationYear, stop / durationYear, interval$$1);
|
13041
|
+
interval$$1 = year$$1;
|
12684
13042
|
} else if (i) {
|
12685
13043
|
i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];
|
12686
13044
|
step = i[1];
|
12687
|
-
interval = i[0];
|
13045
|
+
interval$$1 = i[0];
|
12688
13046
|
} else {
|
12689
|
-
step = tickStep(start, stop, interval);
|
12690
|
-
interval = millisecond$$1;
|
13047
|
+
step = tickStep(start, stop, interval$$1);
|
13048
|
+
interval$$1 = millisecond$$1;
|
12691
13049
|
}
|
12692
13050
|
}
|
12693
13051
|
|
12694
|
-
return step == null ? interval : interval.every(step);
|
13052
|
+
return step == null ? interval$$1 : interval$$1.every(step);
|
12695
13053
|
}
|
12696
13054
|
|
12697
13055
|
scale.invert = function(y) {
|
@@ -12699,17 +13057,17 @@ function calendar(year$$1, month$$1, week, day$$1, hour$$1, minute$$1, second$$1
|
|
12699
13057
|
};
|
12700
13058
|
|
12701
13059
|
scale.domain = function(_) {
|
12702
|
-
return arguments.length ? domain(map$3.call(_, number$
|
13060
|
+
return arguments.length ? domain(map$3.call(_, number$3)) : domain().map(date$1);
|
12703
13061
|
};
|
12704
13062
|
|
12705
|
-
scale.ticks = function(interval, step) {
|
13063
|
+
scale.ticks = function(interval$$1, step) {
|
12706
13064
|
var d = domain(),
|
12707
13065
|
t0 = d[0],
|
12708
13066
|
t1 = d[d.length - 1],
|
12709
13067
|
r = t1 < t0,
|
12710
13068
|
t;
|
12711
13069
|
if (r) t = t0, t0 = t1, t1 = t;
|
12712
|
-
t = tickInterval(interval, t0, t1, step);
|
13070
|
+
t = tickInterval(interval$$1, t0, t1, step);
|
12713
13071
|
t = t ? t.range(t0, t1 + 1) : []; // inclusive stop
|
12714
13072
|
return r ? t.reverse() : t;
|
12715
13073
|
};
|
@@ -12718,10 +13076,10 @@ function calendar(year$$1, month$$1, week, day$$1, hour$$1, minute$$1, second$$1
|
|
12718
13076
|
return specifier == null ? tickFormat : format(specifier);
|
12719
13077
|
};
|
12720
13078
|
|
12721
|
-
scale.nice = function(interval, step) {
|
13079
|
+
scale.nice = function(interval$$1, step) {
|
12722
13080
|
var d = domain();
|
12723
|
-
return (interval = tickInterval(interval, d[0], d[d.length - 1], step))
|
12724
|
-
? domain(nice(d, interval))
|
13081
|
+
return (interval$$1 = tickInterval(interval$$1, d[0], d[d.length - 1], step))
|
13082
|
+
? domain(nice(d, interval$$1))
|
12725
13083
|
: scale;
|
12726
13084
|
};
|
12727
13085
|
|
@@ -12821,11 +13179,27 @@ var constant$10 = function(x) {
|
|
12821
13179
|
};
|
12822
13180
|
};
|
12823
13181
|
|
13182
|
+
var abs$1 = Math.abs;
|
13183
|
+
var atan2$1 = Math.atan2;
|
13184
|
+
var cos$2 = Math.cos;
|
13185
|
+
var max$2 = Math.max;
|
13186
|
+
var min$1 = Math.min;
|
13187
|
+
var sin$2 = Math.sin;
|
13188
|
+
var sqrt$2 = Math.sqrt;
|
13189
|
+
|
12824
13190
|
var epsilon$3 = 1e-12;
|
12825
13191
|
var pi$4 = Math.PI;
|
12826
13192
|
var halfPi$3 = pi$4 / 2;
|
12827
13193
|
var tau$4 = 2 * pi$4;
|
12828
13194
|
|
13195
|
+
function acos$1(x) {
|
13196
|
+
return x > 1 ? 0 : x < -1 ? pi$4 : Math.acos(x);
|
13197
|
+
}
|
13198
|
+
|
13199
|
+
function asin$1(x) {
|
13200
|
+
return x >= 1 ? halfPi$3 : x <= -1 ? -halfPi$3 : Math.asin(x);
|
13201
|
+
}
|
13202
|
+
|
12829
13203
|
function arcInnerRadius(d) {
|
12830
13204
|
return d.innerRadius;
|
12831
13205
|
}
|
@@ -12846,10 +13220,6 @@ function arcPadAngle(d) {
|
|
12846
13220
|
return d && d.padAngle; // Note: optional!
|
12847
13221
|
}
|
12848
13222
|
|
12849
|
-
function asin$1(x) {
|
12850
|
-
return x >= 1 ? halfPi$3 : x <= -1 ? -halfPi$3 : Math.asin(x);
|
12851
|
-
}
|
12852
|
-
|
12853
13223
|
function intersect(x0, y0, x1, y1, x2, y2, x3, y3) {
|
12854
13224
|
var x10 = x1 - x0, y10 = y1 - y0,
|
12855
13225
|
x32 = x3 - x2, y32 = y3 - y2,
|
@@ -12862,7 +13232,7 @@ function intersect(x0, y0, x1, y1, x2, y2, x3, y3) {
|
|
12862
13232
|
function cornerTangents(x0, y0, x1, y1, r1, rc, cw) {
|
12863
13233
|
var x01 = x0 - x1,
|
12864
13234
|
y01 = y0 - y1,
|
12865
|
-
lo = (cw ? rc : -rc) /
|
13235
|
+
lo = (cw ? rc : -rc) / sqrt$2(x01 * x01 + y01 * y01),
|
12866
13236
|
ox = lo * y01,
|
12867
13237
|
oy = -lo * x01,
|
12868
13238
|
x11 = x0 + ox,
|
@@ -12876,7 +13246,7 @@ function cornerTangents(x0, y0, x1, y1, r1, rc, cw) {
|
|
12876
13246
|
d2 = dx * dx + dy * dy,
|
12877
13247
|
r = r1 - rc,
|
12878
13248
|
D = x11 * y10 - x10 * y11,
|
12879
|
-
d = (dy < 0 ? -1 : 1) *
|
13249
|
+
d = (dy < 0 ? -1 : 1) * sqrt$2(max$2(0, r * r * d2 - D * D)),
|
12880
13250
|
cx0 = (D * dy - dx * d) / d2,
|
12881
13251
|
cy0 = (-D * dx - dy * d) / d2,
|
12882
13252
|
cx1 = (D * dy + dx * d) / d2,
|
@@ -12917,7 +13287,7 @@ var arc = function() {
|
|
12917
13287
|
r1 = +outerRadius.apply(this, arguments),
|
12918
13288
|
a0 = startAngle.apply(this, arguments) - halfPi$3,
|
12919
13289
|
a1 = endAngle.apply(this, arguments) - halfPi$3,
|
12920
|
-
da =
|
13290
|
+
da = abs$1(a1 - a0),
|
12921
13291
|
cw = a1 > a0;
|
12922
13292
|
|
12923
13293
|
if (!context) context = buffer = path();
|
@@ -12930,10 +13300,10 @@ var arc = function() {
|
|
12930
13300
|
|
12931
13301
|
// Or is it a circle or annulus?
|
12932
13302
|
else if (da > tau$4 - epsilon$3) {
|
12933
|
-
context.moveTo(r1 *
|
13303
|
+
context.moveTo(r1 * cos$2(a0), r1 * sin$2(a0));
|
12934
13304
|
context.arc(0, 0, r1, a0, a1, !cw);
|
12935
13305
|
if (r0 > epsilon$3) {
|
12936
|
-
context.moveTo(r0 *
|
13306
|
+
context.moveTo(r0 * cos$2(a1), r0 * sin$2(a1));
|
12937
13307
|
context.arc(0, 0, r0, a1, a0, cw);
|
12938
13308
|
}
|
12939
13309
|
}
|
@@ -12947,8 +13317,8 @@ var arc = function() {
|
|
12947
13317
|
da0 = da,
|
12948
13318
|
da1 = da,
|
12949
13319
|
ap = padAngle.apply(this, arguments) / 2,
|
12950
|
-
rp = (ap > epsilon$3) && (padRadius ? +padRadius.apply(this, arguments) :
|
12951
|
-
rc =
|
13320
|
+
rp = (ap > epsilon$3) && (padRadius ? +padRadius.apply(this, arguments) : sqrt$2(r0 * r0 + r1 * r1)),
|
13321
|
+
rc = min$1(abs$1(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),
|
12952
13322
|
rc0 = rc,
|
12953
13323
|
rc1 = rc,
|
12954
13324
|
t0,
|
@@ -12956,25 +13326,25 @@ var arc = function() {
|
|
12956
13326
|
|
12957
13327
|
// Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.
|
12958
13328
|
if (rp > epsilon$3) {
|
12959
|
-
var p0 = asin$1(rp / r0 *
|
12960
|
-
p1 = asin$1(rp / r1 *
|
13329
|
+
var p0 = asin$1(rp / r0 * sin$2(ap)),
|
13330
|
+
p1 = asin$1(rp / r1 * sin$2(ap));
|
12961
13331
|
if ((da0 -= p0 * 2) > epsilon$3) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;
|
12962
13332
|
else da0 = 0, a00 = a10 = (a0 + a1) / 2;
|
12963
13333
|
if ((da1 -= p1 * 2) > epsilon$3) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;
|
12964
13334
|
else da1 = 0, a01 = a11 = (a0 + a1) / 2;
|
12965
13335
|
}
|
12966
13336
|
|
12967
|
-
var x01 = r1 *
|
12968
|
-
y01 = r1 *
|
12969
|
-
x10 = r0 *
|
12970
|
-
y10 = r0 *
|
13337
|
+
var x01 = r1 * cos$2(a01),
|
13338
|
+
y01 = r1 * sin$2(a01),
|
13339
|
+
x10 = r0 * cos$2(a10),
|
13340
|
+
y10 = r0 * sin$2(a10);
|
12971
13341
|
|
12972
13342
|
// Apply rounded corners?
|
12973
13343
|
if (rc > epsilon$3) {
|
12974
|
-
var x11 = r1 *
|
12975
|
-
y11 = r1 *
|
12976
|
-
x00 = r0 *
|
12977
|
-
y00 = r0 *
|
13344
|
+
var x11 = r1 * cos$2(a11),
|
13345
|
+
y11 = r1 * sin$2(a11),
|
13346
|
+
x00 = r0 * cos$2(a00),
|
13347
|
+
y00 = r0 * sin$2(a00);
|
12978
13348
|
|
12979
13349
|
// Restrict the corner radius according to the sector angle.
|
12980
13350
|
if (da < pi$4) {
|
@@ -12983,10 +13353,10 @@ var arc = function() {
|
|
12983
13353
|
ay = y01 - oc[1],
|
12984
13354
|
bx = x11 - oc[0],
|
12985
13355
|
by = y11 - oc[1],
|
12986
|
-
kc = 1 /
|
12987
|
-
lc =
|
12988
|
-
rc0 =
|
12989
|
-
rc1 =
|
13356
|
+
kc = 1 / sin$2(acos$1((ax * bx + ay * by) / (sqrt$2(ax * ax + ay * ay) * sqrt$2(bx * bx + by * by))) / 2),
|
13357
|
+
lc = sqrt$2(oc[0] * oc[0] + oc[1] * oc[1]);
|
13358
|
+
rc0 = min$1(rc, (r0 - lc) / (kc - 1));
|
13359
|
+
rc1 = min$1(rc, (r1 - lc) / (kc + 1));
|
12990
13360
|
}
|
12991
13361
|
}
|
12992
13362
|
|
@@ -13001,13 +13371,13 @@ var arc = function() {
|
|
13001
13371
|
context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);
|
13002
13372
|
|
13003
13373
|
// Have the corners merged?
|
13004
|
-
if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1,
|
13374
|
+
if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2$1(t0.y01, t0.x01), atan2$1(t1.y01, t1.x01), !cw);
|
13005
13375
|
|
13006
13376
|
// Otherwise, draw the two corners and the ring.
|
13007
13377
|
else {
|
13008
|
-
context.arc(t0.cx, t0.cy, rc1,
|
13009
|
-
context.arc(0, 0, r1,
|
13010
|
-
context.arc(t1.cx, t1.cy, rc1,
|
13378
|
+
context.arc(t0.cx, t0.cy, rc1, atan2$1(t0.y01, t0.x01), atan2$1(t0.y11, t0.x11), !cw);
|
13379
|
+
context.arc(0, 0, r1, atan2$1(t0.cy + t0.y11, t0.cx + t0.x11), atan2$1(t1.cy + t1.y11, t1.cx + t1.x11), !cw);
|
13380
|
+
context.arc(t1.cx, t1.cy, rc1, atan2$1(t1.y11, t1.x11), atan2$1(t1.y01, t1.x01), !cw);
|
13011
13381
|
}
|
13012
13382
|
}
|
13013
13383
|
|
@@ -13026,13 +13396,13 @@ var arc = function() {
|
|
13026
13396
|
context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);
|
13027
13397
|
|
13028
13398
|
// Have the corners merged?
|
13029
|
-
if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0,
|
13399
|
+
if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2$1(t0.y01, t0.x01), atan2$1(t1.y01, t1.x01), !cw);
|
13030
13400
|
|
13031
13401
|
// Otherwise, draw the two corners and the ring.
|
13032
13402
|
else {
|
13033
|
-
context.arc(t0.cx, t0.cy, rc0,
|
13034
|
-
context.arc(0, 0, r0,
|
13035
|
-
context.arc(t1.cx, t1.cy, rc0,
|
13403
|
+
context.arc(t0.cx, t0.cy, rc0, atan2$1(t0.y01, t0.x01), atan2$1(t0.y11, t0.x11), !cw);
|
13404
|
+
context.arc(0, 0, r0, atan2$1(t0.cy + t0.y11, t0.cx + t0.x11), atan2$1(t1.cy + t1.y11, t1.cx + t1.x11), cw);
|
13405
|
+
context.arc(t1.cx, t1.cy, rc0, atan2$1(t1.y11, t1.x11), atan2$1(t1.y01, t1.x01), !cw);
|
13036
13406
|
}
|
13037
13407
|
}
|
13038
13408
|
|
@@ -13048,7 +13418,7 @@ var arc = function() {
|
|
13048
13418
|
arc.centroid = function() {
|
13049
13419
|
var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,
|
13050
13420
|
a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi$4 / 2;
|
13051
|
-
return [
|
13421
|
+
return [cos$2(a) * r, sin$2(a) * r];
|
13052
13422
|
};
|
13053
13423
|
|
13054
13424
|
arc.innerRadius = function(_) {
|
@@ -13127,8 +13497,8 @@ function y$3(p) {
|
|
13127
13497
|
}
|
13128
13498
|
|
13129
13499
|
var line = function() {
|
13130
|
-
var x
|
13131
|
-
y
|
13500
|
+
var x = x$3,
|
13501
|
+
y = y$3,
|
13132
13502
|
defined = constant$10(true),
|
13133
13503
|
context = null,
|
13134
13504
|
curve = curveLinear,
|
@@ -13148,18 +13518,18 @@ var line = function() {
|
|
13148
13518
|
if (defined0 = !defined0) output.lineStart();
|
13149
13519
|
else output.lineEnd();
|
13150
13520
|
}
|
13151
|
-
if (defined0) output.point(+x
|
13521
|
+
if (defined0) output.point(+x(d, i, data), +y(d, i, data));
|
13152
13522
|
}
|
13153
13523
|
|
13154
13524
|
if (buffer) return output = null, buffer + "" || null;
|
13155
13525
|
}
|
13156
13526
|
|
13157
13527
|
line.x = function(_) {
|
13158
|
-
return arguments.length ? (x
|
13528
|
+
return arguments.length ? (x = typeof _ === "function" ? _ : constant$10(+_), line) : x;
|
13159
13529
|
};
|
13160
13530
|
|
13161
13531
|
line.y = function(_) {
|
13162
|
-
return arguments.length ? (y
|
13532
|
+
return arguments.length ? (y = typeof _ === "function" ? _ : constant$10(+_), line) : y;
|
13163
13533
|
};
|
13164
13534
|
|
13165
13535
|
line.defined = function(_) {
|
@@ -13399,7 +13769,7 @@ function curveRadial(curve) {
|
|
13399
13769
|
return radial;
|
13400
13770
|
}
|
13401
13771
|
|
13402
|
-
function
|
13772
|
+
function lineRadial(l) {
|
13403
13773
|
var c = l.curve;
|
13404
13774
|
|
13405
13775
|
l.angle = l.x, delete l.x;
|
@@ -13412,11 +13782,11 @@ function radialLine(l) {
|
|
13412
13782
|
return l;
|
13413
13783
|
}
|
13414
13784
|
|
13415
|
-
var
|
13416
|
-
return
|
13785
|
+
var lineRadial$1 = function() {
|
13786
|
+
return lineRadial(line().curve(curveRadialLinear));
|
13417
13787
|
};
|
13418
13788
|
|
13419
|
-
var
|
13789
|
+
var areaRadial = function() {
|
13420
13790
|
var a = area$2().curve(curveRadialLinear),
|
13421
13791
|
c = a.curve,
|
13422
13792
|
x0 = a.lineX0,
|
@@ -13430,10 +13800,10 @@ var radialArea = function() {
|
|
13430
13800
|
a.radius = a.y, delete a.y;
|
13431
13801
|
a.innerRadius = a.y0, delete a.y0;
|
13432
13802
|
a.outerRadius = a.y1, delete a.y1;
|
13433
|
-
a.lineStartAngle = function() { return
|
13434
|
-
a.lineEndAngle = function() { return
|
13435
|
-
a.lineInnerRadius = function() { return
|
13436
|
-
a.lineOuterRadius = function() { return
|
13803
|
+
a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;
|
13804
|
+
a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;
|
13805
|
+
a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;
|
13806
|
+
a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;
|
13437
13807
|
|
13438
13808
|
a.curve = function(_) {
|
13439
13809
|
return arguments.length ? c(curveRadial(_)) : c()._curve;
|
@@ -13442,6 +13812,91 @@ var radialArea = function() {
|
|
13442
13812
|
return a;
|
13443
13813
|
};
|
13444
13814
|
|
13815
|
+
var pointRadial = function(x, y) {
|
13816
|
+
return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];
|
13817
|
+
};
|
13818
|
+
|
13819
|
+
var slice$6 = Array.prototype.slice;
|
13820
|
+
|
13821
|
+
function linkSource(d) {
|
13822
|
+
return d.source;
|
13823
|
+
}
|
13824
|
+
|
13825
|
+
function linkTarget(d) {
|
13826
|
+
return d.target;
|
13827
|
+
}
|
13828
|
+
|
13829
|
+
function link$2(curve) {
|
13830
|
+
var source = linkSource,
|
13831
|
+
target = linkTarget,
|
13832
|
+
x = x$3,
|
13833
|
+
y = y$3,
|
13834
|
+
context = null;
|
13835
|
+
|
13836
|
+
function link() {
|
13837
|
+
var buffer, argv = slice$6.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);
|
13838
|
+
if (!context) context = buffer = path();
|
13839
|
+
curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));
|
13840
|
+
if (buffer) return context = null, buffer + "" || null;
|
13841
|
+
}
|
13842
|
+
|
13843
|
+
link.source = function(_) {
|
13844
|
+
return arguments.length ? (source = _, link) : source;
|
13845
|
+
};
|
13846
|
+
|
13847
|
+
link.target = function(_) {
|
13848
|
+
return arguments.length ? (target = _, link) : target;
|
13849
|
+
};
|
13850
|
+
|
13851
|
+
link.x = function(_) {
|
13852
|
+
return arguments.length ? (x = typeof _ === "function" ? _ : constant$10(+_), link) : x;
|
13853
|
+
};
|
13854
|
+
|
13855
|
+
link.y = function(_) {
|
13856
|
+
return arguments.length ? (y = typeof _ === "function" ? _ : constant$10(+_), link) : y;
|
13857
|
+
};
|
13858
|
+
|
13859
|
+
link.context = function(_) {
|
13860
|
+
return arguments.length ? ((context = _ == null ? null : _), link) : context;
|
13861
|
+
};
|
13862
|
+
|
13863
|
+
return link;
|
13864
|
+
}
|
13865
|
+
|
13866
|
+
function curveHorizontal(context, x0, y0, x1, y1) {
|
13867
|
+
context.moveTo(x0, y0);
|
13868
|
+
context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);
|
13869
|
+
}
|
13870
|
+
|
13871
|
+
function curveVertical(context, x0, y0, x1, y1) {
|
13872
|
+
context.moveTo(x0, y0);
|
13873
|
+
context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);
|
13874
|
+
}
|
13875
|
+
|
13876
|
+
function curveRadial$1(context, x0, y0, x1, y1) {
|
13877
|
+
var p0 = pointRadial(x0, y0),
|
13878
|
+
p1 = pointRadial(x0, y0 = (y0 + y1) / 2),
|
13879
|
+
p2 = pointRadial(x1, y0),
|
13880
|
+
p3 = pointRadial(x1, y1);
|
13881
|
+
context.moveTo(p0[0], p0[1]);
|
13882
|
+
context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);
|
13883
|
+
}
|
13884
|
+
|
13885
|
+
function linkHorizontal() {
|
13886
|
+
return link$2(curveHorizontal);
|
13887
|
+
}
|
13888
|
+
|
13889
|
+
function linkVertical() {
|
13890
|
+
return link$2(curveVertical);
|
13891
|
+
}
|
13892
|
+
|
13893
|
+
function linkRadial() {
|
13894
|
+
var l = link$2(curveRadial$1);
|
13895
|
+
l.angle = l.x, delete l.x;
|
13896
|
+
l.radius = l.y, delete l.y;
|
13897
|
+
return l;
|
13898
|
+
}
|
13899
|
+
|
13445
13900
|
var circle$2 = {
|
13446
13901
|
draw: function(context, size) {
|
13447
13902
|
var r = Math.sqrt(size / pi$4);
|
@@ -13450,7 +13905,7 @@ var circle$2 = {
|
|
13450
13905
|
}
|
13451
13906
|
};
|
13452
13907
|
|
13453
|
-
var cross$
|
13908
|
+
var cross$2 = {
|
13454
13909
|
draw: function(context, size) {
|
13455
13910
|
var r = Math.sqrt(size / 5) / 2;
|
13456
13911
|
context.moveTo(-3 * r, -r);
|
@@ -13556,7 +14011,7 @@ var wye = {
|
|
13556
14011
|
|
13557
14012
|
var symbols = [
|
13558
14013
|
circle$2,
|
13559
|
-
cross$
|
14014
|
+
cross$2,
|
13560
14015
|
diamond,
|
13561
14016
|
square,
|
13562
14017
|
star,
|
@@ -13775,7 +14230,7 @@ Bundle.prototype = {
|
|
13775
14230
|
}
|
13776
14231
|
};
|
13777
14232
|
|
13778
|
-
var bundle = (
|
14233
|
+
var bundle = (function custom(beta) {
|
13779
14234
|
|
13780
14235
|
function bundle(context) {
|
13781
14236
|
return beta === 1 ? new Basis(context) : new Bundle(context, beta);
|
@@ -13786,7 +14241,7 @@ var bundle = ((function custom(beta) {
|
|
13786
14241
|
};
|
13787
14242
|
|
13788
14243
|
return bundle;
|
13789
|
-
})
|
14244
|
+
})(0.85);
|
13790
14245
|
|
13791
14246
|
function point$3(that, x, y) {
|
13792
14247
|
that._context.bezierCurveTo(
|
@@ -13837,7 +14292,7 @@ Cardinal.prototype = {
|
|
13837
14292
|
}
|
13838
14293
|
};
|
13839
14294
|
|
13840
|
-
var cardinal = (
|
14295
|
+
var cardinal = (function custom(tension) {
|
13841
14296
|
|
13842
14297
|
function cardinal(context) {
|
13843
14298
|
return new Cardinal(context, tension);
|
@@ -13848,7 +14303,7 @@ var cardinal = ((function custom(tension) {
|
|
13848
14303
|
};
|
13849
14304
|
|
13850
14305
|
return cardinal;
|
13851
|
-
})
|
14306
|
+
})(0);
|
13852
14307
|
|
13853
14308
|
function CardinalClosed(context, tension) {
|
13854
14309
|
this._context = context;
|
@@ -13896,18 +14351,18 @@ CardinalClosed.prototype = {
|
|
13896
14351
|
}
|
13897
14352
|
};
|
13898
14353
|
|
13899
|
-
var cardinalClosed = (
|
14354
|
+
var cardinalClosed = (function custom(tension) {
|
13900
14355
|
|
13901
|
-
function cardinal(context) {
|
14356
|
+
function cardinal$$1(context) {
|
13902
14357
|
return new CardinalClosed(context, tension);
|
13903
14358
|
}
|
13904
14359
|
|
13905
|
-
cardinal.tension = function(tension) {
|
14360
|
+
cardinal$$1.tension = function(tension) {
|
13906
14361
|
return custom(+tension);
|
13907
14362
|
};
|
13908
14363
|
|
13909
|
-
return cardinal;
|
13910
|
-
})
|
14364
|
+
return cardinal$$1;
|
14365
|
+
})(0);
|
13911
14366
|
|
13912
14367
|
function CardinalOpen(context, tension) {
|
13913
14368
|
this._context = context;
|
@@ -13944,18 +14399,18 @@ CardinalOpen.prototype = {
|
|
13944
14399
|
}
|
13945
14400
|
};
|
13946
14401
|
|
13947
|
-
var cardinalOpen = (
|
14402
|
+
var cardinalOpen = (function custom(tension) {
|
13948
14403
|
|
13949
|
-
function cardinal(context) {
|
14404
|
+
function cardinal$$1(context) {
|
13950
14405
|
return new CardinalOpen(context, tension);
|
13951
14406
|
}
|
13952
14407
|
|
13953
|
-
cardinal.tension = function(tension) {
|
14408
|
+
cardinal$$1.tension = function(tension) {
|
13954
14409
|
return custom(+tension);
|
13955
14410
|
};
|
13956
14411
|
|
13957
|
-
return cardinal;
|
13958
|
-
})
|
14412
|
+
return cardinal$$1;
|
14413
|
+
})(0);
|
13959
14414
|
|
13960
14415
|
function point$4(that, x, y) {
|
13961
14416
|
var x1 = that._x1,
|
@@ -14030,7 +14485,7 @@ CatmullRom.prototype = {
|
|
14030
14485
|
}
|
14031
14486
|
};
|
14032
14487
|
|
14033
|
-
var catmullRom = (
|
14488
|
+
var catmullRom = (function custom(alpha) {
|
14034
14489
|
|
14035
14490
|
function catmullRom(context) {
|
14036
14491
|
return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);
|
@@ -14041,7 +14496,7 @@ var catmullRom = ((function custom(alpha) {
|
|
14041
14496
|
};
|
14042
14497
|
|
14043
14498
|
return catmullRom;
|
14044
|
-
})
|
14499
|
+
})(0.5);
|
14045
14500
|
|
14046
14501
|
function CatmullRomClosed(context, alpha) {
|
14047
14502
|
this._context = context;
|
@@ -14101,18 +14556,18 @@ CatmullRomClosed.prototype = {
|
|
14101
14556
|
}
|
14102
14557
|
};
|
14103
14558
|
|
14104
|
-
var catmullRomClosed = (
|
14559
|
+
var catmullRomClosed = (function custom(alpha) {
|
14105
14560
|
|
14106
|
-
function catmullRom(context) {
|
14561
|
+
function catmullRom$$1(context) {
|
14107
14562
|
return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);
|
14108
14563
|
}
|
14109
14564
|
|
14110
|
-
catmullRom.alpha = function(alpha) {
|
14565
|
+
catmullRom$$1.alpha = function(alpha) {
|
14111
14566
|
return custom(+alpha);
|
14112
14567
|
};
|
14113
14568
|
|
14114
|
-
return catmullRom;
|
14115
|
-
})
|
14569
|
+
return catmullRom$$1;
|
14570
|
+
})(0.5);
|
14116
14571
|
|
14117
14572
|
function CatmullRomOpen(context, alpha) {
|
14118
14573
|
this._context = context;
|
@@ -14161,18 +14616,18 @@ CatmullRomOpen.prototype = {
|
|
14161
14616
|
}
|
14162
14617
|
};
|
14163
14618
|
|
14164
|
-
var catmullRomOpen = (
|
14619
|
+
var catmullRomOpen = (function custom(alpha) {
|
14165
14620
|
|
14166
|
-
function catmullRom(context) {
|
14621
|
+
function catmullRom$$1(context) {
|
14167
14622
|
return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);
|
14168
14623
|
}
|
14169
14624
|
|
14170
|
-
catmullRom.alpha = function(alpha) {
|
14625
|
+
catmullRom$$1.alpha = function(alpha) {
|
14171
14626
|
return custom(+alpha);
|
14172
14627
|
};
|
14173
14628
|
|
14174
|
-
return catmullRom;
|
14175
|
-
})
|
14629
|
+
return catmullRom$$1;
|
14630
|
+
})(0.5);
|
14176
14631
|
|
14177
14632
|
function LinearClosed(context) {
|
14178
14633
|
this._context = context;
|
@@ -14423,13 +14878,11 @@ function stepAfter(context) {
|
|
14423
14878
|
return new Step(context, 1);
|
14424
14879
|
}
|
14425
14880
|
|
14426
|
-
var slice$5 = Array.prototype.slice;
|
14427
|
-
|
14428
14881
|
var none$1 = function(series, order) {
|
14429
14882
|
if (!((n = series.length) > 1)) return;
|
14430
|
-
for (var i = 1, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {
|
14883
|
+
for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {
|
14431
14884
|
s0 = s1, s1 = series[order[i]];
|
14432
|
-
for (
|
14885
|
+
for (j = 0; j < m; ++j) {
|
14433
14886
|
s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];
|
14434
14887
|
}
|
14435
14888
|
}
|
@@ -14476,7 +14929,7 @@ var stack = function() {
|
|
14476
14929
|
}
|
14477
14930
|
|
14478
14931
|
stack.keys = function(_) {
|
14479
|
-
return arguments.length ? (keys = typeof _ === "function" ? _ : constant$10(slice$
|
14932
|
+
return arguments.length ? (keys = typeof _ === "function" ? _ : constant$10(slice$6.call(_)), stack) : keys;
|
14480
14933
|
};
|
14481
14934
|
|
14482
14935
|
stack.value = function(_) {
|
@@ -14484,7 +14937,7 @@ var stack = function() {
|
|
14484
14937
|
};
|
14485
14938
|
|
14486
14939
|
stack.order = function(_) {
|
14487
|
-
return arguments.length ? (order = _ == null ? none$2 : typeof _ === "function" ? _ : constant$10(slice$
|
14940
|
+
return arguments.length ? (order = _ == null ? none$2 : typeof _ === "function" ? _ : constant$10(slice$6.call(_)), stack) : order;
|
14488
14941
|
};
|
14489
14942
|
|
14490
14943
|
stack.offset = function(_) {
|
@@ -14503,6 +14956,21 @@ var expand = function(series, order) {
|
|
14503
14956
|
none$1(series, order);
|
14504
14957
|
};
|
14505
14958
|
|
14959
|
+
var diverging = function(series, order) {
|
14960
|
+
if (!((n = series.length) > 1)) return;
|
14961
|
+
for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {
|
14962
|
+
for (yp = yn = 0, i = 0; i < n; ++i) {
|
14963
|
+
if ((dy = (d = series[order[i]][j])[1] - d[0]) >= 0) {
|
14964
|
+
d[0] = yp, d[1] = yp += dy;
|
14965
|
+
} else if (dy < 0) {
|
14966
|
+
d[1] = yn, d[0] = yn += dy;
|
14967
|
+
} else {
|
14968
|
+
d[0] = yp;
|
14969
|
+
}
|
14970
|
+
}
|
14971
|
+
}
|
14972
|
+
};
|
14973
|
+
|
14506
14974
|
var silhouette = function(series, order) {
|
14507
14975
|
if (!((n = series.length) > 0)) return;
|
14508
14976
|
for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {
|
@@ -15522,13 +15990,13 @@ Diagram.prototype = {
|
|
15522
15990
|
};
|
15523
15991
|
|
15524
15992
|
var voronoi = function() {
|
15525
|
-
var x
|
15526
|
-
y
|
15993
|
+
var x = x$4,
|
15994
|
+
y = y$4,
|
15527
15995
|
extent = null;
|
15528
15996
|
|
15529
15997
|
function voronoi(data) {
|
15530
15998
|
return new Diagram(data.map(function(d, i) {
|
15531
|
-
var s = [Math.round(x
|
15999
|
+
var s = [Math.round(x(d, i, data) / epsilon$4) * epsilon$4, Math.round(y(d, i, data) / epsilon$4) * epsilon$4];
|
15532
16000
|
s.index = i;
|
15533
16001
|
s.data = d;
|
15534
16002
|
return s;
|
@@ -15548,11 +16016,11 @@ var voronoi = function() {
|
|
15548
16016
|
};
|
15549
16017
|
|
15550
16018
|
voronoi.x = function(_) {
|
15551
|
-
return arguments.length ? (x
|
16019
|
+
return arguments.length ? (x = typeof _ === "function" ? _ : constant$11(+_), voronoi) : x;
|
15552
16020
|
};
|
15553
16021
|
|
15554
16022
|
voronoi.y = function(_) {
|
15555
|
-
return arguments.length ? (y
|
16023
|
+
return arguments.length ? (y = typeof _ === "function" ? _ : constant$11(+_), voronoi) : y;
|
15556
16024
|
};
|
15557
16025
|
|
15558
16026
|
voronoi.extent = function(_) {
|
@@ -15660,9 +16128,18 @@ function defaultTransform() {
|
|
15660
16128
|
return this.__zoom || identity$8;
|
15661
16129
|
}
|
15662
16130
|
|
16131
|
+
function defaultWheelDelta() {
|
16132
|
+
return -exports.event.deltaY * (exports.event.deltaMode ? 120 : 1) / 500;
|
16133
|
+
}
|
16134
|
+
|
16135
|
+
function touchable$1() {
|
16136
|
+
return "ontouchstart" in this;
|
16137
|
+
}
|
16138
|
+
|
15663
16139
|
var zoom = function() {
|
15664
16140
|
var filter = defaultFilter$2,
|
15665
16141
|
extent = defaultExtent$1,
|
16142
|
+
wheelDelta = defaultWheelDelta,
|
15666
16143
|
k0 = 0,
|
15667
16144
|
k1 = Infinity,
|
15668
16145
|
x0 = -k1,
|
@@ -15670,36 +16147,39 @@ var zoom = function() {
|
|
15670
16147
|
y0 = x0,
|
15671
16148
|
y1 = x1,
|
15672
16149
|
duration = 250,
|
15673
|
-
interpolate
|
16150
|
+
interpolate = interpolateZoom,
|
15674
16151
|
gestures = [],
|
15675
16152
|
listeners = dispatch("start", "zoom", "end"),
|
15676
16153
|
touchstarting,
|
15677
16154
|
touchending,
|
15678
16155
|
touchDelay = 500,
|
15679
|
-
wheelDelay = 150
|
16156
|
+
wheelDelay = 150,
|
16157
|
+
clickDistance2 = 0;
|
15680
16158
|
|
15681
16159
|
function zoom(selection$$1) {
|
15682
16160
|
selection$$1
|
16161
|
+
.property("__zoom", defaultTransform)
|
15683
16162
|
.on("wheel.zoom", wheeled)
|
15684
16163
|
.on("mousedown.zoom", mousedowned)
|
15685
16164
|
.on("dblclick.zoom", dblclicked)
|
16165
|
+
.filter(touchable$1)
|
15686
16166
|
.on("touchstart.zoom", touchstarted)
|
15687
16167
|
.on("touchmove.zoom", touchmoved)
|
15688
16168
|
.on("touchend.zoom touchcancel.zoom", touchended)
|
15689
|
-
.style("-
|
15690
|
-
.
|
16169
|
+
.style("touch-action", "none")
|
16170
|
+
.style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
|
15691
16171
|
}
|
15692
16172
|
|
15693
|
-
zoom.transform = function(collection, transform) {
|
16173
|
+
zoom.transform = function(collection, transform$$1) {
|
15694
16174
|
var selection$$1 = collection.selection ? collection.selection() : collection;
|
15695
16175
|
selection$$1.property("__zoom", defaultTransform);
|
15696
16176
|
if (collection !== selection$$1) {
|
15697
|
-
schedule(collection, transform);
|
16177
|
+
schedule(collection, transform$$1);
|
15698
16178
|
} else {
|
15699
16179
|
selection$$1.interrupt().each(function() {
|
15700
16180
|
gesture(this, arguments)
|
15701
16181
|
.start()
|
15702
|
-
.zoom(null, typeof transform === "function" ? transform.apply(this, arguments) : transform)
|
16182
|
+
.zoom(null, typeof transform$$1 === "function" ? transform$$1.apply(this, arguments) : transform$$1)
|
15703
16183
|
.end();
|
15704
16184
|
});
|
15705
16185
|
}
|
@@ -15733,22 +16213,34 @@ var zoom = function() {
|
|
15733
16213
|
});
|
15734
16214
|
};
|
15735
16215
|
|
15736
|
-
function
|
16216
|
+
zoom.translateTo = function(selection$$1, x, y) {
|
16217
|
+
zoom.transform(selection$$1, function() {
|
16218
|
+
var e = extent.apply(this, arguments),
|
16219
|
+
t = this.__zoom,
|
16220
|
+
p = centroid(e);
|
16221
|
+
return constrain(identity$8.translate(p[0], p[1]).scale(t.k).translate(
|
16222
|
+
typeof x === "function" ? -x.apply(this, arguments) : -x,
|
16223
|
+
typeof y === "function" ? -y.apply(this, arguments) : -y
|
16224
|
+
), e);
|
16225
|
+
});
|
16226
|
+
};
|
16227
|
+
|
16228
|
+
function scale(transform$$1, k) {
|
15737
16229
|
k = Math.max(k0, Math.min(k1, k));
|
15738
|
-
return k === transform.k ? transform : new Transform(k, transform.x, transform.y);
|
16230
|
+
return k === transform$$1.k ? transform$$1 : new Transform(k, transform$$1.x, transform$$1.y);
|
15739
16231
|
}
|
15740
16232
|
|
15741
|
-
function translate(transform, p0, p1) {
|
15742
|
-
var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;
|
15743
|
-
return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);
|
16233
|
+
function translate(transform$$1, p0, p1) {
|
16234
|
+
var x = p0[0] - p1[0] * transform$$1.k, y = p0[1] - p1[1] * transform$$1.k;
|
16235
|
+
return x === transform$$1.x && y === transform$$1.y ? transform$$1 : new Transform(transform$$1.k, x, y);
|
15744
16236
|
}
|
15745
16237
|
|
15746
|
-
function constrain(transform, extent) {
|
15747
|
-
var dx0 = transform.invertX(extent[0][0]) - x0,
|
15748
|
-
dx1 = transform.invertX(extent[1][0]) - x1,
|
15749
|
-
dy0 = transform.invertY(extent[0][1]) - y0,
|
15750
|
-
dy1 = transform.invertY(extent[1][1]) - y1;
|
15751
|
-
return transform.translate(
|
16238
|
+
function constrain(transform$$1, extent) {
|
16239
|
+
var dx0 = transform$$1.invertX(extent[0][0]) - x0,
|
16240
|
+
dx1 = transform$$1.invertX(extent[1][0]) - x1,
|
16241
|
+
dy0 = transform$$1.invertY(extent[0][1]) - y0,
|
16242
|
+
dy1 = transform$$1.invertY(extent[1][1]) - y1;
|
16243
|
+
return transform$$1.translate(
|
15752
16244
|
dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),
|
15753
16245
|
dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)
|
15754
16246
|
);
|
@@ -15758,7 +16250,7 @@ var zoom = function() {
|
|
15758
16250
|
return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];
|
15759
16251
|
}
|
15760
16252
|
|
15761
|
-
function schedule(transition$$1, transform, center) {
|
16253
|
+
function schedule(transition$$1, transform$$1, center) {
|
15762
16254
|
transition$$1
|
15763
16255
|
.on("start.zoom", function() { gesture(this, arguments).start(); })
|
15764
16256
|
.on("interrupt.zoom end.zoom", function() { gesture(this, arguments).end(); })
|
@@ -15770,8 +16262,8 @@ var zoom = function() {
|
|
15770
16262
|
p = center || centroid(e),
|
15771
16263
|
w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),
|
15772
16264
|
a = that.__zoom,
|
15773
|
-
b = typeof transform === "function" ? transform.apply(that, args) : transform,
|
15774
|
-
i = interpolate
|
16265
|
+
b = typeof transform$$1 === "function" ? transform$$1.apply(that, args) : transform$$1,
|
16266
|
+
i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));
|
15775
16267
|
return function(t) {
|
15776
16268
|
if (t === 1) t = b; // Avoid rounding error on end.
|
15777
16269
|
else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }
|
@@ -15805,11 +16297,11 @@ var zoom = function() {
|
|
15805
16297
|
}
|
15806
16298
|
return this;
|
15807
16299
|
},
|
15808
|
-
zoom: function(key, transform) {
|
15809
|
-
if (this.mouse && key !== "mouse") this.mouse[1] = transform.invert(this.mouse[0]);
|
15810
|
-
if (this.touch0 && key !== "touch") this.touch0[1] = transform.invert(this.touch0[0]);
|
15811
|
-
if (this.touch1 && key !== "touch") this.touch1[1] = transform.invert(this.touch1[0]);
|
15812
|
-
this.that.__zoom = transform;
|
16300
|
+
zoom: function(key, transform$$1) {
|
16301
|
+
if (this.mouse && key !== "mouse") this.mouse[1] = transform$$1.invert(this.mouse[0]);
|
16302
|
+
if (this.touch0 && key !== "touch") this.touch0[1] = transform$$1.invert(this.touch0[0]);
|
16303
|
+
if (this.touch1 && key !== "touch") this.touch1[1] = transform$$1.invert(this.touch1[0]);
|
16304
|
+
this.that.__zoom = transform$$1;
|
15813
16305
|
this.emit("zoom");
|
15814
16306
|
return this;
|
15815
16307
|
},
|
@@ -15830,7 +16322,7 @@ var zoom = function() {
|
|
15830
16322
|
if (!filter.apply(this, arguments)) return;
|
15831
16323
|
var g = gesture(this, arguments),
|
15832
16324
|
t = this.__zoom,
|
15833
|
-
k = Math.max(k0, Math.min(k1, t.k * Math.pow(2,
|
16325
|
+
k = Math.max(k0, Math.min(k1, t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),
|
15834
16326
|
p = mouse(this);
|
15835
16327
|
|
15836
16328
|
// If the mouse is in the same location as before, reuse it.
|
@@ -15866,7 +16358,9 @@ var zoom = function() {
|
|
15866
16358
|
if (touchending || !filter.apply(this, arguments)) return;
|
15867
16359
|
var g = gesture(this, arguments),
|
15868
16360
|
v = select(exports.event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true),
|
15869
|
-
p = mouse(this)
|
16361
|
+
p = mouse(this),
|
16362
|
+
x0 = exports.event.clientX,
|
16363
|
+
y0 = exports.event.clientY;
|
15870
16364
|
|
15871
16365
|
dragDisable(exports.event.view);
|
15872
16366
|
nopropagation$2();
|
@@ -15876,7 +16370,10 @@ var zoom = function() {
|
|
15876
16370
|
|
15877
16371
|
function mousemoved() {
|
15878
16372
|
noevent$2();
|
15879
|
-
g.moved
|
16373
|
+
if (!g.moved) {
|
16374
|
+
var dx = exports.event.clientX - x0, dy = exports.event.clientY - y0;
|
16375
|
+
g.moved = dx * dx + dy * dy > clickDistance2;
|
16376
|
+
}
|
15880
16377
|
g.zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent));
|
15881
16378
|
}
|
15882
16379
|
|
@@ -15975,9 +16472,14 @@ var zoom = function() {
|
|
15975
16472
|
else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;
|
15976
16473
|
}
|
15977
16474
|
if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;
|
15978
|
-
if (
|
16475
|
+
if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);
|
16476
|
+
else g.end();
|
15979
16477
|
}
|
15980
16478
|
|
16479
|
+
zoom.wheelDelta = function(_) {
|
16480
|
+
return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : constant$12(+_), zoom) : wheelDelta;
|
16481
|
+
};
|
16482
|
+
|
15981
16483
|
zoom.filter = function(_) {
|
15982
16484
|
return arguments.length ? (filter = typeof _ === "function" ? _ : constant$12(!!_), zoom) : filter;
|
15983
16485
|
};
|
@@ -15999,7 +16501,7 @@ var zoom = function() {
|
|
15999
16501
|
};
|
16000
16502
|
|
16001
16503
|
zoom.interpolate = function(_) {
|
16002
|
-
return arguments.length ? (interpolate
|
16504
|
+
return arguments.length ? (interpolate = _, zoom) : interpolate;
|
16003
16505
|
};
|
16004
16506
|
|
16005
16507
|
zoom.on = function() {
|
@@ -16007,6 +16509,10 @@ var zoom = function() {
|
|
16007
16509
|
return value === listeners ? zoom : value;
|
16008
16510
|
};
|
16009
16511
|
|
16512
|
+
zoom.clickDistance = function(_) {
|
16513
|
+
return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);
|
16514
|
+
};
|
16515
|
+
|
16010
16516
|
return zoom;
|
16011
16517
|
};
|
16012
16518
|
|
@@ -16016,6 +16522,7 @@ exports.bisectRight = bisectRight;
|
|
16016
16522
|
exports.bisectLeft = bisectLeft;
|
16017
16523
|
exports.ascending = ascending;
|
16018
16524
|
exports.bisector = bisector;
|
16525
|
+
exports.cross = cross;
|
16019
16526
|
exports.descending = descending;
|
16020
16527
|
exports.deviation = deviation;
|
16021
16528
|
exports.extent = extent;
|
@@ -16036,6 +16543,7 @@ exports.scan = scan;
|
|
16036
16543
|
exports.shuffle = shuffle;
|
16037
16544
|
exports.sum = sum;
|
16038
16545
|
exports.ticks = ticks;
|
16546
|
+
exports.tickIncrement = tickIncrement;
|
16039
16547
|
exports.tickStep = tickStep;
|
16040
16548
|
exports.transpose = transpose;
|
16041
16549
|
exports.variance = variance;
|
@@ -16130,6 +16638,7 @@ exports.geoBounds = bounds;
|
|
16130
16638
|
exports.geoCentroid = centroid;
|
16131
16639
|
exports.geoCircle = circle;
|
16132
16640
|
exports.geoClipExtent = extent$1;
|
16641
|
+
exports.geoContains = contains;
|
16133
16642
|
exports.geoDistance = distance;
|
16134
16643
|
exports.geoGraticule = graticule;
|
16135
16644
|
exports.geoGraticule10 = graticule10;
|
@@ -16208,7 +16717,7 @@ exports.path = path;
|
|
16208
16717
|
exports.polygonArea = area$1;
|
16209
16718
|
exports.polygonCentroid = centroid$1;
|
16210
16719
|
exports.polygonHull = hull;
|
16211
|
-
exports.polygonContains = contains;
|
16720
|
+
exports.polygonContains = contains$1;
|
16212
16721
|
exports.polygonLength = length$2;
|
16213
16722
|
exports.quadtree = quadtree;
|
16214
16723
|
exports.queue = queue;
|
@@ -16234,7 +16743,7 @@ exports.scaleOrdinal = ordinal;
|
|
16234
16743
|
exports.scaleImplicit = implicit;
|
16235
16744
|
exports.scalePow = pow$1;
|
16236
16745
|
exports.scaleSqrt = sqrt$1;
|
16237
|
-
exports.scaleQuantile = quantile
|
16746
|
+
exports.scaleQuantile = quantile;
|
16238
16747
|
exports.scaleQuantize = quantize$1;
|
16239
16748
|
exports.scaleThreshold = threshold$1;
|
16240
16749
|
exports.scaleTime = time;
|
@@ -16263,20 +16772,27 @@ exports.selectAll = selectAll;
|
|
16263
16772
|
exports.selection = selection;
|
16264
16773
|
exports.selector = selector;
|
16265
16774
|
exports.selectorAll = selectorAll;
|
16775
|
+
exports.style = styleValue;
|
16266
16776
|
exports.touch = touch;
|
16267
16777
|
exports.touches = touches;
|
16268
|
-
exports.window =
|
16778
|
+
exports.window = defaultView;
|
16269
16779
|
exports.customEvent = customEvent;
|
16270
16780
|
exports.arc = arc;
|
16271
16781
|
exports.area = area$2;
|
16272
16782
|
exports.line = line;
|
16273
16783
|
exports.pie = pie;
|
16274
|
-
exports.
|
16275
|
-
exports.
|
16784
|
+
exports.areaRadial = areaRadial;
|
16785
|
+
exports.radialArea = areaRadial;
|
16786
|
+
exports.lineRadial = lineRadial$1;
|
16787
|
+
exports.radialLine = lineRadial$1;
|
16788
|
+
exports.pointRadial = pointRadial;
|
16789
|
+
exports.linkHorizontal = linkHorizontal;
|
16790
|
+
exports.linkVertical = linkVertical;
|
16791
|
+
exports.linkRadial = linkRadial;
|
16276
16792
|
exports.symbol = symbol;
|
16277
16793
|
exports.symbols = symbols;
|
16278
16794
|
exports.symbolCircle = circle$2;
|
16279
|
-
exports.symbolCross = cross$
|
16795
|
+
exports.symbolCross = cross$2;
|
16280
16796
|
exports.symbolDiamond = diamond;
|
16281
16797
|
exports.symbolSquare = square;
|
16282
16798
|
exports.symbolStar = star;
|
@@ -16302,6 +16818,7 @@ exports.curveStepAfter = stepAfter;
|
|
16302
16818
|
exports.curveStepBefore = stepBefore;
|
16303
16819
|
exports.stack = stack;
|
16304
16820
|
exports.stackOffsetExpand = expand;
|
16821
|
+
exports.stackOffsetDiverging = diverging;
|
16305
16822
|
exports.stackOffsetNone = none$1;
|
16306
16823
|
exports.stackOffsetSilhouette = silhouette;
|
16307
16824
|
exports.stackOffsetWiggle = wiggle;
|