diff --git a/dist/bundle.css b/dist/bundle.css
index 33a4b1a..3bf3dab 100644
--- a/dist/bundle.css
+++ b/dist/bundle.css
@@ -1,27 +1,16 @@
-.ancestry-radial-lineage-plot .node circle{
+.ancestry-base-lineage-plot .node circle{
pointer-events: all;
- /*stroke: rgb(40,53,147);*/
}
-.ancestry-radial-lineage-plot path.link{
- stroke-width: 1px;
-}
-.ancestry-radial-lineage-plot text {
+.ancestry-base-lineage-plot .link {
pointer-events: none;
+ fill:none;
}
-.ancestry-radial-lineage-plot .node rect {
+.ancestry-base-lineage-plot text {
pointer-events: none;
}
-
-.ancestry-radial-lineage-plot path.link-active {
- stroke-width: 2px;
- stroke: black;
-}
-
-
-
.svg-ic_label_black_24px {
background: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4KICAgIDxwYXRoIGQ9Ik0xNy42MyA1Ljg0QzE3LjI3IDUuMzMgMTYuNjcgNSAxNiA1TDUgNS4wMUMzLjkgNS4wMSAzIDUuOSAzIDd2MTBjMCAxLjEuOSAxLjk5IDIgMS45OUwxNiAxOWMuNjcgMCAxLjI3LS4zMyAxLjYzLS44NEwyMiAxMmwtNC4zNy02LjE2eiIvPgo8L3N2Zz4=);
}
@@ -38,99 +27,34 @@
background: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxwYXRoIGQ9Ik0xMiA3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMC01QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4KICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4KPC9zdmc+);
}
-.ancestry-radial-phylogenetic-tree .node circle{
- pointer-events: all;
-}
-
-.ancestry-radial-phylogenetic-tree path.link{
- fill: none;
-}
-
-.ancestry-radial-phylogenetic-tree path.link-active {
- stroke-width: 2.5px;
- stroke: black !important;
-}
-.ancestry-radial-phylogenetic-tree .link-extension {
- fill: none;
- /*stroke: #000;*/
- /*stroke-opacity: .25;*/
-}
-
-.ancestry-radial-phylogenetic-tree .link-extension-active {
- stroke-width: 1.25px;
- stroke-opacity: .6;
-}
-
-.ancestry-lineage-plot .node circle{
- pointer-events: all;
-}
-
-
-.ancestry-lineage-scatter-plot .link {
- pointer-events: none;
- fill:none;
-}
-
-.ancestry-lineage-plot .selection-rect {
- pointer-events: none;
- fill : transparent;
+.svg-ic_crop_black_24px {
+ background: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4KICAgIDxwYXRoIGQ9Ik0xNyAxNWgyVjdjMC0xLjEtLjktMi0yLTJIOXYyaDh2OHpNNyAxN1YxSDV2NEgxdjJoNHYxMGMwIDEuMS45IDIgMiAyaDEwdjRoMnYtNGg0di0ySDd6Ii8+Cjwvc3ZnPg==);
}
-.ancestry-lineage-plot text {
- pointer-events: none;
+.svg-ic_rotate_right_black_24px {
+ background: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4KICAgIDxwYXRoIGQ9Ik0xNS41NSA1LjU1TDExIDF2My4wN0M3LjA2IDQuNTYgNCA3LjkyIDQgMTJzMy4wNSA3LjQ0IDcgNy45M3YtMi4wMmMtMi44NC0uNDgtNS0yLjk0LTUtNS45MXMyLjE2LTUuNDMgNS01LjkxVjEwbDQuNTUtNC40NXpNMTkuOTMgMTFjLS4xNy0xLjM5LS43Mi0yLjczLTEuNjItMy44OWwtMS40MiAxLjQyYy41NC43NS44OCAxLjYgMS4wMiAyLjQ3aDIuMDJ6TTEzIDE3Ljl2Mi4wMmMxLjM5LS4xNyAyLjc0LS43MSAzLjktMS42MWwtMS40NC0xLjQ0Yy0uNzUuNTQtMS41OS44OS0yLjQ2IDEuMDN6bTMuODktMi40MmwxLjQyIDEuNDFjLjktMS4xNiAxLjQ1LTIuNSAxLjYyLTMuODloLTIuMDJjLS4xNC44Ny0uNDggMS43Mi0xLjAyIDIuNDh6Ii8+Cjwvc3ZnPg==);
}
-
-.ancestry-lineage-plot .node rect {
- pointer-events: none;
+.ancestry {
+ display: block;
}
-
-.ancestry-lineage-scatter-plot .arrowhead {
- stroke: none;
+.ancestry .axis .tick line {
pointer-events: none;
}
-
-.ancestry-lineage-scatter-plot .link {
+.ancestry .link {
pointer-events: none;
fill:none;
}
-.ancestry-lineage-scatter-plot .node circle{
- pointer-events: all;
-}
-
-.ancestry-lineage-scatter-plot .selection-rect {
- pointer-events: none;
- fill: transparent;
-}
-
-.ancestry-lineage-scatter-plot text {
- pointer-events: none;
-}.ancestry {
- display: block;
-}
-
-.ancestry .tick text{
- font-size: 12px;
-}
-
-.ancestry .tick line{
+.ancestry .selection-rect {
pointer-events: none;
- opacity: 0.2;
-}
-
-.ancestry .node circle {
- fill: #fff;
+ fill : transparent;
}
-/*.ancestry .node text { font: 12px sans-serif; }*/
-
-.ancestry .link {
+.ancestry text {
pointer-events: none;
- fill:none;
}
-
.ancestry .ancestry-legend text {
font-size: 13px;
}
@@ -181,7 +105,7 @@
/*left: 0;*/
/*}*/
-.ancestry-tooltip div.tooltip-colour-box {
+.ancestry-tooltip div.tooltip-color-box {
width: 100%;
height: 4px;
margin-top: 2px;
@@ -197,7 +121,7 @@
display: block;
}
-.ancestry-colourbar .axis line, .ancestry-colourbar .axis path {
+.ancestry-colorbar .axis line, .ancestry-colorbar .axis path {
opacity: 0;
}
diff --git a/dist/bundle.js b/dist/bundle.js
index a0458f9..3bb9b7c 100644
--- a/dist/bundle.js
+++ b/dist/bundle.js
@@ -63,5290 +63,16688 @@
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 14);
+/******/ return __webpack_require__(__webpack_require__.s = 315);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
-/***/ (function(module, exports) {
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_creator__ = __webpack_require__(43);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "creator", function() { return __WEBPACK_IMPORTED_MODULE_0__src_creator__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_local__ = __webpack_require__(233);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "local", function() { return __WEBPACK_IMPORTED_MODULE_1__src_local__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_matcher__ = __webpack_require__(91);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "matcher", function() { return __WEBPACK_IMPORTED_MODULE_2__src_matcher__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_mouse__ = __webpack_require__(234);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mouse", function() { return __WEBPACK_IMPORTED_MODULE_3__src_mouse__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_namespace__ = __webpack_require__(44);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "namespace", function() { return __WEBPACK_IMPORTED_MODULE_4__src_namespace__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_namespaces__ = __webpack_require__(45);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "namespaces", function() { return __WEBPACK_IMPORTED_MODULE_5__src_namespaces__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__src_select__ = __webpack_require__(235);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "select", function() { return __WEBPACK_IMPORTED_MODULE_6__src_select__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__src_selectAll__ = __webpack_require__(236);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "selectAll", function() { return __WEBPACK_IMPORTED_MODULE_7__src_selectAll__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__src_selection_index__ = __webpack_require__(4);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "selection", function() { return __WEBPACK_IMPORTED_MODULE_8__src_selection_index__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__src_selector__ = __webpack_require__(48);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "selector", function() { return __WEBPACK_IMPORTED_MODULE_9__src_selector__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__src_selectorAll__ = __webpack_require__(95);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "selectorAll", function() { return __WEBPACK_IMPORTED_MODULE_10__src_selectorAll__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__src_selection_style__ = __webpack_require__(94);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "style", function() { return __WEBPACK_IMPORTED_MODULE_11__src_selection_style__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__src_touch__ = __webpack_require__(263);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "touch", function() { return __WEBPACK_IMPORTED_MODULE_12__src_touch__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__src_touches__ = __webpack_require__(264);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "touches", function() { return __WEBPACK_IMPORTED_MODULE_13__src_touches__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__src_window__ = __webpack_require__(50);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "window", function() { return __WEBPACK_IMPORTED_MODULE_14__src_window__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__src_selection_on__ = __webpack_require__(47);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "event", function() { return __WEBPACK_IMPORTED_MODULE_15__src_selection_on__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "customEvent", function() { return __WEBPACK_IMPORTED_MODULE_15__src_selection_on__["b"]; });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-module.exports = angular;
/***/ }),
/* 1 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_bisect__ = __webpack_require__(57);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bisect", function() { return __WEBPACK_IMPORTED_MODULE_0__src_bisect__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bisectRight", function() { return __WEBPACK_IMPORTED_MODULE_0__src_bisect__["b"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bisectLeft", function() { return __WEBPACK_IMPORTED_MODULE_0__src_bisect__["c"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_ascending__ = __webpack_require__(13);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ascending", function() { return __WEBPACK_IMPORTED_MODULE_1__src_ascending__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_bisector__ = __webpack_require__(58);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bisector", function() { return __WEBPACK_IMPORTED_MODULE_2__src_bisector__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_cross__ = __webpack_require__(109);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "cross", function() { return __WEBPACK_IMPORTED_MODULE_3__src_cross__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_descending__ = __webpack_require__(110);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "descending", function() { return __WEBPACK_IMPORTED_MODULE_4__src_descending__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_deviation__ = __webpack_require__(59);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "deviation", function() { return __WEBPACK_IMPORTED_MODULE_5__src_deviation__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__src_extent__ = __webpack_require__(60);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "extent", function() { return __WEBPACK_IMPORTED_MODULE_6__src_extent__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__src_histogram__ = __webpack_require__(111);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "histogram", function() { return __WEBPACK_IMPORTED_MODULE_7__src_histogram__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__src_threshold_freedmanDiaconis__ = __webpack_require__(121);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "thresholdFreedmanDiaconis", function() { return __WEBPACK_IMPORTED_MODULE_8__src_threshold_freedmanDiaconis__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__src_threshold_scott__ = __webpack_require__(122);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "thresholdScott", function() { return __WEBPACK_IMPORTED_MODULE_9__src_threshold_scott__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__src_threshold_sturges__ = __webpack_require__(64);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "thresholdSturges", function() { return __WEBPACK_IMPORTED_MODULE_10__src_threshold_sturges__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__src_max__ = __webpack_require__(113);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "max", function() { return __WEBPACK_IMPORTED_MODULE_11__src_max__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__src_mean__ = __webpack_require__(114);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mean", function() { return __WEBPACK_IMPORTED_MODULE_12__src_mean__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__src_median__ = __webpack_require__(115);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "median", function() { return __WEBPACK_IMPORTED_MODULE_13__src_median__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__src_merge__ = __webpack_require__(116);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return __WEBPACK_IMPORTED_MODULE_14__src_merge__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__src_min__ = __webpack_require__(61);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "min", function() { return __WEBPACK_IMPORTED_MODULE_15__src_min__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__src_pairs__ = __webpack_require__(62);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return __WEBPACK_IMPORTED_MODULE_16__src_pairs__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__src_permute__ = __webpack_require__(117);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "permute", function() { return __WEBPACK_IMPORTED_MODULE_17__src_permute__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__src_quantile__ = __webpack_require__(29);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "quantile", function() { return __WEBPACK_IMPORTED_MODULE_18__src_quantile__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__src_range__ = __webpack_require__(63);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "range", function() { return __WEBPACK_IMPORTED_MODULE_19__src_range__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__src_scan__ = __webpack_require__(118);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return __WEBPACK_IMPORTED_MODULE_20__src_scan__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__src_shuffle__ = __webpack_require__(119);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "shuffle", function() { return __WEBPACK_IMPORTED_MODULE_21__src_shuffle__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__src_sum__ = __webpack_require__(120);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "sum", function() { return __WEBPACK_IMPORTED_MODULE_22__src_sum__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__src_ticks__ = __webpack_require__(65);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ticks", function() { return __WEBPACK_IMPORTED_MODULE_23__src_ticks__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "tickIncrement", function() { return __WEBPACK_IMPORTED_MODULE_23__src_ticks__["b"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "tickStep", function() { return __WEBPACK_IMPORTED_MODULE_23__src_ticks__["c"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__src_transpose__ = __webpack_require__(66);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "transpose", function() { return __WEBPACK_IMPORTED_MODULE_24__src_transpose__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__src_variance__ = __webpack_require__(67);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "variance", function() { return __WEBPACK_IMPORTED_MODULE_25__src_variance__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__src_zip__ = __webpack_require__(123);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return __WEBPACK_IMPORTED_MODULE_26__src_zip__["a"]; });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+/* 2 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (immutable) */ __webpack_exports__["a"] = newInterval;
+var t0 = new Date,
+ t1 = new Date;
+
+function newInterval(floori, offseti, count, field) {
+
+ function interval(date) {
+ return floori(date = new Date(+date)), date;
+ }
+
+ interval.floor = interval;
+
+ interval.ceil = function(date) {
+ return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;
+ };
+
+ interval.round = function(date) {
+ var d0 = interval(date),
+ d1 = interval.ceil(date);
+ return date - d0 < d1 - date ? d0 : d1;
+ };
+
+ interval.offset = function(date, step) {
+ return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;
+ };
+
+ interval.range = function(start, stop, step) {
+ var range = [];
+ start = interval.ceil(start);
+ step = step == null ? 1 : Math.floor(step);
+ if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date
+ do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)
+ return range;
+ };
+
+ interval.filter = function(test) {
+ return newInterval(function(date) {
+ if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);
+ }, function(date, step) {
+ if (date >= date) {
+ if (step < 0) while (++step <= 0) {
+ while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty
+ } else while (--step >= 0) {
+ while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty
+ }
+ }
+ });
+ };
+
+ if (count) {
+ interval.count = function(start, end) {
+ t0.setTime(+start), t1.setTime(+end);
+ floori(t0), floori(t1);
+ return Math.floor(count(t0, t1));
+ };
+
+ interval.every = function(step) {
+ step = Math.floor(step);
+ return !isFinite(step) || !(step > 0) ? null
+ : !(step > 1) ? interval
+ : interval.filter(field
+ ? function(d) { return field(d) % step === 0; }
+ : function(d) { return interval.count(0, d) % step === 0; });
+ };
+ }
+
+ return interval;
+}
+
+
+/***/ }),
+/* 3 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_value__ = __webpack_require__(40);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolate", function() { return __WEBPACK_IMPORTED_MODULE_0__src_value__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_array__ = __webpack_require__(80);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateArray", function() { return __WEBPACK_IMPORTED_MODULE_1__src_array__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_basis__ = __webpack_require__(39);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateBasis", function() { return __WEBPACK_IMPORTED_MODULE_2__src_basis__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_basisClosed__ = __webpack_require__(81);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateBasisClosed", function() { return __WEBPACK_IMPORTED_MODULE_3__src_basisClosed__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_date__ = __webpack_require__(83);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateDate", function() { return __WEBPACK_IMPORTED_MODULE_4__src_date__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_number__ = __webpack_require__(23);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateNumber", function() { return __WEBPACK_IMPORTED_MODULE_5__src_number__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__src_object__ = __webpack_require__(84);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateObject", function() { return __WEBPACK_IMPORTED_MODULE_6__src_object__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__src_round__ = __webpack_require__(190);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateRound", function() { return __WEBPACK_IMPORTED_MODULE_7__src_round__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__src_string__ = __webpack_require__(86);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateString", function() { return __WEBPACK_IMPORTED_MODULE_8__src_string__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__src_transform_index__ = __webpack_require__(192);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateTransformCss", function() { return __WEBPACK_IMPORTED_MODULE_9__src_transform_index__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateTransformSvg", function() { return __WEBPACK_IMPORTED_MODULE_9__src_transform_index__["b"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__src_zoom__ = __webpack_require__(194);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateZoom", function() { return __WEBPACK_IMPORTED_MODULE_10__src_zoom__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__src_rgb__ = __webpack_require__(85);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateRgb", function() { return __WEBPACK_IMPORTED_MODULE_11__src_rgb__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateRgbBasis", function() { return __WEBPACK_IMPORTED_MODULE_11__src_rgb__["b"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateRgbBasisClosed", function() { return __WEBPACK_IMPORTED_MODULE_11__src_rgb__["c"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__src_hsl__ = __webpack_require__(187);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateHsl", function() { return __WEBPACK_IMPORTED_MODULE_12__src_hsl__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateHslLong", function() { return __WEBPACK_IMPORTED_MODULE_12__src_hsl__["b"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__src_lab__ = __webpack_require__(188);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateLab", function() { return __WEBPACK_IMPORTED_MODULE_13__src_lab__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__src_hcl__ = __webpack_require__(186);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateHcl", function() { return __WEBPACK_IMPORTED_MODULE_14__src_hcl__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateHclLong", function() { return __WEBPACK_IMPORTED_MODULE_14__src_hcl__["b"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__src_cubehelix__ = __webpack_require__(185);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateCubehelix", function() { return __WEBPACK_IMPORTED_MODULE_15__src_cubehelix__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateCubehelixLong", function() { return __WEBPACK_IMPORTED_MODULE_15__src_cubehelix__["b"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__src_quantize__ = __webpack_require__(189);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "quantize", function() { return __WEBPACK_IMPORTED_MODULE_16__src_quantize__["a"]; });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+/* 4 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__select__ = __webpack_require__(258);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__selectAll__ = __webpack_require__(259);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__filter__ = __webpack_require__(247);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__data__ = __webpack_require__(241);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__enter__ = __webpack_require__(92);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__exit__ = __webpack_require__(246);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__merge__ = __webpack_require__(251);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__order__ = __webpack_require__(254);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__sort__ = __webpack_require__(261);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__call__ = __webpack_require__(239);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__nodes__ = __webpack_require__(253);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__node__ = __webpack_require__(252);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__size__ = __webpack_require__(260);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__empty__ = __webpack_require__(245);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__each__ = __webpack_require__(244);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__attr__ = __webpack_require__(238);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__style__ = __webpack_require__(94);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__property__ = __webpack_require__(255);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__classed__ = __webpack_require__(240);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__text__ = __webpack_require__(262);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__html__ = __webpack_require__(248);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__raise__ = __webpack_require__(256);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__lower__ = __webpack_require__(250);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__append__ = __webpack_require__(237);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__insert__ = __webpack_require__(249);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__remove__ = __webpack_require__(257);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__datum__ = __webpack_require__(242);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__on__ = __webpack_require__(47);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__dispatch__ = __webpack_require__(243);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return root; });
+/* harmony export (immutable) */ __webpack_exports__["b"] = Selection;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+var root = [null];
+
+function Selection(groups, parents) {
+ this._groups = groups;
+ this._parents = parents;
+}
+
+function selection() {
+ return new Selection([[document.documentElement]], root);
+}
+
+Selection.prototype = selection.prototype = {
+ constructor: Selection,
+ select: __WEBPACK_IMPORTED_MODULE_0__select__["a" /* default */],
+ selectAll: __WEBPACK_IMPORTED_MODULE_1__selectAll__["a" /* default */],
+ filter: __WEBPACK_IMPORTED_MODULE_2__filter__["a" /* default */],
+ data: __WEBPACK_IMPORTED_MODULE_3__data__["a" /* default */],
+ enter: __WEBPACK_IMPORTED_MODULE_4__enter__["a" /* default */],
+ exit: __WEBPACK_IMPORTED_MODULE_5__exit__["a" /* default */],
+ merge: __WEBPACK_IMPORTED_MODULE_6__merge__["a" /* default */],
+ order: __WEBPACK_IMPORTED_MODULE_7__order__["a" /* default */],
+ sort: __WEBPACK_IMPORTED_MODULE_8__sort__["a" /* default */],
+ call: __WEBPACK_IMPORTED_MODULE_9__call__["a" /* default */],
+ nodes: __WEBPACK_IMPORTED_MODULE_10__nodes__["a" /* default */],
+ node: __WEBPACK_IMPORTED_MODULE_11__node__["a" /* default */],
+ size: __WEBPACK_IMPORTED_MODULE_12__size__["a" /* default */],
+ empty: __WEBPACK_IMPORTED_MODULE_13__empty__["a" /* default */],
+ each: __WEBPACK_IMPORTED_MODULE_14__each__["a" /* default */],
+ attr: __WEBPACK_IMPORTED_MODULE_15__attr__["a" /* default */],
+ style: __WEBPACK_IMPORTED_MODULE_16__style__["b" /* default */],
+ property: __WEBPACK_IMPORTED_MODULE_17__property__["a" /* default */],
+ classed: __WEBPACK_IMPORTED_MODULE_18__classed__["a" /* default */],
+ text: __WEBPACK_IMPORTED_MODULE_19__text__["a" /* default */],
+ html: __WEBPACK_IMPORTED_MODULE_20__html__["a" /* default */],
+ raise: __WEBPACK_IMPORTED_MODULE_21__raise__["a" /* default */],
+ lower: __WEBPACK_IMPORTED_MODULE_22__lower__["a" /* default */],
+ append: __WEBPACK_IMPORTED_MODULE_23__append__["a" /* default */],
+ insert: __WEBPACK_IMPORTED_MODULE_24__insert__["a" /* default */],
+ remove: __WEBPACK_IMPORTED_MODULE_25__remove__["a" /* default */],
+ datum: __WEBPACK_IMPORTED_MODULE_26__datum__["a" /* default */],
+ on: __WEBPACK_IMPORTED_MODULE_27__on__["c" /* default */],
+ dispatch: __WEBPACK_IMPORTED_MODULE_28__dispatch__["a" /* default */]
+};
+
+/* harmony default export */ __webpack_exports__["a"] = selection;
+
+
+/***/ }),
+/* 5 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_dispatch__ = __webpack_require__(15);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_d3_timer__ = __webpack_require__(99);
+/* unused harmony export CREATED */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return SCHEDULED; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return STARTING; });
+/* unused harmony export STARTED */
+/* unused harmony export RUNNING */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return ENDING; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return ENDED; });
+/* harmony export (immutable) */ __webpack_exports__["g"] = init;
+/* harmony export (immutable) */ __webpack_exports__["e"] = set;
+/* harmony export (immutable) */ __webpack_exports__["f"] = get;
+
+
+
+var emptyOn = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_dispatch__["dispatch"])("start", "end", "interrupt");
+var emptyTween = [];
+
+var CREATED = 0;
+var SCHEDULED = 1;
+var STARTING = 2;
+var STARTED = 3;
+var RUNNING = 4;
+var ENDING = 5;
+var ENDED = 6;
+
+/* harmony default export */ __webpack_exports__["h"] = function(node, name, id, index, group, timing) {
+ var schedules = node.__transition;
+ if (!schedules) node.__transition = {};
+ else if (id in schedules) return;
+ create(node, id, {
+ name: name,
+ index: index, // For context during callback.
+ group: group, // For context during callback.
+ on: emptyOn,
+ tween: emptyTween,
+ time: timing.time,
+ delay: timing.delay,
+ duration: timing.duration,
+ ease: timing.ease,
+ timer: null,
+ state: CREATED
+ });
+};
+
+function init(node, id) {
+ var schedule = node.__transition;
+ if (!schedule || !(schedule = schedule[id]) || schedule.state > CREATED) throw new Error("too late");
+ return schedule;
+}
+
+function set(node, id) {
+ var schedule = node.__transition;
+ if (!schedule || !(schedule = schedule[id]) || schedule.state > STARTING) throw new Error("too late");
+ return schedule;
+}
+
+function get(node, id) {
+ var schedule = node.__transition;
+ if (!schedule || !(schedule = schedule[id])) throw new Error("too late");
+ return schedule;
+}
+
+function create(node, id, self) {
+ var schedules = node.__transition,
+ tween;
+
+ // Initialize the self timer when the transition is created.
+ // Note the actual delay is not known until the first callback!
+ schedules[id] = self;
+ self.timer = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_timer__["a" /* timer */])(schedule, 0, self.time);
+
+ function schedule(elapsed) {
+ self.state = SCHEDULED;
+ self.timer.restart(start, self.delay, self.time);
+
+ // If the elapsed delay is less than our first sleep, start immediately.
+ if (self.delay <= elapsed) start(elapsed - self.delay);
+ }
+
+ function start(elapsed) {
+ var i, j, n, o;
+
+ // If the state is not SCHEDULED, then we previously errored on start.
+ if (self.state !== SCHEDULED) return stop();
+
+ for (i in schedules) {
+ o = schedules[i];
+ if (o.name !== self.name) continue;
+
+ // While this element already has a starting transition during this frame,
+ // defer starting an interrupting transition until that transition has a
+ // chance to tick (and possibly end); see d3/d3-transition#54!
+ if (o.state === STARTED) return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_timer__["b" /* timeout */])(start);
+
+ // Interrupt the active transition, if any.
+ // Dispatch the interrupt event.
+ if (o.state === RUNNING) {
+ o.state = ENDED;
+ o.timer.stop();
+ o.on.call("interrupt", node, node.__data__, o.index, o.group);
+ delete schedules[i];
+ }
+
+ // Cancel any pre-empted transitions. No interrupt event is dispatched
+ // because the cancelled transitions never started. Note that this also
+ // removes this transition from the pending list!
+ else if (+i < id) {
+ o.state = ENDED;
+ o.timer.stop();
+ delete schedules[i];
+ }
+ }
+
+ // Defer the first tick to end of the current frame; see d3/d3#1576.
+ // Note the transition may be canceled after start and before the first tick!
+ // Note this must be scheduled before the start event; see d3/d3-transition#16!
+ // Assuming this is successful, subsequent callbacks go straight to tick.
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_timer__["b" /* timeout */])(function() {
+ if (self.state === STARTED) {
+ self.state = RUNNING;
+ self.timer.restart(tick, self.delay, self.time);
+ tick(elapsed);
+ }
+ });
+
+ // Dispatch the start event.
+ // Note this must be done before the tween are initialized.
+ self.state = STARTING;
+ self.on.call("start", node, node.__data__, self.index, self.group);
+ if (self.state !== STARTING) return; // interrupted
+ self.state = STARTED;
+
+ // Initialize the tween, deleting null tween.
+ tween = new Array(n = self.tween.length);
+ for (i = 0, j = -1; i < n; ++i) {
+ if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {
+ tween[++j] = o;
+ }
+ }
+ tween.length = j + 1;
+ }
+
+ function tick(elapsed) {
+ var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),
+ i = -1,
+ n = tween.length;
+
+ while (++i < n) {
+ tween[i].call(null, t);
+ }
+
+ // Dispatch the end event.
+ if (self.state === ENDING) {
+ self.on.call("end", node, node.__data__, self.index, self.group);
+ stop();
+ }
+ }
+
+ function stop() {
+ self.state = ENDED;
+ self.timer.stop();
+ delete schedules[id];
+ for (var i in schedules) return; // eslint-disable-line no-unused-vars
+ delete node.__transition;
+ }
+}
+
+
+/***/ }),
+/* 6 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_color__ = __webpack_require__(31);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __WEBPACK_IMPORTED_MODULE_0__src_color__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return __WEBPACK_IMPORTED_MODULE_0__src_color__["h"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return __WEBPACK_IMPORTED_MODULE_0__src_color__["g"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_lab__ = __webpack_require__(139);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return __WEBPACK_IMPORTED_MODULE_1__src_lab__["b"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return __WEBPACK_IMPORTED_MODULE_1__src_lab__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_cubehelix__ = __webpack_require__(138);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_2__src_cubehelix__["a"]; });
+
+
+
+
+
+/***/ }),
+/* 7 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return durationSecond; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return durationMinute; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return durationHour; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return durationDay; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return durationWeek; });
+var durationSecond = 1e3;
+var durationMinute = 6e4;
+var durationHour = 36e5;
+var durationDay = 864e5;
+var durationWeek = 6048e5;
+
+
+/***/ }),
+/* 8 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(0);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__attr__ = __webpack_require__(286);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__attrTween__ = __webpack_require__(287);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__delay__ = __webpack_require__(288);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__duration__ = __webpack_require__(289);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__ease__ = __webpack_require__(290);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__filter__ = __webpack_require__(291);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__merge__ = __webpack_require__(292);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__on__ = __webpack_require__(293);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__remove__ = __webpack_require__(294);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__select__ = __webpack_require__(295);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__selectAll__ = __webpack_require__(296);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__selection__ = __webpack_require__(297);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__style__ = __webpack_require__(298);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__styleTween__ = __webpack_require__(299);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__text__ = __webpack_require__(300);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__transition__ = __webpack_require__(301);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__tween__ = __webpack_require__(26);
+/* harmony export (immutable) */ __webpack_exports__["a"] = Transition;
+/* harmony export (immutable) */ __webpack_exports__["c"] = transition;
+/* harmony export (immutable) */ __webpack_exports__["b"] = newId;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+var id = 0;
+
+function Transition(groups, parents, name, id) {
+ this._groups = groups;
+ this._parents = parents;
+ this._name = name;
+ this._id = id;
+}
+
+function transition(name) {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_selection__["selection"])().transition(name);
+}
+
+function newId() {
+ return ++id;
+}
+
+var selection_prototype = __WEBPACK_IMPORTED_MODULE_0_d3_selection__["selection"].prototype;
+
+Transition.prototype = transition.prototype = {
+ constructor: Transition,
+ select: __WEBPACK_IMPORTED_MODULE_10__select__["a" /* default */],
+ selectAll: __WEBPACK_IMPORTED_MODULE_11__selectAll__["a" /* default */],
+ filter: __WEBPACK_IMPORTED_MODULE_6__filter__["a" /* default */],
+ merge: __WEBPACK_IMPORTED_MODULE_7__merge__["a" /* default */],
+ selection: __WEBPACK_IMPORTED_MODULE_12__selection__["a" /* default */],
+ transition: __WEBPACK_IMPORTED_MODULE_16__transition__["a" /* default */],
+ call: selection_prototype.call,
+ nodes: selection_prototype.nodes,
+ node: selection_prototype.node,
+ size: selection_prototype.size,
+ empty: selection_prototype.empty,
+ each: selection_prototype.each,
+ on: __WEBPACK_IMPORTED_MODULE_8__on__["a" /* default */],
+ attr: __WEBPACK_IMPORTED_MODULE_1__attr__["a" /* default */],
+ attrTween: __WEBPACK_IMPORTED_MODULE_2__attrTween__["a" /* default */],
+ style: __WEBPACK_IMPORTED_MODULE_13__style__["a" /* default */],
+ styleTween: __WEBPACK_IMPORTED_MODULE_14__styleTween__["a" /* default */],
+ text: __WEBPACK_IMPORTED_MODULE_15__text__["a" /* default */],
+ remove: __WEBPACK_IMPORTED_MODULE_9__remove__["a" /* default */],
+ tween: __WEBPACK_IMPORTED_MODULE_17__tween__["a" /* default */],
+ delay: __WEBPACK_IMPORTED_MODULE_3__delay__["a" /* default */],
+ duration: __WEBPACK_IMPORTED_MODULE_4__duration__["a" /* default */],
+ ease: __WEBPACK_IMPORTED_MODULE_5__ease__["a" /* default */]
+};
+
+
+/***/ }),
+/* 9 */
/***/ (function(module, exports) {
-module.exports = d3;
+module.exports = angular;
+
+/***/ }),
+/* 10 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_band__ = __webpack_require__(209);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scaleBand", function() { return __WEBPACK_IMPORTED_MODULE_0__src_band__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scalePoint", function() { return __WEBPACK_IMPORTED_MODULE_0__src_band__["b"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_identity__ = __webpack_require__(215);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scaleIdentity", function() { return __WEBPACK_IMPORTED_MODULE_1__src_identity__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_linear__ = __webpack_require__(20);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scaleLinear", function() { return __WEBPACK_IMPORTED_MODULE_2__src_linear__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_log__ = __webpack_require__(216);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scaleLog", function() { return __WEBPACK_IMPORTED_MODULE_3__src_log__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_ordinal__ = __webpack_require__(89);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scaleOrdinal", function() { return __WEBPACK_IMPORTED_MODULE_4__src_ordinal__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scaleImplicit", function() { return __WEBPACK_IMPORTED_MODULE_4__src_ordinal__["b"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_pow__ = __webpack_require__(217);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scalePow", function() { return __WEBPACK_IMPORTED_MODULE_5__src_pow__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scaleSqrt", function() { return __WEBPACK_IMPORTED_MODULE_5__src_pow__["b"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__src_quantile__ = __webpack_require__(218);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scaleQuantile", function() { return __WEBPACK_IMPORTED_MODULE_6__src_quantile__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__src_quantize__ = __webpack_require__(219);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scaleQuantize", function() { return __WEBPACK_IMPORTED_MODULE_7__src_quantize__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__src_threshold__ = __webpack_require__(222);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scaleThreshold", function() { return __WEBPACK_IMPORTED_MODULE_8__src_threshold__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__src_time__ = __webpack_require__(90);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scaleTime", function() { return __WEBPACK_IMPORTED_MODULE_9__src_time__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__src_utcTime__ = __webpack_require__(224);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scaleUtc", function() { return __WEBPACK_IMPORTED_MODULE_10__src_utcTime__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__src_category10__ = __webpack_require__(210);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "schemeCategory10", function() { return __WEBPACK_IMPORTED_MODULE_11__src_category10__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__src_category20b__ = __webpack_require__(212);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "schemeCategory20b", function() { return __WEBPACK_IMPORTED_MODULE_12__src_category20b__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__src_category20c__ = __webpack_require__(213);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "schemeCategory20c", function() { return __WEBPACK_IMPORTED_MODULE_13__src_category20c__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__src_category20__ = __webpack_require__(211);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "schemeCategory20", function() { return __WEBPACK_IMPORTED_MODULE_14__src_category20__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__src_cubehelix__ = __webpack_require__(214);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateCubehelixDefault", function() { return __WEBPACK_IMPORTED_MODULE_15__src_cubehelix__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__src_rainbow__ = __webpack_require__(220);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateRainbow", function() { return __WEBPACK_IMPORTED_MODULE_16__src_rainbow__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateWarm", function() { return __WEBPACK_IMPORTED_MODULE_16__src_rainbow__["b"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateCool", function() { return __WEBPACK_IMPORTED_MODULE_16__src_rainbow__["c"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__src_viridis__ = __webpack_require__(225);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateViridis", function() { return __WEBPACK_IMPORTED_MODULE_17__src_viridis__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateMagma", function() { return __WEBPACK_IMPORTED_MODULE_17__src_viridis__["b"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolateInferno", function() { return __WEBPACK_IMPORTED_MODULE_17__src_viridis__["c"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interpolatePlasma", function() { return __WEBPACK_IMPORTED_MODULE_17__src_viridis__["d"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__src_sequential__ = __webpack_require__(221);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "scaleSequential", function() { return __WEBPACK_IMPORTED_MODULE_18__src_sequential__["a"]; });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+/* 11 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return map; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return slice; });
+var array = Array.prototype;
+
+var map = array.map;
+var slice = array.slice;
+
+
+/***/ }),
+/* 12 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__icons_sprite_css__ = __webpack_require__(309);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__icons_sprite_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__icons_sprite_css__);
+/* harmony export (immutable) */ __webpack_exports__["u"] = almostEq;
+/* harmony export (immutable) */ __webpack_exports__["f"] = getClipUniqueId;
+/* harmony export (immutable) */ __webpack_exports__["p"] = d3legend;
+/* harmony export (immutable) */ __webpack_exports__["t"] = createPlotControls;
+/* harmony export (immutable) */ __webpack_exports__["a"] = mergeTemplateLayout;
+/* harmony export (immutable) */ __webpack_exports__["h"] = createNodeTypes;
+/* harmony export (immutable) */ __webpack_exports__["i"] = createDynamicNodeAttr;
+/* unused harmony export scaleProperties */
+/* harmony export (immutable) */ __webpack_exports__["v"] = createTreeLayout;
+/* harmony export (immutable) */ __webpack_exports__["g"] = flattifyTrees;
+/* harmony export (immutable) */ __webpack_exports__["b"] = spreadNodes;
+/* unused harmony export spreadGenerations */
+/* harmony export (immutable) */ __webpack_exports__["c"] = project;
+/* harmony export (immutable) */ __webpack_exports__["m"] = skipProperties;
+/* harmony export (immutable) */ __webpack_exports__["n"] = getDomainLength;
+/* unused harmony export getBBox */
+/* harmony export (immutable) */ __webpack_exports__["l"] = getNodeLabelBBox;
+/* harmony export (immutable) */ __webpack_exports__["o"] = getLinkLabelBBox;
+/* unused harmony export resetBBox */
+/* harmony export (immutable) */ __webpack_exports__["r"] = drawColorBar;
+/* harmony export (immutable) */ __webpack_exports__["q"] = calcColorBarSize;
+/* harmony export (immutable) */ __webpack_exports__["j"] = testLabelLength;
+/* harmony export (immutable) */ __webpack_exports__["k"] = allocatePaddingInScale;
+/* unused harmony export getTranslation */
+/* harmony export (immutable) */ __webpack_exports__["d"] = attachActionOnResize;
+/* unused harmony export toggleSelectionDisplay */
+
+
+let d3 = Object.assign({},
+ __webpack_require__(0),
+ __webpack_require__(10),
+ __webpack_require__(1),
+ __webpack_require__(68),
+ __webpack_require__(195)
+);
+
+d3.selection.prototype.sortNoInsert = function(compare) {
+ function compareNode(a, b) {
+ return a && b ? compare(a.__data__, b.__data__) : !a - !b;
+ }
+
+ for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {
+ if (node = group[i]) {
+ sortgroup[i] = node;
+ }
+ }
+ sortgroup.sort(compareNode);
+ }
+
+ return d3.selectAll(sortgroups[0]);
+};
+
+d3.selection.prototype.partition = function(filterCallback) {
+ let matched = [], unmatched = [];
+ this.each(function(d) {
+ (filterCallback(d) ? matched : unmatched).push(this);
+ });
+ return [d3.selectAll(matched), d3.selectAll(unmatched)];
+};
+
+Number.prototype.clamp = function (min, max) {
+ return Math.min(Math.max(this, min), max);
+};
+
+function almostEq(x, y, eps=1e-6) {
+ return Math.abs(x - y) < eps;
+}
+
+function getClipUniqueId() {
+ return (d3.max(d3.selectAll('clipPath').data()) || 0) + 1;
+}
+
+function d3legend() {
+ let splitAfter = 0,
+ anchor = {x: 'outside', y: 'inside'},
+ seriesNames = null,
+ colorScale = null,
+ onMouseOver = null,
+ onMouseOut = null,
+ onClick = null,
+ selectedItems = new Set(),
+ verticalItemSpacing = 10,
+ horizontalItemSpacing = 20,
+ padding = 10,
+ shapeSize = 10,
+ maxSize = {width: -1, height: -1},
+ background = 'white';
+
+ function legend(g) {
+ splitAfter = splitAfter.clamp(0, seriesNames.length);
+ if (splitAfter === 0) splitAfter = seriesNames.length;
+ let longestName = seriesNames.reduce((a, b) => a.length > b.length ? a : b);
+
+ let lengthTestString = g.append('text').attr('visibility', false).text(longestName);
+ let box = lengthTestString.node().getBBox();
+ box.height = parseInt(window.getComputedStyle(lengthTestString.node()).fontSize, 10);
+ lengthTestString.remove();
+
+ let columnWidth = box.width + shapeSize + 5,
+ rowHeight = box.height;
+
+ if (padding + splitAfter * (columnWidth + horizontalItemSpacing) > maxSize.width)
+ splitAfter = Math.floor((maxSize.width - padding) / (columnWidth + horizontalItemSpacing));
+
+ if (padding + Math.floor(seriesNames.length / splitAfter) * (rowHeight + verticalItemSpacing) > maxSize.height)
+ splitAfter = Math.ceil(1.0 / ((maxSize.height - padding) / (rowHeight + verticalItemSpacing) / seriesNames.length));
+
+ let rows = splitAfter > 0 ? Math.ceil(seriesNames.length / splitAfter) : 1,
+ cols = splitAfter > 0 ? splitAfter : seriesNames.length,
+ w = cols * columnWidth + (cols - 1) * horizontalItemSpacing + 2 * padding,
+ h = rows * rowHeight + (rows - 1) * verticalItemSpacing + 2 * padding,
+ shapeVerticalOffset = (rowHeight - shapeSize) / 2,
+ textVerticalOffset = (rowHeight + box.height) / 2 - 2,
+ legendHorizontalOffset = anchor.x === 'left' ? 0 : (anchor.x === 'right' ? -w : -w / 2),
+ legendVerticalOffset = anchor.y === 'top' ? 0 : (anchor.y === 'bottom' ? -h : -h / 2);
+
+ g.append('rect')
+ .attr('x', legendHorizontalOffset)
+ .attr('y', legendVerticalOffset)
+ .attr('width', w)
+ .attr('height', h)
+ .attr('fill', background)
+ .style('opacity', 0.75);
+
+ let item = g.selectAll('g.legend-item').data(seriesNames.map(label => {
+ return {
+ label,
+ active: true
+ }
+ }));
+
+ let itemEnter = item.enter()
+ .append('g')
+ .attr('class', 'legend-item');
+
+ itemEnter.attr('transform', (d, i) => `translate(${legendHorizontalOffset + padding + (i % splitAfter) * (columnWidth + horizontalItemSpacing)},
+ ${legendVerticalOffset + padding + Math.floor(i / splitAfter) * (rowHeight + verticalItemSpacing)})`);
+
+ itemEnter.each(function (d) {
+ let sel = d3.select(this);
+
+ sel.append('rect')
+ .attr('class', 'shape')
+ .attr('x', 2)
+ .attr('y', shapeVerticalOffset)
+ .attr('width', shapeSize)
+ .attr('height', shapeSize)
+ .attr('fill', selectedItems.has(d.label) ? colorScale(d.label) : 'white')
+ .attr('stroke', colorScale(d.label));
+
+ sel.append('text')
+ .attr('x', shapeSize + 5)
+ .attr('y', textVerticalOffset)
+ .attr('fill', 'black')
+ .attr('font-size', 13)
+ .text(d.label);
+
+ sel.append('rect')
+ .attr('class', 'legend-item-mouse-capture')
+ .attr('x', 0)
+ .attr('y', 0)
+ .attr('width', columnWidth)
+ .attr('height', rowHeight)
+ .attr('fill', 'white')
+ .attr('opacity', 0);
+ });
+
+ if (onMouseOver) itemEnter.on('mouseover', onMouseOver);
+ if (onMouseOut) itemEnter.on('mouseout', onMouseOut);
+ if (onClick) itemEnter.on('click', onClick);
+ }
+
+ legend.splitAfter = function (x) {
+ if (!arguments.length) return splitAfter;
+ splitAfter = x;
+ return legend;
+ };
+
+ legend.anchor = function (x) {
+ if (!arguments.length) return anchor;
+ anchor = x;
+ return this;
+ };
+
+ legend.maxSize = function (x) {
+ if (!arguments.length) return maxSize;
+ if (x.width !== undefined && x.height !== undefined)
+ maxSize = x;
+ return legend;
+ };
+
+ legend.seriesNames = function (x) {
+ if (!arguments.length) return seriesNames;
+ seriesNames = x;
+ return legend;
+ };
+
+ legend.colorScale = function (x) {
+ if (!arguments.length) return colorScale;
+ colorScale = x;
+ return legend;
+ };
+
+ legend.backgroundColor = function (x) {
+ if (!arguments.length) return background;
+ background = x;
+ return legend;
+ };
+
+ legend.onMouseOver = function (x) {
+ if (!arguments.length) return onMouseOver;
+ onMouseOver = x;
+ return legend;
+ };
+
+ legend.onMouseOut = function (x) {
+ if (!arguments.length) return onMouseOut;
+ onMouseOut = x;
+ return legend;
+ };
+
+ legend.onClick = function (x) {
+ if (!arguments.length) return onClick;
+ onClick = x;
+ return legend;
+ };
+
+ legend.selectedItems = function (x) {
+ if (!arguments.length) return selectedItems;
+ selectedItems = x;
+ return legend;
+ };
+
+ return legend;
+}
+
+function createPlotControls(root, controls, order, activeControls=new Set()) {
+ const config = {
+ download: {
+ icon: 'svg-ic_photo_camera_black_24px',
+ switchable: false
+ },
+ select: {
+ icon: 'svg-ic_radio_button_checked_black_24px',
+ switchable: true,
+ disables: ['zoom', 'rotate']
+ },
+ zoom: {
+ icon: 'svg-ic_open_with_black_24px',
+ switchable: true,
+ disables: ['select', 'rotate']
+ },
+ rotate: {
+ icon: 'svg-ic_rotate_right_black_24px',
+ switchable: true,
+ disables: ['zoom', 'select']
+ },
+ label: {
+ icon: 'svg-ic_label_black_24px',
+ switchable: true
+ },
+ brush: {
+ icon: 'svg-ic_crop_black_24px',
+ switchable: true
+ }
+ };
+ let plotRoot = d3.select(root),
+ ctrls = Object.keys(controls),
+ timeoutId = null,
+ isVisible = false;
+
+ plotRoot.selectAll('div.plot-control-panel').remove();
+
+ let controlPanel = plotRoot.append('div')
+ .attr('class', 'plot-control-panel')
+ .style('visibility', 'hidden');
+
+ controlPanel.selectAll('div')
+ .data(order)
+ .enter()
+ .append('div')
+ .attr('class', action => `${config[action].icon} svg-icon action-${action}`)
+ .classed('active', action => activeControls.has(action) && config[action].switchable)
+ .on('click', function(action) {
+ let self = d3.select(this);
+ let active = self.classed('active');
+ if (config[action].switchable) {
+ self.classed('active', !active);
+ if (config[action].disables) {
+ for (let actionToDisable of config[action].disables) {
+ let selectMode = plotRoot.select(`div.action-${actionToDisable}`);
+ if (!selectMode.empty() && selectMode.classed('active') && !active) {
+ selectMode.classed('active', false);
+ (controls[actionToDisable])(false);
+ }
+ }
+ }
+ setActiveControl();
+ }
+ (controls[action])(!active);
+ });
+
+ plotRoot.select('svg').on('mousemove', function() {
+ if (!isVisible) {
+ controlPanel.style('visibility', 'visible').transition().style('opacity', 1);
+ isVisible = true;
+ }
+ clearTimeout(timeoutId);
+ timeoutId = setTimeout(function() {
+ controlPanel.style('opacity', 0).style('visibility', 'hidden');
+ isVisible = false;
+ }, 2500);
+ });
+
+ for (let ctrl of ctrls) {
+ if (config[ctrl].switchable) controls[ctrl](activeControls.has(ctrl));
+ }
+
+
+ function setActiveControl() {
+ activeControls.clear();
+ for (let activeCtrl of plotRoot.selectAll('.active').data()) {
+ activeControls.add(activeCtrl);
+ }
+ }
+}
+
+class d3tooltip {
+ constructor(g) {
+ this.tip = g.append('div').attr('class', 'ancestry-tooltip');
+ this.pos = [0, 0];
+ this.hide();
+ }
+
+ position(pos) {
+ if (!arguments.length) return this.pos;
+ this.pos = pos;
+ this.tip.style('left', `${pos[0]}px`)
+ .style('top', `${pos[1]}px`);
+ return this;
+ }
+
+ hide() {
+ this.tip.transition().delay(100).style('opacity', 0);
+ return this;
+ }
+
+ show() {
+ this.tip.transition().duration(0).style('opacity', 1);
+ return this;
+ }
+
+ html(content) {
+ this.tip.html(content);
+ return this;
+ }
+
+ static getRelativePosition(el, parent) {
+ let elPos = el.getBoundingClientRect(),
+ parentPos = parent.getBoundingClientRect();
+
+ return {x: (elPos.right + elPos.left) / 2 - parentPos.left, y: elPos.top - parentPos.top};
+ }
+}
+/* harmony export (immutable) */ __webpack_exports__["e"] = d3tooltip;
+
+
+function mergeTemplateLayout(layout, templateLayout) {
+ for (let p in templateLayout) {
+ if (layout.hasOwnProperty(p)) {
+ if (typeof templateLayout[p] == 'object' && !Array.isArray(templateLayout[p]) && templateLayout[p] != null) {
+ layout[p] = mergeTemplateLayout(layout[p], templateLayout[p]);
+ }
+ }
+ else {
+ if (typeof templateLayout[p] == 'object' && !Array.isArray(templateLayout[p]) && templateLayout[p] != null) {
+ layout[p] = mergeTemplateLayout({}, templateLayout[p]);
+ }
+ else {
+ layout[p] = templateLayout[p];
+ }
+ }
+ }
+ return layout;
+}
+
+function createNodeTypes(nodesArray, definedTypes, defaultType) {
+ let typesFromLayout = Object.keys(definedTypes),
+ typeNames = Array.from(new Set(nodesArray.map(node => node.type))),
+ types = {};
+ typeNames.forEach(type => {
+ types[type] = typesFromLayout.includes(type) ? mergeTemplateLayout(definedTypes[type], defaultType) : defaultType;
+ });
+ types[undefined] = defaultType;
+ return types;
+}
+
+function createDynamicNodeAttr(types, attrNames) {
+ let typeAttr = {};
+ for (let attr of attrNames) {
+ typeAttr[attr] = (d) => types[d.hasOwnProperty('data') ? d.data.type : d.type][attr];
+ }
+ return typeAttr;
+}
+
+
+function scaleProperties(props, scale, dynamic = false) {
+ let scaledProps = {};
+ for (let key in props) {
+ if (!props.hasOwnProperty(key)) continue;
+ let test = dynamic ? props[key]({type: undefined}) : props[key];
+ scaledProps[key] = !isNaN(test) && typeof test != 'string' ?
+ (dynamic ? d=> props[key](d) / scale : props[key] / scale) : props[key];
+ }
+ return scaledProps;
+}
+
+function createTreeLayout(nodes) {
+ //let nodes = copyNodesArray(nodesArray);
+ return nodes.map(node => {
+ node.children = nodes.filter(n => n.parent == node.name);
+ return node;
+ }).filter(n => !n.parent);
+}
+
+function flattifyTrees(trees) {
+ let flat = [];
+
+ function addToArray(node) {
+ if (node.taxon) {
+ flat.push(node.taxon);
+ return;
+ }
+ for (let child of node.children) {
+ addToArray(child);
+ }
+ }
+
+ if (Object.prototype.toString.call(trees) !== '[object Array]') {
+ trees = [trees]
+ }
+ for (let tree of trees) {
+ addToArray(tree);
+ }
+
+ return flat;
+}
+
+function spreadNodes(node, level=0) {
+ if (!node.children || !node.children.length) {
+ node.depth = 1;
+ return level;
+ }
+ let max = 1, childMax;
+ for (let child of node.children) {
+ childMax = spreadNodes(child, level + 1);
+ if (childMax > max) {
+ max = childMax;
+ }
+ }
+ node.depth = level / max;
+ return max;
+}
+
+function spreadGenerations(tree, gen = 0) {
+ tree.generation = gen;
+ for (let child of tree.children) {
+ spreadGenerations(child, gen + 1);
+ }
+}
+
+function project(d) {
+ let a = (d._theta - 90) / 180 * Math.PI;
+ return [d._r * Math.cos(a), d._r * Math.sin(a)];
+}
+
+function skipProperties(obj, props) {
+ let clone = Object.assign({}, obj);
+ for (let prop of [].concat(props)) {
+ delete clone[prop];
+ }
+ return clone;
+}
+
+function getDomainLength(scale) {
+ let domain = scale.domain();
+ return Math.abs(domain[1] - domain[0]);
+}
+
+function getBBox(d) {
+ let {top, bottom, right, left, width, height} = this.getBoundingClientRect();
+ d.bbox = {top, bottom, right, left};
+}
+
+function getNodeLabelBBox(d) {
+ d.bbox = {
+ left: d.x + (d.currentLabelPos['text-anchor'] == 'start' ? 0 : -d.width),
+ right: d.x + (d.currentLabelPos['text-anchor'] == 'start' ? d.width : 0),
+ top: d.y - d.height + d.dy,
+ bottom: d.y + d.dy
+ };
+}
+
+function getLinkLabelBBox(d) {
+ d.bbox = {
+ left: d.x - d.width / 2,
+ right: d.x + d.width / 2,
+ top: d.y - d.height + d.dy,
+ bottom: d.y + d.dy
+ };
+}
+
+function resetBBox(d) {
+ d.bbox = {
+ top: -100,
+ bottom: -100,
+ right: -100,
+ left: -100,
+ width: 0,
+ height: 0
+ };
+}
+
+class LabelCollisionDetection {
+ constructor(levelFixed, levels, nodeLabelPositions, viewport, markerBBox) {
+ let extraBorder = 10;
+ this.left = viewport[0][0] + extraBorder;
+ this.right = viewport[1][0] + extraBorder;
+ this.top = viewport[0][1] + extraBorder;
+ this.bottom = viewport[1][1] + extraBorder;
+ this.width = viewport[0][0] - viewport[1][0];
+ this.height = viewport[1][1] - viewport[0][1];
+ this.levels = levels;
+ this.levelFixed = levelFixed;
+ this.nodeLabelPositions = nodeLabelPositions;
+ this.quadtree = null;
+ this.markerBBox = markerBBox;
+ this.maxMarkerSize = {
+ width: Math.max.apply(Math, Object.values(markerBBox).map(d => d.width)),
+ height: Math.max.apply(Math, Object.values(markerBBox).map(d => d.height))
+ };
+ this.getMarkerBBox = this.getMarkerBBox.bind(this);
+ }
+
+ quadtreeSearch(d, searchRadius) {
+ let foundNodes = [],
+ point = {
+ x: (d.bbox.left + d.bbox.right) / 2,
+ y: (d.bbox.top + d.bbox.bottom) / 2
+ },
+ rx = searchRadius.x, ry = searchRadius.y,
+ px = point.x, py = point.y,
+ x0 = px - rx, y0 = py - ry, x3 = px + rx, y3 = py + ry;
+ this.quadtree.visit((node, x1, y1, x2, y2) => {
+ let outside = x1 >= x3 || y1 >= y3 || x2 < x0 || y2 < y0;
+ if (outside) return true;
+ let p = node.data;
+ if (p) {
+ if((Math.abs(px - p.x) <= rx || Math.abs(py - p.y) <= ry) && p != point) {
+ do {
+ foundNodes.push(node.data)
+ } while (node = node.next);
+ }
+ }
+ return false;
+ });
+
+ return foundNodes;
+ }
+
+ recalculateLabels() {
+ let that = this;
+ this.quadtree = d3.quadtree().extent([[-1, -1], [this.width + 1, this.height + 1]])
+ .x(d => d.x)
+ .y(d => d.y);
+
+ let isVisible = d => {
+ return d.x >= this.left && d.x <= this.right && d.y >= this.top && d.y <= this.bottom;
+ };
+ for (let fixedSelection of this.levelFixed) {
+ let filteredSelection = fixedSelection.filter(isVisible);
+ filteredSelection.each(this.getMarkerBBox);
+ this.quadtree.addAll(filteredSelection.data());
+ }
+ for (let level of this.levels) {
+ if (!level.length) {
+ continue;
+ }
+ let mergedSelection = level.length > 1 ? d3.selectAll([].concat.apply([], level.map(d => d.nodes()))) : level[0];
+ let [matchedSelection, unmatchedSelection] = mergedSelection.partition(isVisible);
+ unmatchedSelection.style('opacity', '1e-6');
+ recalculateCollisions(matchedSelection);
+ }
+
+ function recalculateCollisions(selection) {
+ selection
+ .sortNoInsert((a, b) => (b.x - a.x) - 0.01 * (b.y - a.y))
+ .each(function(d) {
+ let i = 0,
+ searchRadius = {
+ x: (d.width + that.maxMarkerSize.width) / 2,
+ y: (d.height + that.maxMarkerSize.height) / 2
+ },
+ collision = false,
+ sel = d3.select(this),
+ label_type = sel.attr('class');
+
+ if (label_type == 'node-label') {
+ do {
+ // set next position from the position's list
+ d.currentLabelPos = that.nodeLabelPositions[i++];
+ // apply the new position to DOM element
+ sel.each(d => {
+ d.x = d.node.x + d.currentLabelPos.x;
+ d.y = d.node.y + d.currentLabelPos.y + d.dy;
+ });
+ // recalculate label and node's new bounding boxes
+ sel.each(getNodeLabelBBox);
+
+ let neighbours = that.quadtreeSearch(d, searchRadius);
+ // check if the label collides with its neighbours
+ collision = LabelCollisionDetection.isColliding(d, neighbours);
+ } while (collision && i < that.nodeLabelPositions.length);
+ }
+ else { /* label_type == 'link-label' */
+ sel.each(getLinkLabelBBox);
+ let neighbours = that.quadtreeSearch(d, searchRadius);
+ collision = LabelCollisionDetection.isColliding(d, neighbours);
+ }
+ if(collision) { // reset bounding boxes if no non-colliding positions were found
+ resetBBox(d);
+ } else {
+ that.addToQuadtree(d);
+ if (label_type == 'node-label') {
+ sel.attr('x', d => d.x)
+ .attr('y', d => d.y)
+ .attr('text-anchor', d => d.currentLabelPos['text-anchor']);
+ }
+ }
+ // hide label if it collides
+ d.isColliding = collision;
+ sel.style('opacity', collision ? 1e-6 : 1);
+ });
+ }
+ }
+
+ addToQuadtree(d) {
+ let x = (d.bbox.left + d.bbox.right) / 2,
+ y = (d.bbox.bottom + d.bbox.top) / 2;
+ // add left border of label
+ this.quadtree.add({
+ x: d.bbox.left,
+ y,
+ bbox: d.bbox
+ });
+ // add right border of label
+ this.quadtree.add({
+ x: d.bbox.right,
+ y,
+ bbox: d.bbox
+ });
+ // add top border of label
+ this.quadtree.add({
+ x,
+ y: d.bbox.top,
+ bbox: d.bbox
+ });
+ // add bottom border of label
+ this.quadtree.add({
+ x,
+ y: d.bbox.bottom,
+ bbox: d.bbox
+ });
+ }
+
+ getMarkerBBox(d) {
+ let sizes = this.markerBBox[d.data.type];
+ d.bbox = {
+ top: d.y - sizes.height / 2,
+ bottom: d.y + sizes.height / 2,
+ right: d.x + sizes.width / 2,
+ left: d.x - sizes.width / 2
+ };
+ }
+
+ static checkCollision(rect1, rect2) {
+ return (rect1.left <= rect2.right &&
+ rect1.right >= rect2.left &&
+ rect1.bottom >= rect2.top &&
+ rect1.top <= rect2.bottom);
+ }
+
+ static isColliding(object1, objects) {
+ for(let object2 of objects) {
+ if (LabelCollisionDetection.checkCollision(object1.bbox, object2.bbox)) return true;
+ }
+ return false;
+ }
+}
+/* harmony export (immutable) */ __webpack_exports__["s"] = LabelCollisionDetection;
+
+
+let colorBarID = 0;
+function drawColorBar(selection, domain, heatmapOptions, defs) {
+
+ selection.selectAll('*').remove();
+
+ let width = heatmapOptions.colorBar.width,
+ height = heatmapOptions.colorBar.height,
+ colorScale = heatmapOptions.colorScale,
+ opacity = heatmapOptions.opacity,
+ title = heatmapOptions.title,
+ titleOffset = title ? 22 : 0;
+
+ let gradient = defs.append('svg:linearGradient')
+ .attr('id', `gradient${colorBarID}`)
+ .attr('x1', '0%')
+ .attr('y1', height > width ? '100%' : '0%')
+ .attr('x2', height > width ? '0%' : '100%')
+ .attr('y2', '0%')
+ .attr('spreadMethod', 'pad');
+
+ gradient.append('svg:stop')
+ .attr('offset', '0%')
+ .attr('stop-color', colorScale[0][1])
+ .attr('stop-opacity', 1);
+
+ gradient.append('svg:stop')
+ .attr('offset', '100%')
+ .attr('stop-color', colorScale[1][1])
+ .attr('stop-opacity', 1);
+
+ selection.append('rect')
+ .attr('x', titleOffset)
+ .attr('y', -height / 2)
+ .attr('width', width)
+ .attr('height', height)
+ .style('fill', `url(#gradient${colorBarID++})`)
+ .attr('stroke-width', 2)
+ .attr('stroke', 'grey')
+ .style('opacity', opacity);
+
+ if (title) {
+ selection.append('text')
+ .attr('class', 'axis-title')
+ .attr('transform', 'rotate(-90)')
+ .attr('dy', 12)
+ .attr('x', 0)
+ .style('text-anchor', 'middle')
+ .text(title);
+ }
+
+ // Define x axis and grid
+ let colorAxis = d3.axisRight()
+ .scale(d3.scaleLinear().domain(domain).range([height, 0]));
+
+ let axis = selection.append('g')
+ .attr('class', 'axis')
+ .attr('transform', `translate(${width + titleOffset}, ${-height / 2})`)
+ .call(colorAxis);
+
+ axis.selectAll('.tick text').attr('font-size', 12);
+}
+
+function calcColorBarSize(size, relativeSize) {
+ if (typeof size === 'string' || size instanceof String) {
+ if (size === 'auto') return relativeSize;
+ else if (size[size.length - 1] === '%') return relativeSize * parseInt(size) / 100;
+ else return relativeSize;
+ }
+ else return size;
+}
+
+function testLabelLength(svg, name, _attrs) {
+ let label = svg.append('text').text(name).attrs(_attrs),
+ rect = label.node().getBoundingClientRect();
+ label.remove();
+ return {
+ width: rect.width,
+ height: rect.height
+ };
+}
+
+function allocatePaddingInScale(scale, padding) {
+ let d = scale.domain()[0] instanceof Date ? scale.domain().map(x => x.getTime()) : scale.domain(),
+ r = scale.range(),
+ tmp1 = padding * (d[0] + d[1]),
+ tmp2 = r[0] - r[1] + 2 * padding,
+ d0p = (d[0] * (r[0] - r[1]) + tmp1) / tmp2,
+ d1p = (r[0] * d[0] - r[1] * d[1] + tmp1) / tmp2;
+
+ return scale.copy().domain([d0p, d1p]);
+}
+
+function getTranslation(transform) {
+ var g = document.createElementNS('http://www.w3.org/2000/svg', 'g');
+ g.setAttributeNS(null, 'transform', transform);
+ var matrix = g.transform.baseVal.consolidate().matrix;
+ return [matrix.e, matrix.f];
+}
+
+function attachActionOnResize(window, action) {
+ window = angular.element(window);
+ let width = window[0].innerWidth;
+ let lastUpdate = performance.now();
+ let scheduleId = null;
+ //let height = window[0].innerHeight;
+
+ window.on('resize', (event) => {
+ let newWidth = window[0].innerWidth,
+ now = performance.now();
+ //let newHeight = window[0].innerHeight;
+ if (width != newWidth /*|| height != newHeight*/) {
+ width = newWidth;
+ if (now - lastUpdate < 500) {
+ clearTimeout(scheduleId);
+ }
+ lastUpdate = now;
+ scheduleId = setTimeout(action, 500);
+ }
+ });
+}
+
+function toggleSelectionDisplay(selectionInViewport, selectionNotInViewport) {
+ selectionInViewport.style('display', 'inline');
+ selectionNotInViewport.style('display', 'none');
+}
+
+/***/ }),
+/* 13 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(a, b) {
+ return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
+};
+
+
+/***/ }),
+/* 14 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(x) {
+ return x === null ? NaN : +x;
+};
+
+
+/***/ }),
+/* 15 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_dispatch__ = __webpack_require__(140);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "dispatch", function() { return __WEBPACK_IMPORTED_MODULE_0__src_dispatch__["a"]; });
+
+
+
+/***/ }),
+/* 16 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_cluster__ = __webpack_require__(165);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "cluster", function() { return __WEBPACK_IMPORTED_MODULE_0__src_cluster__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_hierarchy_index__ = __webpack_require__(37);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "hierarchy", function() { return __WEBPACK_IMPORTED_MODULE_1__src_hierarchy_index__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_pack_index__ = __webpack_require__(177);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pack", function() { return __WEBPACK_IMPORTED_MODULE_2__src_pack_index__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_pack_siblings__ = __webpack_require__(78);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "packSiblings", function() { return __WEBPACK_IMPORTED_MODULE_3__src_pack_siblings__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_pack_enclose__ = __webpack_require__(77);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "packEnclose", function() { return __WEBPACK_IMPORTED_MODULE_4__src_pack_enclose__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_partition__ = __webpack_require__(178);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return __WEBPACK_IMPORTED_MODULE_5__src_partition__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__src_stratify__ = __webpack_require__(179);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "stratify", function() { return __WEBPACK_IMPORTED_MODULE_6__src_stratify__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__src_tree__ = __webpack_require__(180);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "tree", function() { return __WEBPACK_IMPORTED_MODULE_7__src_tree__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__src_treemap_index__ = __webpack_require__(182);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "treemap", function() { return __WEBPACK_IMPORTED_MODULE_8__src_treemap_index__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__src_treemap_binary__ = __webpack_require__(181);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "treemapBinary", function() { return __WEBPACK_IMPORTED_MODULE_9__src_treemap_binary__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__src_treemap_dice__ = __webpack_require__(17);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "treemapDice", function() { return __WEBPACK_IMPORTED_MODULE_10__src_treemap_dice__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__src_treemap_slice__ = __webpack_require__(22);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "treemapSlice", function() { return __WEBPACK_IMPORTED_MODULE_11__src_treemap_slice__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__src_treemap_sliceDice__ = __webpack_require__(184);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "treemapSliceDice", function() { return __WEBPACK_IMPORTED_MODULE_12__src_treemap_sliceDice__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__src_treemap_squarify__ = __webpack_require__(38);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "treemapSquarify", function() { return __WEBPACK_IMPORTED_MODULE_13__src_treemap_squarify__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__src_treemap_resquarify__ = __webpack_require__(183);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "treemapResquarify", function() { return __WEBPACK_IMPORTED_MODULE_14__src_treemap_resquarify__["a"]; });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+/* 17 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(parent, x0, y0, x1, y1) {
+ var nodes = parent.children,
+ node,
+ i = -1,
+ n = nodes.length,
+ k = parent.value && (x1 - x0) / parent.value;
+
+ while (++i < n) {
+ node = nodes[i], node.y0 = y0, node.y1 = y1;
+ node.x0 = x0, node.x1 = x0 += node.value * k;
+ }
+};
+
+
+/***/ }),
+/* 18 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constant__ = __webpack_require__(82);
+/* harmony export (immutable) */ __webpack_exports__["b"] = hue;
+/* harmony export (immutable) */ __webpack_exports__["c"] = gamma;
+/* harmony export (immutable) */ __webpack_exports__["a"] = nogamma;
+
+
+function linear(a, d) {
+ return function(t) {
+ return a + t * d;
+ };
+}
+
+function exponential(a, b, y) {
+ return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {
+ return Math.pow(a + t * b, y);
+ };
+}
+
+function hue(a, b) {
+ var d = b - a;
+ return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__constant__["a" /* default */])(isNaN(a) ? b : a);
+}
+
+function gamma(y) {
+ return (y = +y) === 1 ? nogamma : function(a, b) {
+ return b - a ? exponential(a, b, y) : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__constant__["a" /* default */])(isNaN(a) ? b : a);
+ };
+}
+
+function nogamma(a, b) {
+ var d = b - a;
+ return d ? linear(a, d) : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__constant__["a" /* default */])(isNaN(a) ? b : a);
+}
+
+
+/***/ }),
+/* 19 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(s) {
+ return s.match(/.{6}/g).map(function(x) {
+ return "#" + x;
+ });
+};
+
+
+/***/ }),
+/* 20 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_array__ = __webpack_require__(1);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_d3_interpolate__ = __webpack_require__(3);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__continuous__ = __webpack_require__(24);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__tickFormat__ = __webpack_require__(223);
+/* harmony export (immutable) */ __webpack_exports__["b"] = linearish;
+/* harmony export (immutable) */ __webpack_exports__["a"] = linear;
+
+
+
+
+
+function linearish(scale) {
+ var domain = scale.domain;
+
+ scale.ticks = function(count) {
+ var d = domain();
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_array__["ticks"])(d[0], d[d.length - 1], count == null ? 10 : count);
+ };
+
+ scale.tickFormat = function(count, specifier) {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__tickFormat__["a" /* default */])(domain(), count, specifier);
+ };
+
+ scale.nice = function(count) {
+ if (count == null) count = 10;
+
+ var d = domain(),
+ i0 = 0,
+ i1 = d.length - 1,
+ start = d[i0],
+ stop = d[i1],
+ step;
+
+ if (stop < start) {
+ step = start, start = stop, stop = step;
+ step = i0, i0 = i1, i1 = step;
+ }
+
+ step = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_array__["tickIncrement"])(start, stop, count);
+
+ if (step > 0) {
+ start = Math.floor(start / step) * step;
+ stop = Math.ceil(stop / step) * step;
+ step = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_array__["tickIncrement"])(start, stop, count);
+ } else if (step < 0) {
+ start = Math.ceil(start * step) / step;
+ stop = Math.floor(stop * step) / step;
+ step = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_array__["tickIncrement"])(start, stop, count);
+ }
+
+ if (step > 0) {
+ d[i0] = Math.floor(start / step) * step;
+ d[i1] = Math.ceil(stop / step) * step;
+ domain(d);
+ } else if (step < 0) {
+ d[i0] = Math.ceil(start * step) / step;
+ d[i1] = Math.floor(stop * step) / step;
+ domain(d);
+ }
+
+ return scale;
+ };
+
+ return scale;
+}
+
+function linear() {
+ var scale = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__continuous__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_2__continuous__["b" /* deinterpolateLinear */], __WEBPACK_IMPORTED_MODULE_1_d3_interpolate__["interpolateNumber"]);
+
+ scale.copy = function() {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__continuous__["c" /* copy */])(scale, linear());
+ };
+
+ return linearish(scale);
+}
+
+
+/***/ }),
+/* 21 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__formatDecimal__ = __webpack_require__(35);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(x) {
+ return x = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__formatDecimal__["a" /* default */])(Math.abs(x)), x ? x[1] : NaN;
+};
+
+
+/***/ }),
+/* 22 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(parent, x0, y0, x1, y1) {
+ var nodes = parent.children,
+ node,
+ i = -1,
+ n = nodes.length,
+ k = parent.value && (y1 - y0) / parent.value;
+
+ while (++i < n) {
+ node = nodes[i], node.x0 = x0, node.x1 = x1;
+ node.y0 = y0, node.y1 = y0 += node.value * k;
+ }
+};
+
+
+/***/ }),
+/* 23 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(a, b) {
+ return a = +a, b -= a, function(t) {
+ return a + b * t;
+ };
+};
+
+
+/***/ }),
+/* 24 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_array__ = __webpack_require__(1);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_d3_interpolate__ = __webpack_require__(3);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__array__ = __webpack_require__(11);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constant__ = __webpack_require__(42);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__number__ = __webpack_require__(88);
+/* harmony export (immutable) */ __webpack_exports__["b"] = deinterpolateLinear;
+/* harmony export (immutable) */ __webpack_exports__["c"] = copy;
+/* harmony export (immutable) */ __webpack_exports__["a"] = continuous;
+
+
+
+
+
+
+var unit = [0, 1];
+
+function deinterpolateLinear(a, b) {
+ return (b -= (a = +a))
+ ? function(x) { return (x - a) / b; }
+ : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__constant__["a" /* default */])(b);
+}
+
+function deinterpolateClamp(deinterpolate) {
+ return function(a, b) {
+ var d = deinterpolate(a = +a, b = +b);
+ return function(x) { return x <= a ? 0 : x >= b ? 1 : d(x); };
+ };
+}
+
+function reinterpolateClamp(reinterpolate) {
+ return function(a, b) {
+ var r = reinterpolate(a = +a, b = +b);
+ return function(t) { return t <= 0 ? a : t >= 1 ? b : r(t); };
+ };
+}
+
+function bimap(domain, range, deinterpolate, reinterpolate) {
+ var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];
+ if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);
+ else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);
+ return function(x) { return r0(d0(x)); };
+}
+
+function polymap(domain, range, deinterpolate, reinterpolate) {
+ var j = Math.min(domain.length, range.length) - 1,
+ d = new Array(j),
+ r = new Array(j),
+ i = -1;
+
+ // Reverse descending domains.
+ if (domain[j] < domain[0]) {
+ domain = domain.slice().reverse();
+ range = range.slice().reverse();
+ }
+
+ while (++i < j) {
+ d[i] = deinterpolate(domain[i], domain[i + 1]);
+ r[i] = reinterpolate(range[i], range[i + 1]);
+ }
+
+ return function(x) {
+ var i = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_array__["bisect"])(domain, x, 1, j) - 1;
+ return r[i](d[i](x));
+ };
+}
+
+function copy(source, target) {
+ return target
+ .domain(source.domain())
+ .range(source.range())
+ .interpolate(source.interpolate())
+ .clamp(source.clamp());
+}
+
+// deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].
+// reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].
+function continuous(deinterpolate, reinterpolate) {
+ var domain = unit,
+ range = unit,
+ interpolate = __WEBPACK_IMPORTED_MODULE_1_d3_interpolate__["interpolate"],
+ clamp = false,
+ piecewise,
+ output,
+ input;
+
+ function rescale() {
+ piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;
+ output = input = null;
+ return scale;
+ }
+
+ function scale(x) {
+ return (output || (output = piecewise(domain, range, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate)))(+x);
+ }
+
+ scale.invert = function(y) {
+ return (input || (input = piecewise(range, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);
+ };
+
+ scale.domain = function(_) {
+ return arguments.length ? (domain = __WEBPACK_IMPORTED_MODULE_2__array__["a" /* map */].call(_, __WEBPACK_IMPORTED_MODULE_4__number__["a" /* default */]), rescale()) : domain.slice();
+ };
+
+ scale.range = function(_) {
+ return arguments.length ? (range = __WEBPACK_IMPORTED_MODULE_2__array__["b" /* slice */].call(_), rescale()) : range.slice();
+ };
+
+ scale.rangeRound = function(_) {
+ return range = __WEBPACK_IMPORTED_MODULE_2__array__["b" /* slice */].call(_), interpolate = __WEBPACK_IMPORTED_MODULE_1_d3_interpolate__["interpolateRound"], rescale();
+ };
+
+ scale.clamp = function(_) {
+ return arguments.length ? (clamp = !!_, rescale()) : clamp;
+ };
+
+ scale.interpolate = function(_) {
+ return arguments.length ? (interpolate = _, rescale()) : interpolate;
+ };
+
+ return rescale();
+}
+
+
+/***/ }),
+/* 25 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_selection_index__ = __webpack_require__(283);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_transition_index__ = __webpack_require__(8);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "transition", function() { return __WEBPACK_IMPORTED_MODULE_1__src_transition_index__["c"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_active__ = __webpack_require__(282);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "active", function() { return __WEBPACK_IMPORTED_MODULE_2__src_active__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_interrupt__ = __webpack_require__(100);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "interrupt", function() { return __WEBPACK_IMPORTED_MODULE_3__src_interrupt__["a"]; });
+
+
+
+
+
+
+/***/ }),
+/* 26 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__schedule__ = __webpack_require__(5);
+/* harmony export (immutable) */ __webpack_exports__["b"] = tweenValue;
+
+
+function tweenRemove(id, name) {
+ var tween0, tween1;
+ return function() {
+ var schedule = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__schedule__["e" /* set */])(this, id),
+ tween = schedule.tween;
+
+ // If this node shared tween with the previous node,
+ // just assign the updated shared tween and we’re done!
+ // Otherwise, copy-on-write.
+ if (tween !== tween0) {
+ tween1 = tween0 = tween;
+ for (var i = 0, n = tween1.length; i < n; ++i) {
+ if (tween1[i].name === name) {
+ tween1 = tween1.slice();
+ tween1.splice(i, 1);
+ break;
+ }
+ }
+ }
+
+ schedule.tween = tween1;
+ };
+}
+
+function tweenFunction(id, name, value) {
+ var tween0, tween1;
+ if (typeof value !== "function") throw new Error;
+ return function() {
+ var schedule = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__schedule__["e" /* set */])(this, id),
+ tween = schedule.tween;
+
+ // If this node shared tween with the previous node,
+ // just assign the updated shared tween and we’re done!
+ // Otherwise, copy-on-write.
+ if (tween !== tween0) {
+ tween1 = (tween0 = tween).slice();
+ for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {
+ if (tween1[i].name === name) {
+ tween1[i] = t;
+ break;
+ }
+ }
+ if (i === n) tween1.push(t);
+ }
+
+ schedule.tween = tween1;
+ };
+}
+
+/* harmony default export */ __webpack_exports__["a"] = function(name, value) {
+ var id = this._id;
+
+ name += "";
+
+ if (arguments.length < 2) {
+ var tween = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__schedule__["f" /* get */])(this.node(), id).tween;
+ for (var i = 0, n = tween.length, t; i < n; ++i) {
+ if ((t = tween[i]).name === name) {
+ return t.value;
+ }
+ }
+ return null;
+ }
+
+ return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));
+};
+
+function tweenValue(transition, name, value) {
+ var id = transition._id;
+
+ transition.each(function() {
+ var schedule = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__schedule__["e" /* set */])(this, id);
+ (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);
+ });
+
+ return function(node) {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__schedule__["f" /* get */])(node, id).value[name];
+ };
+}
+
+
+/***/ }),
+/* 27 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+let baseLayoutTemplate = {
+ title: null,
+ width: null,
+ height: 600,
+ backgroundColor: 'none',
+ textColor: 'black',
+ margin: {
+ right: 10,
+ left: 10,
+ top: 10,
+ bottom: 10
+ },
+ axis: undefined, /* defined on child level */
+ plotPadding: {
+ x: null,
+ y: null
+ },
+ nodeTypes: {},
+ seriesColors: {},
+ nodeLabel: {
+ 'font-size': 12,
+ dy: 4, // usually 1/3 of font-size works fine
+ 'font-family': 'Roboto,Helvetica Neue,sans-serif'
+ },
+ linkLabel: {
+ 'font-size': 12,
+ dy: 4,
+ 'font-family': 'Roboto,Helvetica Neue,sans-serif'
+ },
+ link: {
+ fill: 'none',
+ stroke: '#ccc',
+ 'stroke-width': 1
+ },
+ showLinkArrowhead: false,
+ labelCollisionDetection: {
+ enabled: 'never',
+ updateDelay: 500,
+ order: {
+ linkLabel: 1,
+ nodeLabel: 1
+ }
+ },
+ minViewportWidth: {
+ generationWidth: 0,
+ timeIntervalInSeconds: 3600 * 24 * 30, // month
+ timeIntervalInPixels: 0
+ },
+ groupSelection: {
+ enabled: false,
+ selectionRectangle: {
+ 'stroke-width': 1,
+ 'stroke-dasharray': 4,
+ rx: 3,
+ ry: 3,
+ stroke: 'steelblue'
+ }
+ },
+ heatmap: {
+ enabled: true,
+ title: null,
+ colorScale: [
+ [0, '#008ae5'],
+ [1, 'yellow']
+ ],
+ colorBar: {
+ show: false,
+ height: '90%',
+ width: 30,
+ padding: {
+ left: 10,
+ right: 0
+ }
+ },
+ circle: {
+ r: 16
+ },
+ opacity: 0.4
+ },
+ legend: {
+ show: false,
+ x: 1.,
+ y: 0.5,
+ anchor: {
+ x: 'left',
+ y: 'center'
+ },
+ orientation: 'vertical',
+ backgroundColor: null
+ },
+ tooltip: {
+ show: true,
+ showSeriesBar: false,
+ align: 'left'
+ },
+ brush: {
+ margin: {
+ top: 20,
+ bottom: 0
+ },
+ height: 200,
+ lockY: false,
+ boxRectangle: {
+ 'stroke-width': 1,
+ 'stroke': '#aaa'
+ },
+ drawTrees: true,
+ axis: undefined, /* defined on child level */
+ brushRectangleOnFullView: true
+ },
+ nodeLabelPositions: [
+ {
+ x: 10,
+ y: 0,
+ 'text-anchor': 'start'
+ },
+ {
+ x: -10,
+ y: 0,
+ 'text-anchor': 'end'
+ }
+ ],
+ controls: {
+ download: {
+ show: true,
+ format: 'png',
+ position: 0
+ },
+ zoom: {
+ show: true,
+ active: false,
+ position: 2
+ },
+ brush: {
+ show: true,
+ active: false,
+ position: 3
+ },
+ select: {
+ show: true,
+ active: false,
+ position: 4
+ },
+ label: {
+ show: true,
+ active: true,
+ position: 5
+ }
+ }
+};
+
+/* harmony default export */ __webpack_exports__["a"] = baseLayoutTemplate;
+
+/***/ }),
+/* 28 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_lineage_plot_css__ = __webpack_require__(307);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_lineage_plot_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__base_lineage_plot_css__);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_angular__ = __webpack_require__(9);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_angular__);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_save_svg_as_png__ = __webpack_require__(314);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_save_svg_as_png___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_save_svg_as_png__);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__shared_features_js__ = __webpack_require__(12);
+
+
+
+
+let d3 = Object.assign({},
+ __webpack_require__(0),
+ __webpack_require__(226),
+ __webpack_require__(34),
+ __webpack_require__(302),
+ __webpack_require__(10),
+ __webpack_require__(1),
+ __webpack_require__(68),
+ __webpack_require__(127)
+);
+
+d3.getEvent = () => __webpack_require__(0).event;
+
+
+
+class BaseLineagePlotController {
+ constructor($element, $window, $scope, $attrs) {
+ this._$window = $window;
+ this._$element = $element;
+ this._$scope = $scope;
+ this._$attrs = $attrs;
+
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["d" /* attachActionOnResize */])($window, () => {
+ this.axisSvgs = {};
+ this.initializeData({isNewData: false});
+ this.render({});
+ });
+ $element.addClass('ancestry ancestry-base-lineage-plot');
+
+ this.svg = d3.select($element[0])
+ .style('position', 'relative')
+ .append('svg');
+ this.defaultPalette = d3.scaleOrdinal(d3.schemeCategory10);
+ this.maxAllowedDepth = 180;
+ this.mouseStart = null;
+ this.selectionRect = null;
+ this.tooltip = new __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["e" /* d3tooltip */](d3.select($element[0]));
+ this.defaultNode = {
+ r: 4,
+ 'stroke-width': 2
+ };
+ this.selectedNodesSet = new Set();
+ this.activeControls = null;
+ this.LCD = null;
+ this.LCDUpdateID = null;
+ this.heatmapColorScale = null;
+ this.heatmapCircle = d3.select();
+ this.colorBarOffset = 0;
+ this.activeSeries = new Set();
+ this.axisSvgs = {};
+ this.transform = d3.xyzoomIdentity;
+
+ this.onZoom = this.onZoom.bind(this);
+ this.linkGenerator = this.linkGenerator.bind(this);
+ this.onDoubleClick = this.onDoubleClick.bind(this);
+
+ this.controlMappings = {
+ 'download': this.download.bind(this),
+ 'zoom': this.toggleZoom.bind(this),
+ 'brush': this.toggleBrush.bind(this),
+ 'select': this.toggleSelect.bind(this),
+ 'label': this.toggleLabels.bind(this)
+ };
+
+ this.originAtCenter = false;
+ this.isCartesian = true;
+ this.flatInput = true;
+ }
+
+ $onChanges(changes) {
+ if ((changes.plotData && changes.plotData.currentValue) ||
+ (changes.plotLayout && changes.plotLayout.currentValue)) {
+ this.initializeData();
+ this.render();
+ }
+ }
+
+ render() {
+ this.svg.selectAll('*').remove();
+ this.svg.attr('width', this.width)
+ .attr('height', this.height);
+
+ this.svg.append('rect')
+ .attrs({
+ x: 0,
+ y: 0,
+ width: this.width,
+ height: this.heightWithBrush,
+ 'stroke-width': 0,
+ fill: this.layout.backgroundColor
+ });
+
+ this.defs = this.svg.append('defs');
+
+ let clipRectId = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["f" /* getClipUniqueId */])();
+ this.defs.append('svg:clipPath')
+ .datum(clipRectId)
+ .attr('id', `clip-rect${clipRectId}`)
+ .append('svg:rect')
+ .attr('x', this.viewport[0][0])
+ .attr('y', this.viewport[0][1])
+ .attr('width', this.plotWidth)
+ .attr('height', this.plotHeight);
+
+ this.defs.append('marker')
+ .attrs({
+ id: 'marker-arrowhead',
+ viewBox: '0 -5 10 10',
+ refX: 15,
+ refY: 0,
+ markerWidth: 8,
+ markerHeight: 8,
+ orient: 'auto'
+ })
+ .append('path')
+ .attr('d', 'M0,-4L10,0L0,4')
+ .attr('fill', this.layout.link.stroke)
+ .attr('class','arrowHead');
+
+ this.treeFixedContainer = this.svg.append('g')
+ .attr('transform', `translate(${this.margin.left}, ${this.margin.top})`);
+
+ this.mouseRect = this.treeFixedContainer.append('rect')
+ .attr('id', 'mouse-capture')
+ .attr('x', this.viewport[0][0])
+ .attr('y', this.viewport[0][1])
+ .attr('width', this.plotWidth)
+ .attr('height', this.plotHeight)
+ .style('fill', 'transparent');
+
+ this.makeZoom();
+ this.drawColorBar();
+ this.drawLegend();
+ this.drawMainAxes();
+ this.drawTitle();
+
+ this.treeContainer = this.treeFixedContainer.append('g')
+ .attr('clip-path', `url(#clip-rect${clipRectId})`);
+
+ this.drawTrees();
+
+ this.makeNodeSelection();
+ this.makeLCD();
+ this.makeBrush();
+ this.makeTooltip();
+
+ this.makeControlPanel();
+ this.zoomToMinimumWidth();
+
+ if (this.layout.textColor) { // set global text color
+ this.svg.selectAll('text').attr('fill', this.layout.textColor);
+ }
+ }
+
+ initializeData(options = {isNewData: true}) {
+ this.data = __WEBPACK_IMPORTED_MODULE_1_angular___default.a.copy(this.flatInput ? this.plotData : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* flattifyTrees */])(this.plotData));
+ this.originalData = this.flatInput ? this.data : __WEBPACK_IMPORTED_MODULE_1_angular___default.a.copy(this.plotData);
+
+ this.layout = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["a" /* mergeTemplateLayout */])(this.plotLayout, this.constructor.getLayoutTemplate());
+
+ let elementWidth = this._$element[0].offsetWidth,
+ elementHeight = this._$element[0].offsetHeight,
+ margin = this.layout.margin;
+
+ this.margin = margin;
+ this.width = (this.layout.width || elementWidth);
+ this.height = (this.layout.height || elementHeight);
+ this.plotWidth = this.width - margin.right - margin.left;
+ this.plotHeight = this.height - margin.top - margin.bottom;
+ this.plotOrigin = this.originAtCenter ? [this.plotWidth / 2, this.plotHeight / 2] : [0, 0];
+ this.viewport = [[0, 0], [this.plotWidth, this.plotHeight]];
+
+ this.heightWithBrush = this.margin.top + this.plotHeight + this.margin.bottom +
+ this.layout.brush.margin.bottom + this.layout.brush.margin.top + this.layout.brush.height;
+
+ this.seriesNames = Array.from(new Set(this.data.map(d => d.series)));
+
+ if (options.isNewData) {
+ this.activeSeries = new Set(this.seriesNames);
+ }
+
+ if (this.activeControls == null) {
+ this.hiddenControls = new Set(Object.entries(this.layout.controls)
+ .filter(([name, config]) => !config.show).map(([name, config]) => name));
+ this.activeControls = new Set(Object.entries(this.layout.controls)
+ .filter(([name, config]) => config.show && config.active).map(([name, config]) => name));
+ }
+ this.lcdEnabled = this.layout.labelCollisionDetection.enabled != 'never' && this.activeControls.has('label');
+
+ this.colors = (series) => {
+ return (series in this.layout.seriesColors) ? this.layout.seriesColors[series] :
+ this.defaultPalette(series);
+ };
+
+ let types = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["h" /* createNodeTypes */])(this.data, this.layout.nodeTypes, this.defaultNode);
+ this.nodeAttr = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["i" /* createDynamicNodeAttr */])(types, Object.keys(this.defaultNode));
+ let filteredData = this.constructor.filterSeries(this.originalData, this.activeSeries);
+ this.lastData = __WEBPACK_IMPORTED_MODULE_1_angular___default.a.copy(filteredData);
+
+ this.isTimePlot = filteredData[0].date != undefined;
+
+ this.nodes = this.prepareNodes(filteredData, this);
+
+ if (!options.isNewData) {
+ this.nodes.forEach(d => {
+ d.data.selected = this.selectedNodesSet.has(d.data.name);
+ })
+ } else {
+ this.selectedNodesSet = new Set();
+ this.nodes.filter(d => d.data.selected).forEach(d => {
+ this.selectedNodesSet.add(d.data.name);
+ })
+ }
+
+ this.nodeLabelData = this.nodes.map(d => {
+ return {node: d, currentLabelPos: this.layout.nodeLabelPositions[0], dy: this.layout.nodeLabel.dy};
+ });
+ this.linkLabelData = this.nodes
+ .filter(d => d.parent && d.data.inLinkLabel != null)
+ .map(d => {
+ return {nodeTo: d, dy: this.layout.linkLabel.dy};
+ });
+
+ this.setupScales();
+ this.adjustScales();
+
+ this._xScale = this.xScale.copy();
+ this._yScale = this.yScale.copy();
+
+ this.heatmapColorScale = this.makeHeatmapColorScale(filteredData);
+
+ this.updatePositions(this);
+ }
+
+ static getLayoutTemplate() {
+ return new Error('Improper use of abstract class!');
+ }
+
+ adjustScales() {
+ let paddingX = this.layout.plotPadding.x,
+ paddingY = this.layout.plotPadding.y;
+
+ if (paddingX == null || paddingY == null) {
+ let longestNodeName = this.data.length ? this.data.reduce((a, b) =>
+ a.name.length > b.name.length ? a : b).name : '';
+ this.maxLabelSize = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["j" /* testLabelLength */])(this.svg, longestNodeName, this.layout.nodeLabel);
+ this.maxLabelOffset = {
+ x: d3.max(this.layout.nodeLabelPositions, (pos) => Math.abs(pos.x)),
+ y: d3.max(this.layout.nodeLabelPositions, (pos) => Math.abs(pos.y))
+ };
+
+ if (paddingX == null) {
+ paddingX = this.maxLabelSize.width + this.maxLabelOffset.x + 5;
+ }
+ if (paddingY == null) {
+ paddingY = this.maxLabelSize.height + this.maxLabelOffset.y + 5;
+ }
+ }
+
+ if (paddingX > 0) {
+ this.xScale = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["k" /* allocatePaddingInScale */])(this.xScale, paddingX);
+ }
+
+ if (paddingY > 0) {
+ this.yScale = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["k" /* allocatePaddingInScale */])(this.yScale, paddingY);
+ }
+ }
+
+ static filterSeries(nodes, activeSeries) {
+ let filteredNodes = [],
+ nodesDict = {},
+ parent;
+
+ for (let node of nodes) {
+ nodesDict[node.name] = node;
+ }
+
+ for (let node of nodes) {
+ let currentNode = node;
+ if (!activeSeries.has(currentNode.series)) continue;
+ while (parent = currentNode.parent) {
+ let parentNode = nodesDict[parent];
+ if (activeSeries.has(parentNode.series)) {
+ node.parent = parent;
+ break;
+ }
+ currentNode = parentNode;
+ }
+ if (node.parent && !activeSeries.has(nodesDict[node.parent].series)) {
+ node.parent = null;
+ }
+ filteredNodes.push(node);
+ }
+ return filteredNodes;
+ }
+
+ //noinspection JSMethodCanBeStatic
+ linkGenerator() {
+ return new Error('Improper use of abstract class!');
+ }
+
+ // overridden method should define class members: xScale, yScale and xExtent
+ //noinspection JSMethodCanBeStatic
+ setupScales() {
+ return new Error('Improper use of abstract class!');
+ }
+
+ //noinspection JSMethodCanBeStatic
+ prepareNodes(/* data, context */) {
+ return new Error('Improper use of abstract class!');
+ }
+
+ updateAndRedraw() {
+ this.updatePositions(this);
+ this.drawMainAxes();
+ this.drawLinks(false);
+ this.drawNodes(false);
+ this.applyLCD();
+ }
+
+ drawTrees(redraw = true) {
+ if (redraw) {
+ this.treeContainer.selectAll('*').remove();
+ }
+ this.drawLinks(redraw);
+ this.drawNodes(redraw);
+ this.linkLabelLayer.moveToFront();
+ }
+
+ drawNodes(redraw=true) {
+
+ if (this.layout.heatmap.enabled && redraw) {
+
+ this.heatmapCircle = this.treeContainer.append('g')
+ .attr('class', 'heatmap-layer')
+ .selectAll('circle.heatmap-circle')
+ .data(this.nodes.filter(n => !isNaN(parseFloat(n.data.z))))
+ .enter()
+ .append('circle')
+ .attr('class', 'heatmap-circle')
+ .style('fill', d => this.heatmapColorScale(d.data.z))
+ .style('opacity', this.layout.heatmap.opacity)
+ .attrs(this.layout.heatmap.circle);
+ }
+
+ if (redraw) {
+ this.marker = this.treeContainer.append('g')
+ .attr('class', 'node-marker-layer')
+ .selectAll('circle.node-marker')
+ .data(this.nodes.filter(d => !d.data.hide))
+ .enter();
+
+ if (this._$attrs.customNode) {
+ this.marker = this.customNode({$selection: this.marker, $event: 'draw'});
+ } else {
+ this.marker = this.marker.append('circle')
+ .attr('class', 'node-marker')
+ .style('fill', d => d.data.selected ? this.colors(d.data.series) : '#FFF')
+ .style('stroke', d => this.colors(d.data.series))
+ .attrs(this.nodeAttr);
+ }
+
+ this.nodeLabel = this.treeContainer.append('g')
+ .attr('class', 'node-label-layer')
+ .selectAll('text.node-label')
+ .data(this.nodeLabelData)
+ .enter()
+ .append('text')
+ .attr('class', 'node-label')
+ .text(d => d.node.data.name)
+ .style('opacity', this.activeControls.has('label') ? 1 : 1e-6)
+ .each(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["l" /* getNodeLabelBBox */])
+ .attr('text-anchor', d => d.currentLabelPos['text-anchor'])
+ .attrs(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* skipProperties */])(this.layout.nodeLabel, 'dy'));
+ }
+
+ if (this._$attrs.customNode) {
+ this.customNode({$selection: this.marker, $event: 'update'});
+ } else {
+ this.marker.attr('cx', d => d.x)
+ .attr('cy', d => d.y);
+ }
+
+ this.heatmapCircle.attr('cx', d => d.x)
+ .attr('cy', d => d.y);
+
+ this.nodeLabel.attr('x', d => d.x)
+ .attr('y', d => d.y);
+ }
+
+ //noinspection JSMethodCanBeStatic
+ drawMainAxes() {
+ return new Error('Improper use of abstract class!');
+ }
+
+ //noinspection JSMethodCanBeStatic
+ drawBrushAxes() {
+ return new Error('Improper use of abstract class!');
+ }
+
+ drawAxis(container, type, scale, tickLength, isTimeAxis=false, fixTicks=false) {
+ let axisType = null, isMain = null,
+ axisSvg = `axis-${type}-svg`;
+
+ [axisType, isMain] = type.split('-');
+ isMain = isMain == 'main';
+
+ let layout = (isMain ? this.layout.axis : this.layout.brush.axis)[axisType],
+ axis = (axisType == 'x' ? d3.axisBottom : d3.axisLeft)()
+ .scale(scale)
+ .tickSizeInner(0)
+ .tickSizeOuter(0);
+
+ if (axisType == 'x' && !isTimeAxis && fixTicks) {
+ let [start, end] = this.xScale.domain();
+ start = Math.max(Math.ceil(start), this.xExtent[0]);
+ end = Math.min(Math.floor(end), this.xExtent[1]);
+ axis.tickFormat(d3.format('d'))
+ .tickValues(d3.range(start, end + 1));
+ }
+
+ if (!this.axisSvgs[axisSvg]) {
+ this.axisSvgs[axisSvg] = container.append('g')
+ .attr('transform', `translate(0, ${axisType == 'x' ? tickLength : 0})`)
+ .attr('class', `axis ${type}`);
+
+ this.axisSvgs[axisSvg].call(axis);
+ let offset = this.axisSvgs[axisSvg].node().getBBox()[axisType == 'x' ? 'height' : 'width'];
+
+ if (layout.title) {
+ let range = Math.abs(scale.range()[1] - scale.range()[0]),
+ width = axisType == 'x' ? range : tickLength,
+ height = axisType == 'x' ? tickLength : range;
+
+ container.append('text')
+ .attr('class', 'axis-title')
+ .style('text-anchor', 'middle')
+ .attr('transform', axisType == 'x' ? '' : 'rotate(-90)')
+ .text(layout.title)
+ .attrs({
+ x: axisType == 'x' ? width / 2 : -height / 2,
+ y: axisType == 'x' ? height + offset + 15 : -offset - 10
+ });
+ }
+ }
+
+ axis.tickSizeInner(layout.showGrid ? -tickLength : 0);
+ this.axisSvgs[axisSvg].call(axis);
+ BaseLineagePlotController.adjustAxisStyles(this.axisSvgs[axisSvg], layout);
+ }
+
+ static adjustAxisStyles(axis, layout) {
+ axis.selectAll('.domain').style('opacity', layout.showAxisLine ? 1 : 1e-6);
+
+ if (layout.showGrid) {
+ axis.selectAll('.tick line')
+ .attr('stroke', '#ccc')
+ .style('shape-rendering', 'crispEdges');
+ } else {
+ axis.selectAll('.tick line').style('opacity', 1e-6);
+ }
+
+ if (layout.showTickText) {
+ axis.selectAll('.tick text').attr('font-size', 12);
+ } else {
+ axis.selectAll('.tick text').style('opacity', 1e-6);
+ }
+ }
+
+ zoomToMinimumWidth() {
+ if (!this.layout.minViewportWidth) return;
+ let ratio;
+ if (!this.isTimePlot) {
+ let generationWidth = this.xScale.range()[1] / __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["n" /* getDomainLength */])(this.xScale);
+ ratio = this.layout.minViewportWidth.generationWidth / generationWidth;
+ } else {
+ let pixelsPerSecond = this.xScale.range()[1] / __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["n" /* getDomainLength */])(this.xScale) * 1000;
+ ratio = this.layout.minViewportWidth.timeIntervalInPixels /
+ this.layout.minViewportWidth.timeIntervalInSeconds / pixelsPerSecond;
+ }
+
+ if (ratio > 1) {
+ this.treeFixedContainer.call(this.zoom.transform, d3.xyzoomIdentity.scale(ratio, 1).translate(0, 0));
+ }
+ }
+
+ drawLinks(redraw = true) {
+ if (redraw) {
+ this.link = this.treeContainer.append('g')
+ .attr('class', 'link-layer')
+ .selectAll('path.link')
+ .data(this.nodes.filter(n => n.parent))
+ .enter()
+ .insert('path', 'g')
+ .attr('class', 'link')
+ .attr('marker-end', this.layout.showLinkArrowhead ?
+ `url(#marker-arrowhead)` : '')
+ .attrs(this.layout.link);
+
+ this.linkLabelLayer = this.treeContainer.append('g')
+ .attr('class', 'link-label-layer');
+
+ this.linkLabel = this.linkLabelLayer
+ .selectAll('text.link-label')
+ .data(this.linkLabelData)
+ .enter()
+ .append('text')
+ .attr('class', 'link-label')
+ .attr('text-anchor', 'middle')
+ .text(d => d.nodeTo.data.inLinkLabel)
+ .style('opacity', this.activeControls.has('label') ? 1 : 1e-6)
+ .each(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["o" /* getLinkLabelBBox */])
+ .attrs(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* skipProperties */])(this.layout.linkLabel, 'dy'));
+ }
+
+ this.link.attr('d', this.linkGenerator);
+ this.linkLabel.attr('x', d => d.x)
+ .attr('y', d => d.y);
+ }
+
+ drawLegend() {
+ if (!this.layout.legend.show) return;
+
+ let that = this,
+ x = this.layout.legend.x,
+ y = this.layout.legend.y,
+ anchor = this.layout.legend.anchor,
+ orientation = this.layout.legend.orientation,
+ splitAfter = orientation === 'horizontal' ? 0 : 1,
+ totalWidth = this.plotWidth + this.colorBarOffset;
+
+ function legendClick(/*d, i, all*/) {
+ let d = arguments[0],
+ all = d3.selectAll(arguments[2]);
+ if (that.activeSeries.has(d.label)) {
+ that.activeSeries.delete(d.label);
+ if (!that.activeSeries.size) {
+ all.each(d => {
+ d.active = true;
+ that.activeSeries.add(d.label);
+ });
+ }
+ } else {
+ that.activeSeries.add(d.label);
+ }
+ all.classed('legend-item-selected', d => that.activeSeries.has(d.label));
+ all.selectAll('rect.shape')
+ .attr('fill', d => that.activeSeries.has(d.label) ? that.colors(d.label) : 'white');
+ that.initializeData({isNewData: false});
+ that.drawMainAxes();
+ that.drawTrees();
+ that.makeBrush();
+ that.treeFixedContainer.call(that.zoom.transform, d3.xyzoomIdentity);
+ that.makeLCD();
+ that.makeTooltip();
+ }
+
+ let drawLegend = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["p" /* d3legend */])()
+ .splitAfter(splitAfter)
+ .anchor(anchor)
+ .seriesNames(this.seriesNames)
+ .colorScale(this.colors)
+ .backgroundColor(this.layout.legend.backgroundColor || this.layout.backgroundColor)
+ .maxSize({width: totalWidth, height: this.plotHeight})
+ .onClick(legendClick)
+ .selectedItems(this.activeSeries);
+
+ this.svg.append('g')
+ .attr('transform',
+ `translate(${this.margin.left + x * totalWidth},${this.margin.top + y * this.plotHeight})`)
+ .attr('class', 'ancestry-legend')
+ .call(drawLegend);
+ }
+
+ makeHeatmapColorScale(nodes) {
+ let domain = d3.extent(nodes, node => node.z);
+
+ if (domain[0] == domain[1]) {
+ if (domain[0] === undefined) {
+ domain[0] = domain[1] = 0;
+ }
+ domain[0] -= 0.5;
+ domain[1] += 0.5;
+ }
+
+ return d3.scaleLinear()
+ .domain(domain)
+ .range(this.layout.heatmap.colorScale.map(v => v[1]));
+ }
+
+ drawColorBar() {
+ if (!this.layout.heatmap.enabled || !this.layout.heatmap.colorBar.show) return;
+
+ this.layout.heatmap.colorBar.height = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["q" /* calcColorBarSize */])(this.layout.heatmap.colorBar.height,
+ this.plotHeight);
+ this.layout.heatmap.colorBar.width = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["q" /* calcColorBarSize */])(this.layout.heatmap.colorBar.width, this.plotWidth);
+
+ let colorBar = this.treeFixedContainer.append('g')
+ .attr('class', 'ancestry-colorbar')
+ .attr('transform', `translate(${this.plotWidth + this.layout.heatmap.colorBar.padding.left},${
+ this.plotHeight / 2})`);
+
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["r" /* drawColorBar */])(colorBar, this.heatmapColorScale.domain(), this.layout.heatmap, this.defs);
+
+ this.colorBarOffset = colorBar.node().getBBox().width + this.layout.heatmap.colorBar.padding.left +
+ this.layout.heatmap.colorBar.padding.right;
+ }
+
+ makeTooltip() {
+ if (!this.layout.tooltip.show) return;
+ let that = this;
+
+ this.marker.on('mouseover', function (d) {
+ let x = 0, y = 0; // split into 2 lines to avoid WebStorm warning
+ ({x, y} = __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["e" /* d3tooltip */].getRelativePosition(this, that._$element[0]));
+ let seriesBar = that.layout.tooltip.showSeriesBar ?
+ `
` +
+ '
' : '',
+ text = d.data.tooltip ? d.data.tooltip.map((line) => {
+ return `${line}`;
+ }).join('') : `${d.data.name}`;
+
+ that.tooltip.html(seriesBar + text).position([x, y]).show();
+ })
+ .on('mouseout', () => {
+ this.tooltip.hide();
+ });
+ }
+
+ //noinspection JSMethodCanBeStatic
+ updatePositions(context) {
+ for (let node of context.nodes) {
+ node.x = context.xScale(context.plotOrigin[0] + (context.isTimePlot ? node._x.getTime() : node._x));
+ node.y = context.yScale(context.plotOrigin[1] + node._y);
+ }
+
+ if (context.nodeLabelData) {
+ for (let node of context.nodeLabelData) {
+ node.x = node.node.x + node.currentLabelPos.x;
+ node.y = node.node.y + node.currentLabelPos.y + node.dy;
+ }
+ }
+
+ if (context.linkLabelData) {
+ for (let node of context.linkLabelData) {
+ node.x = (node.nodeTo.x + node.nodeTo.parent.x) / 2;
+ node.y = (node.nodeTo.y + node.nodeTo.parent.y) / 2 + node.dy;
+ }
+ }
+ }
+
+ makeLCD() {
+ if (this.layout.labelCollisionDetection.enabled === 'never') return;
+
+ let order = [[], []];
+
+ order[this.layout.labelCollisionDetection.order.nodeLabel - 1].push(this.nodeLabel);
+ order[this.layout.labelCollisionDetection.order.linkLabel - 1].push(this.linkLabel);
+
+ this.makeBBox();
+ this.LCD = new __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["s" /* LabelCollisionDetection */]([this.marker], order, this.layout.nodeLabelPositions,
+ this.viewport, this.markerBBoxes);
+
+ if (this.activeControls.has('label')) {
+ this.LCD.recalculateLabels();
+ }
+ }
+
+ makeZoom() {
+ this.zoom = d3.xyzoom()
+ .extent(this.viewport)
+ .scaleExtent([[1, Infinity], [1, Infinity]])
+ .translateExtent(this.viewport)
+ .on('zoom', this.onZoom);
+ }
+
+ onDoubleClick() {
+ this.xScale = this._xScale.copy();
+ this.yScale = this._yScale.copy();
+ this.treeFixedContainer.call(this.zoom.transform, d3.xyzoomIdentity);
+ this.updateAndRedraw();
+ }
+
+ onZoom() {
+ let event = d3.getEvent();
+
+ this.transform = event.transform;
+ this.xScale = this.transform.rescaleX(this._xScale);
+ this.yScale = this.transform.rescaleY(this._yScale);
+ this.updateAndRedraw();
+
+ if (event.sourceEvent && (event.sourceEvent.type === 'brush' || event.sourceEvent.type === 'end')) return;
+
+ let [x1, x2] = this.xScale.domain().map(this.brushContext.xScale),
+ [y1, y2] = this.yScale.domain().map(this.brushContext.yScale);
+
+ this.brushFixedContainer.call(this.brush.move, this.layout.brush.lockY ? [x1, x2] : [[x1, y1], [x2, y2]]);
+ }
+
+ applyLCD(transform) {
+ if (!this.lcdEnabled) return;
+
+ if (this.layout.labelCollisionDetection.enabled === 'onEveryChange') {
+ this.LCD.recalculateLabels(transform);
+ }
+ else if (this.layout.labelCollisionDetection.enabled === 'onDelay') {
+ window.clearTimeout(this.LCDUpdateID);
+ this.LCDUpdateID = window.setTimeout(() => {
+ this.LCD.recalculateLabels(transform);
+ }, this.layout.labelCollisionDetection.updateDelay);
+ }
+ }
+
+ makeControlPanel() {
+ let controls = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* skipProperties */])(this.controlMappings, Array.from(this.hiddenControls)),
+ controlOrder = Object.entries(this.layout.controls)
+ .filter(([control, config]) => !this.hiddenControls.has(control))
+ .sort(([control, config], [control2, config2]) => config.position - config2.position)
+ .map(([control, config]) => control);
+
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["t" /* createPlotControls */])(this._$element[0], controls, controlOrder, this.activeControls);
+ }
+
+ makeNodeSelection() {
+ let that = this,
+ mouseStart = null;
+
+ // expose click for toggleSelect
+ this.onNodeClick = onNodeClick;
+
+ if (!this.layout.groupSelection.enabled) return;
+
+ this.selectionRect = this.treeFixedContainer.append('rect')
+ .attr('class', 'selection-rect')
+ .attrs(this.layout.groupSelection.selectionRectangle);
+
+ // expose mouse down for toggleSelect
+ this.mouseDown = mouseDown;
+
+ function onNodeClick(d) {
+ d.data.selected = !d.data.selected;
+ let node = d3.select(this);
+ if (that._$attrs.customNode) {
+ that.customNode({$selection: node, $event: 'select'});
+ } else {
+ node.style('fill', d => d.data.selected ? that.colors(d.data.series) : '#FFF');
+ }
+ updateSelection();
+ }
+
+ function updateSelection() {
+ let newSelected = new Set(that.marker.filter(d => d.data.selected).data().map(d => d.data.name)),
+ wasChange = newSelected.size != that.selectedNodesSet.size ||
+ (new Set([...that.selectedNodesSet].filter(x => !newSelected.has(x))).size != 0);
+
+ if (wasChange) {
+ that.selectedNodesSet = newSelected;
+ if (that._$attrs.nodesSelection) {
+ that._$scope.$apply(() => {
+ that.nodesSelection({$nodes: Array.from(that.selectedNodesSet)});
+ });
+ }
+ }
+ }
+
+ function finalizeSelection() {
+ that.selectionRect.attr('width', 0);
+ updateSelection();
+ that.marker.style('pointer-events', 'all');
+ that.mouseRect.on('mousemove', null)
+ .on('mouseup', null)
+ .on('mouseout', null);
+ }
+
+ function mouseDown() {
+ d3.getEvent().preventDefault();
+ mouseStart = d3.mouse(that.mouseRect.node());
+ that.mouseRect.on('mousemove', mouseMove)
+ .on('mouseup', finalizeSelection)
+ .on('mouseout', finalizeSelection);
+ that.marker.each(d => {
+ d._selected = d.data.selected;
+ }).style('pointer-events', 'none');
+ }
+
+ function mouseMove() {
+ let p = d3.mouse(that.mouseRect.node());
+ let d = {
+ x: (p[0] < mouseStart[0] ? p[0] : mouseStart[0]),
+ y: (p[1] < mouseStart[1] ? p[1] : mouseStart[1]),
+ height: Math.abs(p[1] - mouseStart[1]),
+ width: Math.abs(p[0] - mouseStart[0])
+ };
+ that.selectionRect.attrs(d);
+ selectPoints(that.selectionRect);
+ }
+
+ function selectPoints(rect) {
+ let rect_x1 = +rect.attr('x'), rect_y1 = +rect.attr('y'),
+ rect_x2 = +rect.attr('width') + rect_x1, rect_y2 = +rect.attr('height') + rect_y1;
+
+ let [inSelection, outSelection] =
+ that.marker.partition(d => d.x >= rect_x1 && d.x <= rect_x2 && d.y >= rect_y1 && d.y <= rect_y2);
+
+ inSelection.each(d => {
+ d.data.selected = true
+ });
+ outSelection.each(d => {
+ d.data.selected = d._selected
+ });
+ if (that._$attrs.customNode) {
+ that.customNode({$selection: that.marker, $event: 'select'});
+ } else {
+ that.marker.style('fill', d => d.data.selected ? that.colors(d.data.series) : '#FFF');
+ }
+ }
+ }
+
+ drawTitle() {
+ if (this.layout.title) {
+ this.treeFixedContainer.append('text')
+ .attr('x', this.plotWidth / 2)
+ .attr('y', -10)
+ .attr('text-anchor', 'middle')
+ .style('font-size', '20px')
+ .text(this.layout.title);
+ }
+ }
+
+ toggleZoom(toggle) {
+ if (toggle) {
+ this.treeFixedContainer.call(this.zoom)
+ .on('dblclick.zoom', this.onDoubleClick);
+ }
+ else {
+ this.treeFixedContainer.on('wheel.zoom', null)
+ .on('mousedown.zoom', null)
+ .on('dblclick.zoom', null)
+ .on('touchstart.zoom', null)
+ .on('touchmove.zoom', null)
+ .on('touchend.zoom', null)
+ .on('touchcancel.zoom', null);
+ }
+ }
+
+ toggleSelect(toggle) {
+ let that = this;
+
+ if (this.layout.groupSelection.enabled) {
+ this.mouseRect.on('mousedown', toggle ? this.mouseDown : null);
+ }
+
+ toggleNodeClickCallback();
+
+ function toggleNodeClickCallback() {
+ function nodeClickCallback(d) {
+ that._$scope.$apply(() => {
+ that.nodeClick({$event: d3.getEvent(), $node: d.data});
+ });
+ }
+
+ that.marker.on('click', toggle ? that.onNodeClick : (that._$attrs.nodeClick ? nodeClickCallback : null));
+ }
+ }
+
+ toggleLabels(toggle) {
+ if (this.layout.labelCollisionDetection.enabled != 'never' &&
+ this.layout.labelCollisionDetection.enabled != 'onInit') {
+ this.lcdEnabled = toggle;
+ if (this.lcdEnabled) {
+ this.LCD.recalculateLabels();
+ }
+ }
+ this.nodeLabel.style('opacity', d => toggle && !d.isColliding ? 1 : 1e-6);
+ this.linkLabel.style('opacity', d => toggle && !d.isColliding ? 1 : 1e-6);
+ }
+
+ download(){
+ let format = this.layout.controls.download.format,
+ saveFunc = format == 'png' ? __WEBPACK_IMPORTED_MODULE_2_save_svg_as_png__["saveSvgAsPng"] : __WEBPACK_IMPORTED_MODULE_2_save_svg_as_png__["saveSvg"];
+
+ saveFunc(this.svg.node(), `plot.${format}`);
+ }
+
+ makeBBox() {
+
+ let testNodeLabel = this.svg.append('text').text('yT'),
+ testLinkLabel = this.svg.append('text').text('yT');
+
+ testNodeLabel.attrs(this.layout.nodeLabel);
+ testLinkLabel.attrs(this.layout.linkLabel);
+
+ let nodeLabelHeight = testNodeLabel.node().getBBox().height,
+ linkLabelHeight = testLinkLabel.node().getBBox().height;
+
+ testNodeLabel.remove();
+ testLinkLabel.remove();
+
+ let canvas = document.createElement('canvas');
+ let context = canvas.getContext('2d');
+
+ context.font = `${this.layout.nodeLabel['font-size']}px ${this.layout.nodeLabel['font-family']}`;
+
+ this.nodeLabel.each(d => {
+ d.width = context.measureText(d.node.data.name).width;
+ d.height = nodeLabelHeight;
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["l" /* getNodeLabelBBox */])(d);
+ });
+
+ context.font = `${this.layout.linkLabel['font-size']}px ${this.layout.linkLabel['font-family']}`;
+
+ this.linkLabel.each(d => {
+ d.width = context.measureText(d.nodeTo.data.inLinkLabel).width;
+ d.height = linkLabelHeight;
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["o" /* getLinkLabelBBox */])(d);
+ });
+
+ let nodeTypes = this.marker.data().map(d => d.data.type),
+ uniqueNodeTypes = new Set(nodeTypes),
+ markerBBoxes = {};
+
+ for (let type of uniqueNodeTypes) {
+ let node = this.marker.filter(d => d.data.type == type).node(),
+ bbox = node.getBBox();
+
+ markerBBoxes[type] = {width: bbox.width, height: bbox.height}
+ }
+
+ this.markerBBoxes = markerBBoxes;
+ }
+
+ toggleBrush(active) {
+ this.svg.attr('height', active ? this.heightWithBrush : this.height);
+ this.brushFixedContainer.style('display', active ? 'inline' : 'none')
+ }
+
+ makeBrush() {
+ if (this.brushFixedContainer) { // remove brush if already exists
+ this.brushFixedContainer.remove();
+ this.svg.select('.brush-clip').remove();
+ }
+ let brushHeight = this.layout.brush.height,
+ brushWidth = this.isCartesian ? this.plotWidth : this.plotWidth / (this.plotHeight /
+ this.layout.brush.height);
+ this.brushContext = {
+ plotHeight: this.plotHeight,
+ plotWidth: this.plotWidth,
+ xScale: this.xScale.copy().range([0, brushWidth]),
+ yScale: this.yScale.copy().range([0, brushHeight]),
+ layout: this.layout,
+ plotOrigin: this.plotOrigin,
+ isTimePlot: this.isTimePlot
+ };
+ this.brushContext.nodes = this.prepareNodes(this.lastData, this.brushContext);
+ this.brushContext.plotHeight = brushHeight;
+ this.brushContext.plotWidth = brushWidth;
+ this.updatePositions(this.brushContext);
+ this.brushContext.plotOrigin = this.originAtCenter ? [brushWidth / 2, brushHeight / 2] : [0, 0];
+
+ let fullExtent = [[0, 0], [brushWidth, brushHeight]],
+ brushMarginTop = this.layout.brush.margin.top,
+ lockY = this.layout.brush.lockY,
+ clipRectId = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["f" /* getClipUniqueId */])(),
+ that = this;
+
+ this.defs.append('svg:clipPath')
+ .attr('class', 'brush-clip')
+ .datum(clipRectId)
+ .attr('id', `clip-rect${clipRectId}`)
+ .append('svg:rect')
+ .attrs({
+ x: -1,
+ y: -1,
+ width: brushWidth + 3,
+ height: brushHeight + 3
+ })
+ .attrs(this.layout.brush.boxRectangle);
+
+ this.brushFixedContainer = this.svg.append('g')
+ .attr('transform', `translate(${this.margin.left + (this.isCartesian ? 0 : this.plotWidth / 2 -
+ brushWidth / 2)}, ${this.margin.top + this.plotHeight + brushMarginTop})`);
+
+ this.drawBrushAxes();
+
+ this.brushContainer = this.brushFixedContainer.append('g')
+ .attr('clip-path', `url(#clip-rect${clipRectId})`);
+
+ if (this.layout.brush.drawTrees) {
+ this.brushContainer.append('g')
+ .attr('class', 'link-layer')
+ .selectAll('path.link')
+ .data(this.brushContext.nodes.filter(n => n.parent))
+ .enter()
+ .insert('path', 'g')
+ .attr('class', 'link')
+ .attr('marker-end', this.layout.showLinkArrowhead ?
+ `url(#marker-arrowhead)` : '')
+ .attr('d', this.linkGenerator)
+ .attrs(this.layout.link);
+
+ let brushMarker = this.brushContainer.append('g')
+ .attr('class', 'node-marker-layer')
+ .selectAll('circle.node-marker')
+ .data(this.brushContext.nodes.filter(d => !d.data.hide))
+ .enter();
+
+ if (that._$attrs.customNode) {
+ this.customNode({$selection: brushMarker, $event: 'draw'});
+ } else {
+ brushMarker.append('circle')
+ .attr('class', 'node-marker')
+ .style('fill', 'white')
+ //.style('fill', d => d.data.selected ? this.colors(d.data.series) : '#FFF')
+ .style('stroke', d => this.colors(d.data.series))
+ .attr('cx', d => d.x)
+ .attr('cy', d => d.y)
+ .attrs(this.nodeAttr);
+ }
+ }
+
+ this.brushFixedContainer.append('rect')
+ .attr('fill', 'none')
+ .style('shape-rendering', 'crispEdges')
+ .attr('x', -1)
+ .attr('y', -1)
+ .attr('width', brushWidth + 2)
+ .attr('height', brushHeight + 2)
+ .attrs(this.layout.brush.boxRectangle);
+
+ this.brush = (lockY ? d3.brushX : d3.brush)()
+ .extent(fullExtent)
+ .on('brush end', brushed);
+
+ this.brushFixedContainer
+ .call(this.brush)
+ .call(this.brush.move, null);
+
+ this.toggleBrush(that.activeControls.has('brush'));
+
+ function isFullView(s) {
+ return lockY ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["u" /* almostEq */])(s[0], 0) && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["u" /* almostEq */])(s[1], that.brushContext.plotWidth) :
+ (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["u" /* almostEq */])(s[0][0], 0) && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["u" /* almostEq */])(s[0][1], 0) && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["u" /* almostEq */])(s[1][0], that.brushContext.plotWidth) &&
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["u" /* almostEq */])(s[1][1], that.brushContext.plotHeight));
+ }
+
+ function brushed() {
+ let event = d3.getEvent(),
+ s = event.selection;
+
+ if ((!s && that.layout.brush.brushRectangleOnFullView)) {
+ that.brushFixedContainer
+ .call(that.brush.move, lockY ? [0, that.brushContext.plotWidth] : fullExtent);
+ return;
+ } else if (!that.layout.brush.brushRectangleOnFullView && s && isFullView(s)) {
+ that.brushFixedContainer
+ .call(that.brush.move, null);
+ return;
+ }
+
+ let sx = s != null ? (lockY ? [s[0], s[1]] : [s[0][0], s[1][0]]) : that.brushContext.xScale.range(),
+ sy = s != null ? (lockY ? [0, that.brushContext.plotHeight] : [s[0][1], s[1][1]])
+ : that.brushContext.yScale.range(),
+ dx1 = sx.map(that.brushContext.xScale.invert, that.brushContext.xScale), dx2 = that._xScale.domain(),
+ dy1 = sy.map(that.brushContext.yScale.invert, that.brushContext.yScale), dy2 = that._yScale.domain(),
+ kx = (dx2[1] - dx2[0]) / (dx1[1] - dx1[0]),
+ ky = (dy2[1] - dy2[0]) / (dy1[1] - dy1[0]),
+ newTransform = d3.xyzoomIdentity
+ .scale(kx, ky)
+ .translate(-that._xScale(that.brushContext.xScale.invert(sx[0])),
+ -that._yScale(that.brushContext.yScale.invert(sy[0])));
+
+ if (isFinite(kx) && isFinite(ky)) {
+ that.treeFixedContainer.call(that.zoom.transform, newTransform);
+ }
+ }
+ }
+}
+
+d3.selection.prototype.moveToFront = function () {
+ return this.each(function () {
+ //noinspection JSCheckFunctionSignatures
+ this.parentNode.appendChild(this);
+ });
+};
+
+BaseLineagePlotController.$$ngIsClass = true; // temporary Firefox fix
+
+/* harmony default export */ __webpack_exports__["a"] = BaseLineagePlotController;
+
+
+/***/ }),
+/* 29 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__number__ = __webpack_require__(14);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(values, p, valueof) {
+ if (valueof == null) valueof = __WEBPACK_IMPORTED_MODULE_0__number__["a" /* default */];
+ if (!(n = values.length)) return;
+ if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);
+ if (p >= 1) return +valueof(values[n - 1], n - 1, values);
+ var n,
+ i = (n - 1) * p,
+ i0 = Math.floor(i),
+ value0 = +valueof(values[i0], i0, values),
+ value1 = +valueof(values[i0 + 1], i0 + 1, values);
+ return value0 + (value1 - value0) * (i - i0);
+};
+
+
+/***/ }),
+/* 30 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return prefix; });
+var prefix = "$";
+
+function Map() {}
+
+Map.prototype = map.prototype = {
+ constructor: Map,
+ has: function(key) {
+ return (prefix + key) in this;
+ },
+ get: function(key) {
+ return this[prefix + key];
+ },
+ set: function(key, value) {
+ this[prefix + key] = value;
+ return this;
+ },
+ remove: function(key) {
+ var property = prefix + key;
+ return property in this && delete this[property];
+ },
+ clear: function() {
+ for (var property in this) if (property[0] === prefix) delete this[property];
+ },
+ keys: function() {
+ var keys = [];
+ for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));
+ return keys;
+ },
+ values: function() {
+ var values = [];
+ for (var property in this) if (property[0] === prefix) values.push(this[property]);
+ return values;
+ },
+ entries: function() {
+ var entries = [];
+ for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});
+ return entries;
+ },
+ size: function() {
+ var size = 0;
+ for (var property in this) if (property[0] === prefix) ++size;
+ return size;
+ },
+ empty: function() {
+ for (var property in this) if (property[0] === prefix) return false;
+ return true;
+ },
+ each: function(f) {
+ for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);
+ }
+};
+
+function map(object, f) {
+ var map = new Map;
+
+ // Copy constructor.
+ if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });
+
+ // Index array by numeric index or specified key function.
+ else if (Array.isArray(object)) {
+ var i = -1,
+ n = object.length,
+ o;
+
+ if (f == null) while (++i < n) map.set(i, object[i]);
+ else while (++i < n) map.set(f(o = object[i], i, object), o);
+ }
+
+ // Convert object to map.
+ else if (object) for (var key in object) map.set(key, object[key]);
+
+ return map;
+}
+
+/* harmony default export */ __webpack_exports__["a"] = map;
+
+
+/***/ }),
+/* 31 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__define__ = __webpack_require__(32);
+/* harmony export (immutable) */ __webpack_exports__["d"] = Color;
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return darker; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return brighter; });
+/* harmony export (immutable) */ __webpack_exports__["a"] = color;
+/* harmony export (immutable) */ __webpack_exports__["c"] = rgbConvert;
+/* harmony export (immutable) */ __webpack_exports__["h"] = rgb;
+/* harmony export (immutable) */ __webpack_exports__["b"] = Rgb;
+/* unused harmony export hslConvert */
+/* harmony export (immutable) */ __webpack_exports__["g"] = hsl;
+
+
+function Color() {}
+
+var darker = 0.7;
+var brighter = 1 / darker;
+
+var reI = "\\s*([+-]?\\d+)\\s*",
+ reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",
+ reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",
+ reHex3 = /^#([0-9a-f]{3})$/,
+ reHex6 = /^#([0-9a-f]{6})$/,
+ reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$"),
+ reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$"),
+ reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$"),
+ reRgbaPercent = new RegExp("^rgba\\(" + [reP, reP, reP, reN] + "\\)$"),
+ reHslPercent = new RegExp("^hsl\\(" + [reN, reP, reP] + "\\)$"),
+ reHslaPercent = new RegExp("^hsla\\(" + [reN, reP, reP, reN] + "\\)$");
+
+var named = {
+ aliceblue: 0xf0f8ff,
+ antiquewhite: 0xfaebd7,
+ aqua: 0x00ffff,
+ aquamarine: 0x7fffd4,
+ azure: 0xf0ffff,
+ beige: 0xf5f5dc,
+ bisque: 0xffe4c4,
+ black: 0x000000,
+ blanchedalmond: 0xffebcd,
+ blue: 0x0000ff,
+ blueviolet: 0x8a2be2,
+ brown: 0xa52a2a,
+ burlywood: 0xdeb887,
+ cadetblue: 0x5f9ea0,
+ chartreuse: 0x7fff00,
+ chocolate: 0xd2691e,
+ coral: 0xff7f50,
+ cornflowerblue: 0x6495ed,
+ cornsilk: 0xfff8dc,
+ crimson: 0xdc143c,
+ cyan: 0x00ffff,
+ darkblue: 0x00008b,
+ darkcyan: 0x008b8b,
+ darkgoldenrod: 0xb8860b,
+ darkgray: 0xa9a9a9,
+ darkgreen: 0x006400,
+ darkgrey: 0xa9a9a9,
+ darkkhaki: 0xbdb76b,
+ darkmagenta: 0x8b008b,
+ darkolivegreen: 0x556b2f,
+ darkorange: 0xff8c00,
+ darkorchid: 0x9932cc,
+ darkred: 0x8b0000,
+ darksalmon: 0xe9967a,
+ darkseagreen: 0x8fbc8f,
+ darkslateblue: 0x483d8b,
+ darkslategray: 0x2f4f4f,
+ darkslategrey: 0x2f4f4f,
+ darkturquoise: 0x00ced1,
+ darkviolet: 0x9400d3,
+ deeppink: 0xff1493,
+ deepskyblue: 0x00bfff,
+ dimgray: 0x696969,
+ dimgrey: 0x696969,
+ dodgerblue: 0x1e90ff,
+ firebrick: 0xb22222,
+ floralwhite: 0xfffaf0,
+ forestgreen: 0x228b22,
+ fuchsia: 0xff00ff,
+ gainsboro: 0xdcdcdc,
+ ghostwhite: 0xf8f8ff,
+ gold: 0xffd700,
+ goldenrod: 0xdaa520,
+ gray: 0x808080,
+ green: 0x008000,
+ greenyellow: 0xadff2f,
+ grey: 0x808080,
+ honeydew: 0xf0fff0,
+ hotpink: 0xff69b4,
+ indianred: 0xcd5c5c,
+ indigo: 0x4b0082,
+ ivory: 0xfffff0,
+ khaki: 0xf0e68c,
+ lavender: 0xe6e6fa,
+ lavenderblush: 0xfff0f5,
+ lawngreen: 0x7cfc00,
+ lemonchiffon: 0xfffacd,
+ lightblue: 0xadd8e6,
+ lightcoral: 0xf08080,
+ lightcyan: 0xe0ffff,
+ lightgoldenrodyellow: 0xfafad2,
+ lightgray: 0xd3d3d3,
+ lightgreen: 0x90ee90,
+ lightgrey: 0xd3d3d3,
+ lightpink: 0xffb6c1,
+ lightsalmon: 0xffa07a,
+ lightseagreen: 0x20b2aa,
+ lightskyblue: 0x87cefa,
+ lightslategray: 0x778899,
+ lightslategrey: 0x778899,
+ lightsteelblue: 0xb0c4de,
+ lightyellow: 0xffffe0,
+ lime: 0x00ff00,
+ limegreen: 0x32cd32,
+ linen: 0xfaf0e6,
+ magenta: 0xff00ff,
+ maroon: 0x800000,
+ mediumaquamarine: 0x66cdaa,
+ mediumblue: 0x0000cd,
+ mediumorchid: 0xba55d3,
+ mediumpurple: 0x9370db,
+ mediumseagreen: 0x3cb371,
+ mediumslateblue: 0x7b68ee,
+ mediumspringgreen: 0x00fa9a,
+ mediumturquoise: 0x48d1cc,
+ mediumvioletred: 0xc71585,
+ midnightblue: 0x191970,
+ mintcream: 0xf5fffa,
+ mistyrose: 0xffe4e1,
+ moccasin: 0xffe4b5,
+ navajowhite: 0xffdead,
+ navy: 0x000080,
+ oldlace: 0xfdf5e6,
+ olive: 0x808000,
+ olivedrab: 0x6b8e23,
+ orange: 0xffa500,
+ orangered: 0xff4500,
+ orchid: 0xda70d6,
+ palegoldenrod: 0xeee8aa,
+ palegreen: 0x98fb98,
+ paleturquoise: 0xafeeee,
+ palevioletred: 0xdb7093,
+ papayawhip: 0xffefd5,
+ peachpuff: 0xffdab9,
+ peru: 0xcd853f,
+ pink: 0xffc0cb,
+ plum: 0xdda0dd,
+ powderblue: 0xb0e0e6,
+ purple: 0x800080,
+ rebeccapurple: 0x663399,
+ red: 0xff0000,
+ rosybrown: 0xbc8f8f,
+ royalblue: 0x4169e1,
+ saddlebrown: 0x8b4513,
+ salmon: 0xfa8072,
+ sandybrown: 0xf4a460,
+ seagreen: 0x2e8b57,
+ seashell: 0xfff5ee,
+ sienna: 0xa0522d,
+ silver: 0xc0c0c0,
+ skyblue: 0x87ceeb,
+ slateblue: 0x6a5acd,
+ slategray: 0x708090,
+ slategrey: 0x708090,
+ snow: 0xfffafa,
+ springgreen: 0x00ff7f,
+ steelblue: 0x4682b4,
+ tan: 0xd2b48c,
+ teal: 0x008080,
+ thistle: 0xd8bfd8,
+ tomato: 0xff6347,
+ turquoise: 0x40e0d0,
+ violet: 0xee82ee,
+ wheat: 0xf5deb3,
+ white: 0xffffff,
+ whitesmoke: 0xf5f5f5,
+ yellow: 0xffff00,
+ yellowgreen: 0x9acd32
+};
+
+__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__define__["a" /* default */])(Color, color, {
+ displayable: function() {
+ return this.rgb().displayable();
+ },
+ toString: function() {
+ return this.rgb() + "";
+ }
+});
+
+function color(format) {
+ var m;
+ format = (format + "").trim().toLowerCase();
+ return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00
+ : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000
+ : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)
+ : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)
+ : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)
+ : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)
+ : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)
+ : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)
+ : named.hasOwnProperty(format) ? rgbn(named[format])
+ : format === "transparent" ? new Rgb(NaN, NaN, NaN, 0)
+ : null;
+}
+
+function rgbn(n) {
+ return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);
+}
+
+function rgba(r, g, b, a) {
+ if (a <= 0) r = g = b = NaN;
+ return new Rgb(r, g, b, a);
+}
+
+function rgbConvert(o) {
+ if (!(o instanceof Color)) o = color(o);
+ if (!o) return new Rgb;
+ o = o.rgb();
+ return new Rgb(o.r, o.g, o.b, o.opacity);
+}
+
+function rgb(r, g, b, opacity) {
+ return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);
+}
+
+function Rgb(r, g, b, opacity) {
+ this.r = +r;
+ this.g = +g;
+ this.b = +b;
+ this.opacity = +opacity;
+}
+
+__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__define__["a" /* default */])(Rgb, rgb, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__define__["b" /* extend */])(Color, {
+ brighter: function(k) {
+ k = k == null ? brighter : Math.pow(brighter, k);
+ return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);
+ },
+ darker: function(k) {
+ k = k == null ? darker : Math.pow(darker, k);
+ return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);
+ },
+ rgb: function() {
+ return this;
+ },
+ displayable: function() {
+ return (0 <= this.r && this.r <= 255)
+ && (0 <= this.g && this.g <= 255)
+ && (0 <= this.b && this.b <= 255)
+ && (0 <= this.opacity && this.opacity <= 1);
+ },
+ toString: function() {
+ var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));
+ return (a === 1 ? "rgb(" : "rgba(")
+ + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", "
+ + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", "
+ + Math.max(0, Math.min(255, Math.round(this.b) || 0))
+ + (a === 1 ? ")" : ", " + a + ")");
+ }
+}));
+
+function hsla(h, s, l, a) {
+ if (a <= 0) h = s = l = NaN;
+ else if (l <= 0 || l >= 1) h = s = NaN;
+ else if (s <= 0) h = NaN;
+ return new Hsl(h, s, l, a);
+}
+
+function hslConvert(o) {
+ if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);
+ if (!(o instanceof Color)) o = color(o);
+ if (!o) return new Hsl;
+ if (o instanceof Hsl) return o;
+ o = o.rgb();
+ var r = o.r / 255,
+ g = o.g / 255,
+ b = o.b / 255,
+ min = Math.min(r, g, b),
+ max = Math.max(r, g, b),
+ h = NaN,
+ s = max - min,
+ l = (max + min) / 2;
+ if (s) {
+ if (r === max) h = (g - b) / s + (g < b) * 6;
+ else if (g === max) h = (b - r) / s + 2;
+ else h = (r - g) / s + 4;
+ s /= l < 0.5 ? max + min : 2 - max - min;
+ h *= 60;
+ } else {
+ s = l > 0 && l < 1 ? 0 : h;
+ }
+ return new Hsl(h, s, l, o.opacity);
+}
+
+function hsl(h, s, l, opacity) {
+ return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);
+}
+
+function Hsl(h, s, l, opacity) {
+ this.h = +h;
+ this.s = +s;
+ this.l = +l;
+ this.opacity = +opacity;
+}
+
+__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__define__["a" /* default */])(Hsl, hsl, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__define__["b" /* extend */])(Color, {
+ brighter: function(k) {
+ k = k == null ? brighter : Math.pow(brighter, k);
+ return new Hsl(this.h, this.s, this.l * k, this.opacity);
+ },
+ darker: function(k) {
+ k = k == null ? darker : Math.pow(darker, k);
+ return new Hsl(this.h, this.s, this.l * k, this.opacity);
+ },
+ rgb: function() {
+ var h = this.h % 360 + (this.h < 0) * 360,
+ s = isNaN(h) || isNaN(this.s) ? 0 : this.s,
+ l = this.l,
+ m2 = l + (l < 0.5 ? l : 1 - l) * s,
+ m1 = 2 * l - m2;
+ return new Rgb(
+ hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),
+ hsl2rgb(h, m1, m2),
+ hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),
+ this.opacity
+ );
+ },
+ displayable: function() {
+ return (0 <= this.s && this.s <= 1 || isNaN(this.s))
+ && (0 <= this.l && this.l <= 1)
+ && (0 <= this.opacity && this.opacity <= 1);
+ }
+}));
+
+/* From FvD 13.37, CSS Color Module Level 3 */
+function hsl2rgb(h, m1, m2) {
+ return (h < 60 ? m1 + (m2 - m1) * h / 60
+ : h < 180 ? m2
+ : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60
+ : m1) * 255;
+}
+
+
+/***/ }),
+/* 32 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (immutable) */ __webpack_exports__["b"] = extend;
+/* harmony default export */ __webpack_exports__["a"] = function(constructor, factory, prototype) {
+ constructor.prototype = factory.prototype = prototype;
+ prototype.constructor = constructor;
+};
+
+function extend(parent, definition) {
+ var prototype = Object.create(parent.prototype);
+ for (var key in definition) prototype[key] = definition[key];
+ return prototype;
+}
+
+
+/***/ }),
+/* 33 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_drag__ = __webpack_require__(142);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "drag", function() { return __WEBPACK_IMPORTED_MODULE_0__src_drag__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_nodrag__ = __webpack_require__(70);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "dragDisable", function() { return __WEBPACK_IMPORTED_MODULE_1__src_nodrag__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "dragEnable", function() { return __WEBPACK_IMPORTED_MODULE_1__src_nodrag__["b"]; });
+
+
+
+
+/***/ }),
+/* 34 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_defaultLocale__ = __webpack_require__(155);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "formatDefaultLocale", function() { return __WEBPACK_IMPORTED_MODULE_0__src_defaultLocale__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "format", function() { return __WEBPACK_IMPORTED_MODULE_0__src_defaultLocale__["b"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "formatPrefix", function() { return __WEBPACK_IMPORTED_MODULE_0__src_defaultLocale__["c"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_locale__ = __webpack_require__(75);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "formatLocale", function() { return __WEBPACK_IMPORTED_MODULE_1__src_locale__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_formatSpecifier__ = __webpack_require__(73);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "formatSpecifier", function() { return __WEBPACK_IMPORTED_MODULE_2__src_formatSpecifier__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_precisionFixed__ = __webpack_require__(161);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "precisionFixed", function() { return __WEBPACK_IMPORTED_MODULE_3__src_precisionFixed__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_precisionPrefix__ = __webpack_require__(162);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "precisionPrefix", function() { return __WEBPACK_IMPORTED_MODULE_4__src_precisionPrefix__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_precisionRound__ = __webpack_require__(163);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "precisionRound", function() { return __WEBPACK_IMPORTED_MODULE_5__src_precisionRound__["a"]; });
+
+
+
+
+
+
+
+
+/***/ }),
+/* 35 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+// Computes the decimal coefficient and exponent of the specified number x with
+// significant digits p, where x is positive and p is in [1, 21] or undefined.
+// For example, formatDecimal(1.23) returns ["123", 0].
+/* harmony default export */ __webpack_exports__["a"] = function(x, p) {
+ if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity
+ var i, coefficient = x.slice(0, i);
+
+ // The string returned by toExponential either has the form \d\.\d+e[-+]\d+
+ // (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3).
+ return [
+ coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,
+ +x.slice(i + 1)
+ ];
+};
+
+
+/***/ }),
+/* 36 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (immutable) */ __webpack_exports__["b"] = optional;
+/* harmony export (immutable) */ __webpack_exports__["a"] = required;
+function optional(f) {
+ return f == null ? null : required(f);
+}
+
+function required(f) {
+ if (typeof f !== "function") throw new Error;
+ return f;
+}
+
+
+/***/ }),
+/* 37 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__count__ = __webpack_require__(167);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each__ = __webpack_require__(169);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__eachBefore__ = __webpack_require__(171);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__eachAfter__ = __webpack_require__(170);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__sum__ = __webpack_require__(176);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__sort__ = __webpack_require__(175);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__path__ = __webpack_require__(174);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__ancestors__ = __webpack_require__(166);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__descendants__ = __webpack_require__(168);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__leaves__ = __webpack_require__(172);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__links__ = __webpack_require__(173);
+/* harmony export (immutable) */ __webpack_exports__["a"] = hierarchy;
+/* harmony export (immutable) */ __webpack_exports__["c"] = computeHeight;
+/* harmony export (immutable) */ __webpack_exports__["b"] = Node;
+
+
+
+
+
+
+
+
+
+
+
+
+function hierarchy(data, children) {
+ var root = new Node(data),
+ valued = +data.value && (root.value = data.value),
+ node,
+ nodes = [root],
+ child,
+ childs,
+ i,
+ n;
+
+ if (children == null) children = defaultChildren;
+
+ while (node = nodes.pop()) {
+ if (valued) node.value = +node.data.value;
+ if ((childs = children(node.data)) && (n = childs.length)) {
+ node.children = new Array(n);
+ for (i = n - 1; i >= 0; --i) {
+ nodes.push(child = node.children[i] = new Node(childs[i]));
+ child.parent = node;
+ child.depth = node.depth + 1;
+ }
+ }
+ }
+
+ return root.eachBefore(computeHeight);
+}
+
+function node_copy() {
+ return hierarchy(this).eachBefore(copyData);
+}
+
+function defaultChildren(d) {
+ return d.children;
+}
+
+function copyData(node) {
+ node.data = node.data.data;
+}
+
+function computeHeight(node) {
+ var height = 0;
+ do node.height = height;
+ while ((node = node.parent) && (node.height < ++height));
+}
+
+function Node(data) {
+ this.data = data;
+ this.depth =
+ this.height = 0;
+ this.parent = null;
+}
+
+Node.prototype = hierarchy.prototype = {
+ constructor: Node,
+ count: __WEBPACK_IMPORTED_MODULE_0__count__["a" /* default */],
+ each: __WEBPACK_IMPORTED_MODULE_1__each__["a" /* default */],
+ eachAfter: __WEBPACK_IMPORTED_MODULE_3__eachAfter__["a" /* default */],
+ eachBefore: __WEBPACK_IMPORTED_MODULE_2__eachBefore__["a" /* default */],
+ sum: __WEBPACK_IMPORTED_MODULE_4__sum__["a" /* default */],
+ sort: __WEBPACK_IMPORTED_MODULE_5__sort__["a" /* default */],
+ path: __WEBPACK_IMPORTED_MODULE_6__path__["a" /* default */],
+ ancestors: __WEBPACK_IMPORTED_MODULE_7__ancestors__["a" /* default */],
+ descendants: __WEBPACK_IMPORTED_MODULE_8__descendants__["a" /* default */],
+ leaves: __WEBPACK_IMPORTED_MODULE_9__leaves__["a" /* default */],
+ links: __WEBPACK_IMPORTED_MODULE_10__links__["a" /* default */],
+ copy: node_copy
+};
+
+
+/***/ }),
+/* 38 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__dice__ = __webpack_require__(17);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__slice__ = __webpack_require__(22);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return phi; });
+/* harmony export (immutable) */ __webpack_exports__["b"] = squarifyRatio;
+
+
+
+var phi = (1 + Math.sqrt(5)) / 2;
+
+function squarifyRatio(ratio, parent, x0, y0, x1, y1) {
+ var rows = [],
+ nodes = parent.children,
+ row,
+ nodeValue,
+ i0 = 0,
+ i1 = 0,
+ n = nodes.length,
+ dx, dy,
+ value = parent.value,
+ sumValue,
+ minValue,
+ maxValue,
+ newRatio,
+ minRatio,
+ alpha,
+ beta;
+
+ while (i0 < n) {
+ dx = x1 - x0, dy = y1 - y0;
+
+ // Find the next non-empty node.
+ do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);
+ minValue = maxValue = sumValue;
+ alpha = Math.max(dy / dx, dx / dy) / (value * ratio);
+ beta = sumValue * sumValue * alpha;
+ minRatio = Math.max(maxValue / beta, beta / minValue);
+
+ // Keep adding nodes while the aspect ratio maintains or improves.
+ for (; i1 < n; ++i1) {
+ sumValue += nodeValue = nodes[i1].value;
+ if (nodeValue < minValue) minValue = nodeValue;
+ if (nodeValue > maxValue) maxValue = nodeValue;
+ beta = sumValue * sumValue * alpha;
+ newRatio = Math.max(maxValue / beta, beta / minValue);
+ if (newRatio > minRatio) { sumValue -= nodeValue; break; }
+ minRatio = newRatio;
+ }
+
+ // Position and record the row orientation.
+ rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});
+ if (row.dice) __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__dice__["a" /* default */])(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);
+ else __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__slice__["a" /* default */])(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);
+ value -= sumValue, i0 = i1;
+ }
+
+ return rows;
+}
+
+/* harmony default export */ __webpack_exports__["a"] = (function custom(ratio) {
+
+ function squarify(parent, x0, y0, x1, y1) {
+ squarifyRatio(ratio, parent, x0, y0, x1, y1);
+ }
+
+ squarify.ratio = function(x) {
+ return custom((x = +x) > 1 ? x : 1);
+ };
+
+ return squarify;
+})(phi);
+
+
+/***/ }),
+/* 39 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (immutable) */ __webpack_exports__["b"] = basis;
+function basis(t1, v0, v1, v2, v3) {
+ var t2 = t1 * t1, t3 = t2 * t1;
+ return ((1 - 3 * t1 + 3 * t2 - t3) * v0
+ + (4 - 6 * t2 + 3 * t3) * v1
+ + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2
+ + t3 * v3) / 6;
+}
+
+/* harmony default export */ __webpack_exports__["a"] = function(values) {
+ var n = values.length - 1;
+ return function(t) {
+ var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),
+ v1 = values[i],
+ v2 = values[i + 1],
+ v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,
+ v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;
+ return basis((t - i / n) * n, v0, v1, v2, v3);
+ };
+};
+
+
+/***/ }),
+/* 40 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_color__ = __webpack_require__(6);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__rgb__ = __webpack_require__(85);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__array__ = __webpack_require__(80);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__date__ = __webpack_require__(83);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__number__ = __webpack_require__(23);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__object__ = __webpack_require__(84);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__string__ = __webpack_require__(86);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__constant__ = __webpack_require__(82);
+
+
+
+
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(a, b) {
+ var t = typeof b, c;
+ return b == null || t === "boolean" ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_7__constant__["a" /* default */])(b)
+ : (t === "number" ? __WEBPACK_IMPORTED_MODULE_4__number__["a" /* default */]
+ : t === "string" ? ((c = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["a" /* color */])(b)) ? (b = c, __WEBPACK_IMPORTED_MODULE_1__rgb__["a" /* default */]) : __WEBPACK_IMPORTED_MODULE_6__string__["a" /* default */])
+ : b instanceof __WEBPACK_IMPORTED_MODULE_0_d3_color__["a" /* color */] ? __WEBPACK_IMPORTED_MODULE_1__rgb__["a" /* default */]
+ : b instanceof Date ? __WEBPACK_IMPORTED_MODULE_3__date__["a" /* default */]
+ : Array.isArray(b) ? __WEBPACK_IMPORTED_MODULE_2__array__["a" /* default */]
+ : isNaN(b) ? __WEBPACK_IMPORTED_MODULE_5__object__["a" /* default */]
+ : __WEBPACK_IMPORTED_MODULE_4__number__["a" /* default */])(a, b);
+};
+
+
+/***/ }),
+/* 41 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(node, x0, y0, x1, y1) {
+ this.node = node;
+ this.x0 = x0;
+ this.y0 = y0;
+ this.x1 = x1;
+ this.y1 = y1;
+};
+
+
+/***/ }),
+/* 42 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(x) {
+ return function() {
+ return x;
+ };
+};
+
+
+/***/ }),
+/* 43 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__namespace__ = __webpack_require__(44);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__namespaces__ = __webpack_require__(45);
+
+
+
+function creatorInherit(name) {
+ return function() {
+ var document = this.ownerDocument,
+ uri = this.namespaceURI;
+ return uri === __WEBPACK_IMPORTED_MODULE_1__namespaces__["b" /* xhtml */] && document.documentElement.namespaceURI === __WEBPACK_IMPORTED_MODULE_1__namespaces__["b" /* xhtml */]
+ ? document.createElement(name)
+ : document.createElementNS(uri, name);
+ };
+}
+
+function creatorFixed(fullname) {
+ return function() {
+ return this.ownerDocument.createElementNS(fullname.space, fullname.local);
+ };
+}
+
+/* harmony default export */ __webpack_exports__["a"] = function(name) {
+ var fullname = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__namespace__["a" /* default */])(name);
+ return (fullname.local
+ ? creatorFixed
+ : creatorInherit)(fullname);
+};
+
+
+/***/ }),
+/* 44 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__namespaces__ = __webpack_require__(45);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(name) {
+ var prefix = name += "", i = prefix.indexOf(":");
+ if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1);
+ return __WEBPACK_IMPORTED_MODULE_0__namespaces__["a" /* default */].hasOwnProperty(prefix) ? {space: __WEBPACK_IMPORTED_MODULE_0__namespaces__["a" /* default */][prefix], local: name} : name;
+};
+
+
+/***/ }),
+/* 45 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return xhtml; });
+var xhtml = "http://www.w3.org/1999/xhtml";
+
+/* harmony default export */ __webpack_exports__["a"] = {
+ svg: "http://www.w3.org/2000/svg",
+ xhtml: xhtml,
+ xlink: "http://www.w3.org/1999/xlink",
+ xml: "http://www.w3.org/XML/1998/namespace",
+ xmlns: "http://www.w3.org/2000/xmlns/"
+};
+
+
+/***/ }),
+/* 46 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(node, event) {
+ var svg = node.ownerSVGElement || node;
+
+ if (svg.createSVGPoint) {
+ var point = svg.createSVGPoint();
+ point.x = event.clientX, point.y = event.clientY;
+ point = point.matrixTransform(node.getScreenCTM().inverse());
+ return [point.x, point.y];
+ }
+
+ var rect = node.getBoundingClientRect();
+ return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];
+};
+
+
+/***/ }),
+/* 47 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return event; });
+/* harmony export (immutable) */ __webpack_exports__["b"] = customEvent;
+var filterEvents = {};
+
+var event = null;
+
+if (typeof document !== "undefined") {
+ var element = document.documentElement;
+ if (!("onmouseenter" in element)) {
+ filterEvents = {mouseenter: "mouseover", mouseleave: "mouseout"};
+ }
+}
+
+function filterContextListener(listener, index, group) {
+ listener = contextListener(listener, index, group);
+ return function(event) {
+ var related = event.relatedTarget;
+ if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {
+ listener.call(this, event);
+ }
+ };
+}
+
+function contextListener(listener, index, group) {
+ return function(event1) {
+ var event0 = event; // Events can be reentrant (e.g., focus).
+ event = event1;
+ try {
+ listener.call(this, this.__data__, index, group);
+ } finally {
+ event = event0;
+ }
+ };
+}
+
+function parseTypenames(typenames) {
+ return typenames.trim().split(/^|\s+/).map(function(t) {
+ var name = "", i = t.indexOf(".");
+ if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
+ return {type: t, name: name};
+ });
+}
+
+function onRemove(typename) {
+ return function() {
+ var on = this.__on;
+ if (!on) return;
+ for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {
+ if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {
+ this.removeEventListener(o.type, o.listener, o.capture);
+ } else {
+ on[++i] = o;
+ }
+ }
+ if (++i) on.length = i;
+ else delete this.__on;
+ };
+}
+
+function onAdd(typename, value, capture) {
+ var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;
+ return function(d, i, group) {
+ var on = this.__on, o, listener = wrap(value, i, group);
+ if (on) for (var j = 0, m = on.length; j < m; ++j) {
+ if ((o = on[j]).type === typename.type && o.name === typename.name) {
+ this.removeEventListener(o.type, o.listener, o.capture);
+ this.addEventListener(o.type, o.listener = listener, o.capture = capture);
+ o.value = value;
+ return;
+ }
+ }
+ this.addEventListener(typename.type, listener, capture);
+ o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};
+ if (!on) this.__on = [o];
+ else on.push(o);
+ };
+}
+
+/* harmony default export */ __webpack_exports__["c"] = function(typename, value, capture) {
+ var typenames = parseTypenames(typename + ""), i, n = typenames.length, t;
+
+ if (arguments.length < 2) {
+ var on = this.node().__on;
+ if (on) for (var j = 0, m = on.length, o; j < m; ++j) {
+ for (i = 0, o = on[j]; i < n; ++i) {
+ if ((t = typenames[i]).type === o.type && t.name === o.name) {
+ return o.value;
+ }
+ }
+ }
+ return;
+ }
+
+ on = value ? onAdd : onRemove;
+ if (capture == null) capture = false;
+ for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));
+ return this;
+};
+
+function customEvent(event1, listener, that, args) {
+ var event0 = event;
+ event1.sourceEvent = event;
+ event = event1;
+ try {
+ return listener.apply(that, args);
+ } finally {
+ event = event0;
+ }
+}
+
+
+/***/ }),
+/* 48 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+function none() {}
+
+/* harmony default export */ __webpack_exports__["a"] = function(selector) {
+ return selector == null ? none : function() {
+ return this.querySelector(selector);
+ };
+};
+
+
+/***/ }),
+/* 49 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__selection_on__ = __webpack_require__(47);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var current = __WEBPACK_IMPORTED_MODULE_0__selection_on__["a" /* event */], source;
+ while (source = current.sourceEvent) current = source;
+ return current;
+};
+
+
+/***/ }),
+/* 50 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(node) {
+ return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node
+ || (node.document && node) // node is a Window
+ || node.defaultView; // node is a Document
+};
+
+
+/***/ }),
+/* 51 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__locale__ = __webpack_require__(98);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return timeFormat; });
+/* unused harmony export timeParse */
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return utcFormat; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return utcParse; });
+/* unused harmony export default */
+
+
+var locale;
+var timeFormat;
+var timeParse;
+var utcFormat;
+var utcParse;
+
+defaultLocale({
+ dateTime: "%x, %X",
+ date: "%-m/%-d/%Y",
+ time: "%-I:%M:%S %p",
+ periods: ["AM", "PM"],
+ days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+ shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+ months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+ shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
+});
+
+function defaultLocale(definition) {
+ locale = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__locale__["a" /* default */])(definition);
+ timeFormat = locale.format;
+ timeParse = locale.parse;
+ utcFormat = locale.utcFormat;
+ utcParse = locale.utcParse;
+ return locale;
+}
+
+
+/***/ }),
+/* 52 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_interval__ = __webpack_require__(2);
+/* unused harmony reexport timeInterval */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_millisecond__ = __webpack_require__(268);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "t", function() { return __WEBPACK_IMPORTED_MODULE_1__src_millisecond__["a"]; });
+/* unused harmony reexport timeMilliseconds */
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return __WEBPACK_IMPORTED_MODULE_1__src_millisecond__["a"]; });
+/* unused harmony reexport utcMilliseconds */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_second__ = __webpack_require__(271);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "s", function() { return __WEBPACK_IMPORTED_MODULE_2__src_second__["a"]; });
+/* unused harmony reexport timeSeconds */
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return __WEBPACK_IMPORTED_MODULE_2__src_second__["a"]; });
+/* unused harmony reexport utcSeconds */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_minute__ = __webpack_require__(269);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "r", function() { return __WEBPACK_IMPORTED_MODULE_3__src_minute__["a"]; });
+/* unused harmony reexport timeMinutes */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_hour__ = __webpack_require__(267);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "q", function() { return __WEBPACK_IMPORTED_MODULE_4__src_hour__["a"]; });
+/* unused harmony reexport timeHours */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_day__ = __webpack_require__(266);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return __WEBPACK_IMPORTED_MODULE_5__src_day__["a"]; });
+/* unused harmony reexport timeDays */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__src_week__ = __webpack_require__(278);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "p", function() { return __WEBPACK_IMPORTED_MODULE_6__src_week__["a"]; });
+/* unused harmony reexport timeWeeks */
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return __WEBPACK_IMPORTED_MODULE_6__src_week__["a"]; });
+/* unused harmony reexport timeSundays */
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return __WEBPACK_IMPORTED_MODULE_6__src_week__["b"]; });
+/* unused harmony reexport timeMondays */
+/* unused harmony reexport timeTuesday */
+/* unused harmony reexport timeTuesdays */
+/* unused harmony reexport timeWednesday */
+/* unused harmony reexport timeWednesdays */
+/* unused harmony reexport timeThursday */
+/* unused harmony reexport timeThursdays */
+/* unused harmony reexport timeFriday */
+/* unused harmony reexport timeFridays */
+/* unused harmony reexport timeSaturday */
+/* unused harmony reexport timeSaturdays */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__src_month__ = __webpack_require__(270);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return __WEBPACK_IMPORTED_MODULE_7__src_month__["a"]; });
+/* unused harmony reexport timeMonths */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__src_year__ = __webpack_require__(279);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return __WEBPACK_IMPORTED_MODULE_8__src_year__["a"]; });
+/* unused harmony reexport timeYears */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__src_utcMinute__ = __webpack_require__(274);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return __WEBPACK_IMPORTED_MODULE_9__src_utcMinute__["a"]; });
+/* unused harmony reexport utcMinutes */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__src_utcHour__ = __webpack_require__(273);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return __WEBPACK_IMPORTED_MODULE_10__src_utcHour__["a"]; });
+/* unused harmony reexport utcHours */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__src_utcDay__ = __webpack_require__(272);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return __WEBPACK_IMPORTED_MODULE_11__src_utcDay__["a"]; });
+/* unused harmony reexport utcDays */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__src_utcWeek__ = __webpack_require__(276);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return __WEBPACK_IMPORTED_MODULE_12__src_utcWeek__["a"]; });
+/* unused harmony reexport utcWeeks */
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return __WEBPACK_IMPORTED_MODULE_12__src_utcWeek__["a"]; });
+/* unused harmony reexport utcSundays */
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return __WEBPACK_IMPORTED_MODULE_12__src_utcWeek__["b"]; });
+/* unused harmony reexport utcMondays */
+/* unused harmony reexport utcTuesday */
+/* unused harmony reexport utcTuesdays */
+/* unused harmony reexport utcWednesday */
+/* unused harmony reexport utcWednesdays */
+/* unused harmony reexport utcThursday */
+/* unused harmony reexport utcThursdays */
+/* unused harmony reexport utcFriday */
+/* unused harmony reexport utcFridays */
+/* unused harmony reexport utcSaturday */
+/* unused harmony reexport utcSaturdays */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__src_utcMonth__ = __webpack_require__(275);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_13__src_utcMonth__["a"]; });
+/* unused harmony reexport utcMonths */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__src_utcYear__ = __webpack_require__(277);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __WEBPACK_IMPORTED_MODULE_14__src_utcYear__["a"]; });
+/* unused harmony reexport utcYears */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+/* 53 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (immutable) */ __webpack_exports__["c"] = now;
+/* harmony export (immutable) */ __webpack_exports__["b"] = Timer;
+/* harmony export (immutable) */ __webpack_exports__["a"] = timer;
+/* unused harmony export timerFlush */
+var frame = 0, // is an animation frame pending?
+ timeout = 0, // is a timeout pending?
+ interval = 0, // are any timers active?
+ pokeDelay = 1000, // how frequently we check for clock skew
+ taskHead,
+ taskTail,
+ clockLast = 0,
+ clockNow = 0,
+ clockSkew = 0,
+ clock = typeof performance === "object" && performance.now ? performance : Date,
+ setFrame = typeof requestAnimationFrame === "function" ? requestAnimationFrame : function(f) { setTimeout(f, 17); };
+
+function now() {
+ return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);
+}
+
+function clearNow() {
+ clockNow = 0;
+}
+
+function Timer() {
+ this._call =
+ this._time =
+ this._next = null;
+}
+
+Timer.prototype = timer.prototype = {
+ constructor: Timer,
+ restart: function(callback, delay, time) {
+ if (typeof callback !== "function") throw new TypeError("callback is not a function");
+ time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);
+ if (!this._next && taskTail !== this) {
+ if (taskTail) taskTail._next = this;
+ else taskHead = this;
+ taskTail = this;
+ }
+ this._call = callback;
+ this._time = time;
+ sleep();
+ },
+ stop: function() {
+ if (this._call) {
+ this._call = null;
+ this._time = Infinity;
+ sleep();
+ }
+ }
+};
+
+function timer(callback, delay, time) {
+ var t = new Timer;
+ t.restart(callback, delay, time);
+ return t;
+}
+
+function timerFlush() {
+ now(); // Get the current time, if not already set.
+ ++frame; // Pretend we’ve set an alarm, if we haven’t already.
+ var t = taskHead, e;
+ while (t) {
+ if ((e = clockNow - t._time) >= 0) t._call.call(null, e);
+ t = t._next;
+ }
+ --frame;
+}
+
+function wake() {
+ clockNow = (clockLast = clock.now()) + clockSkew;
+ frame = timeout = 0;
+ try {
+ timerFlush();
+ } finally {
+ frame = 0;
+ nap();
+ clockNow = 0;
+ }
+}
+
+function poke() {
+ var now = clock.now(), delay = now - clockLast;
+ if (delay > pokeDelay) clockSkew -= delay, clockLast = now;
+}
+
+function nap() {
+ var t0, t1 = taskHead, t2, time = Infinity;
+ while (t1) {
+ if (t1._call) {
+ if (time > t1._time) time = t1._time;
+ t0 = t1, t1 = t1._next;
+ } else {
+ t2 = t1._next, t1._next = null;
+ t1 = t0 ? t0._next = t2 : taskHead = t2;
+ }
+ }
+ taskTail = t0;
+ sleep(time);
+}
+
+function sleep(time) {
+ if (frame) return; // Soonest alarm already set, or will be.
+ if (timeout) timeout = clearTimeout(timeout);
+ var delay = time - clockNow;
+ if (delay > 24) {
+ if (time < Infinity) timeout = setTimeout(wake, delay);
+ if (interval) interval = clearInterval(interval);
+ } else {
+ if (!interval) clockLast = clockNow, interval = setInterval(poke, pokeDelay);
+ frame = 1, setFrame(wake);
+ }
+}
+
+
+/***/ }),
+/* 54 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_zoom__ = __webpack_require__(306);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "zoom", function() { return __WEBPACK_IMPORTED_MODULE_0__src_zoom__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_transform__ = __webpack_require__(102);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "zoomTransform", function() { return __WEBPACK_IMPORTED_MODULE_1__src_transform__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "zoomIdentity", function() { return __WEBPACK_IMPORTED_MODULE_1__src_transform__["b"]; });
+
+
+
+
+/***/ }),
+/* 55 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_lineage_plot_base_lineage_plot_js__ = __webpack_require__(28);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__base_lineage_plot_base_lineage_plot_default_layout_js__ = __webpack_require__(27);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__shared_features_js__ = __webpack_require__(12);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_angular__ = __webpack_require__(9);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_angular__);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__base_radial_lineage_plot_css__ = __webpack_require__(308);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__base_radial_lineage_plot_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4__base_radial_lineage_plot_css__);
+
+
+
+
+
+
+
+let d3 = Object.assign({},
+ __webpack_require__(0),
+ __webpack_require__(10),
+ __webpack_require__(1),
+ __webpack_require__(16),
+ __webpack_require__(54)
+);
+
+d3.getEvent = () => __webpack_require__(0).event;
+
+let baseRadialLineageLayout = {
+ plotPadding: {
+ x: 0,
+ y: 20
+ },
+ controls: {
+ rotate: {
+ show: true,
+ enabled: false,
+ position: 2.5
+ }
+ }
+};
+
+class BaseRadialLineagePlotController extends __WEBPACK_IMPORTED_MODULE_0__base_lineage_plot_base_lineage_plot_js__["a" /* default */] {
+ constructor ($element, $window, $scope, $attrs) {
+ super($element, $window, $scope, $attrs);
+ this.originAtCenter = true;
+ this.isCartesian = false;
+ this.totalRotation = 0;
+ this.controlMappings.rotate = this.toggleRotate.bind(this);
+ }
+
+ static getLayoutTemplate() {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__shared_features_js__["a" /* mergeTemplateLayout */])(baseRadialLineageLayout, __WEBPACK_IMPORTED_MODULE_1__base_lineage_plot_base_lineage_plot_default_layout_js__["a" /* default */]);
+ }
+
+ linkGenerator(d) {
+ let s = [d.parent.x, d.parent.y],
+ t = [d.x, d.y],
+ rx = d.parent._r2 * this.transform.kx,
+ ry = d.parent._r2 * this.transform.ky,
+ sweep = d._theta > d.parent._theta ? 1 : 0,
+ largeArc = Math.abs(d._theta - d.parent._theta) % 360 > 180 ? 1 : 0;
+
+ return `M${s[0]},${s[1]}A${rx},${ry} 0 ${largeArc},${sweep} ${d.m[0]},${d.m[1]}L${t[0]},${t[1]}`;
+ }
+
+ setupScales() {
+ this.xExtent = d3.extent(this.nodes, node => this.isTimePlot ? new Date(node.data.date * 1000) : node.depth);
+
+ this.xScale = d3.scaleLinear()
+ .domain([0, this.plotWidth])
+ .range([0, this.plotWidth]);
+
+ this.yScale = d3.scaleLinear()
+ .domain([0, this.plotHeight])
+ .range([0, this.plotHeight]);
+ }
+
+ updatePositions(context) {
+ for (let node of context.nodes) {
+ node.x = context.xScale(context.plotOrigin[0] + node._x);
+ node.y = context.yScale(context.plotOrigin[1] + node._y);
+ node.m = [context.xScale(context.plotOrigin[0] + node._m[0]),
+ context.yScale(context.plotOrigin[1] + node._m[1])];
+ }
+
+ if (context.nodeLabelData) {
+ for (let node of context.nodeLabelData) {
+ node.x = node.node.x + node.currentLabelPos.x;
+ node.y = node.node.y + node.currentLabelPos.y + node.dy;
+ }
+ }
+
+ if (context.linkLabelData) {
+ for (let node of this.linkLabelData) {
+ node.x = (node.nodeTo.x + node.nodeTo.m[0]) / 2;
+ node.y = (node.nodeTo.y + node.nodeTo.m[1]) / 2 + node.dy;
+ }
+ }
+ }
+
+ adjustScales() {}
+
+ drawMainAxes() {}
+
+ drawBrushAxes() {}
+
+ toggleRotate(toggle) {
+ let that = this,
+ start = null,
+ delta;
+ if (toggle) {
+ this.treeFixedContainer
+ .on('dblclick', this.onDoubleClick)
+ .on("mousedown", function () {
+ d3.getEvent().preventDefault();
+ that.svg.style("cursor", "move");
+ that.marker.style('pointer-events', 'none');
+ start = that.transform.invert(d3.mouse(that.treeContainer.node()))
+ .map((d, i) => d - that.plotOrigin[i]);
+ })
+ .on("mouseup", mouseOutUp)
+ .on("mouseout", mouseOutUp)
+ .on("mousemove", function () {
+ if (!start) return;
+ d3.getEvent().preventDefault();
+
+ let m = that.transform.invert(d3.mouse(that.treeContainer.node()))
+ .map((d, i) => d - that.plotOrigin[i]);
+
+ delta = Math.atan2(cross(start, m), dot(start, m)) * 180 / Math.PI;
+
+ for (let node of that.nodes) {
+ node._theta = node._lastTheta + delta;
+ [node._x, node._y] = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__shared_features_js__["c" /* project */])(node);
+ node._m = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__shared_features_js__["c" /* project */])({_theta: node._theta, _r: node.parent ? node.parent._r : 0});
+ }
+ that.updateAndRedraw();
+ });
+ }
+ else {
+ this.treeFixedContainer.on('dblclick', null)
+ .on('mousedown', null)
+ .on('mouseup', null)
+ .on('mousemove', null)
+ .on('mouseout', null);
+ }
+
+ function mouseOutUp() {
+ if (!start) return;
+ that.totalRotation += delta;
+ start = null;
+ delta = 0;
+ for (let node of that.nodes) {
+ node._lastTheta = node._theta;
+ }
+ if (that.totalRotation !== null) {
+ that.brushContainer.attr('transform', `rotate(${that.totalRotation},${that.brushContext.plotOrigin[0]
+ },${that.brushContext.plotOrigin[1]})`);
+ }
+ that.svg.style("cursor", "auto");
+ that.marker.style('pointer-events', 'all');
+ }
+ }
+}
+
+/* harmony default export */ __webpack_exports__["a"] = BaseRadialLineagePlotController;
+
+function spreadNodes(node, level=0) {
+ if (!node.children || !node.children.length) {
+ node.depth = 1;
+ return level;
+ }
+ let max = 1, childMax;
+ for (let child of node.children) {
+ childMax = spreadNodes(child, level + 1);
+ if (childMax > max) {
+ max = childMax;
+ }
+ }
+ node.depth = level / max;
+ return max;
+}
+
+function cross(a, b) { return a[0] * b[1] - a[1] * b[0]; }
+
+function dot(a, b) { return a[0] * b[0] + a[1] * b[1]; }
+
+/***/ }),
+/* 56 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return slice; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return map; });
+var array = Array.prototype;
+
+var slice = array.slice;
+var map = array.map;
+
+
+/***/ }),
+/* 57 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ascending__ = __webpack_require__(13);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__bisector__ = __webpack_require__(58);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return bisectRight; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return bisectLeft; });
+
+
+
+var ascendingBisect = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__bisector__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_0__ascending__["a" /* default */]);
+var bisectRight = ascendingBisect.right;
+var bisectLeft = ascendingBisect.left;
+/* harmony default export */ __webpack_exports__["a"] = bisectRight;
+
+
+/***/ }),
+/* 58 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ascending__ = __webpack_require__(13);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(compare) {
+ if (compare.length === 1) compare = ascendingComparator(compare);
+ return {
+ left: function(a, x, lo, hi) {
+ if (lo == null) lo = 0;
+ if (hi == null) hi = a.length;
+ while (lo < hi) {
+ var mid = lo + hi >>> 1;
+ if (compare(a[mid], x) < 0) lo = mid + 1;
+ else hi = mid;
+ }
+ return lo;
+ },
+ right: function(a, x, lo, hi) {
+ if (lo == null) lo = 0;
+ if (hi == null) hi = a.length;
+ while (lo < hi) {
+ var mid = lo + hi >>> 1;
+ if (compare(a[mid], x) > 0) hi = mid;
+ else lo = mid + 1;
+ }
+ return lo;
+ }
+ };
+};
+
+function ascendingComparator(f) {
+ return function(d, x) {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__ascending__["a" /* default */])(f(d), x);
+ };
+}
+
+
+/***/ }),
+/* 59 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__variance__ = __webpack_require__(67);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(array, f) {
+ var v = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__variance__["a" /* default */])(array, f);
+ return v ? Math.sqrt(v) : v;
+};
+
+
+/***/ }),
+/* 60 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(values, valueof) {
+ var n = values.length,
+ i = -1,
+ value,
+ min,
+ max;
+
+ if (valueof == null) {
+ while (++i < n) { // Find the first comparable value.
+ if ((value = values[i]) != null && value >= value) {
+ min = max = value;
+ while (++i < n) { // Compare the remaining values.
+ if ((value = values[i]) != null) {
+ if (min > value) min = value;
+ if (max < value) max = value;
+ }
+ }
+ }
+ }
+ }
+
+ else {
+ while (++i < n) { // Find the first comparable value.
+ if ((value = valueof(values[i], i, values)) != null && value >= value) {
+ min = max = value;
+ while (++i < n) { // Compare the remaining values.
+ if ((value = valueof(values[i], i, values)) != null) {
+ if (min > value) min = value;
+ if (max < value) max = value;
+ }
+ }
+ }
+ }
+ }
+
+ return [min, max];
+};
+
+
+/***/ }),
+/* 61 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(values, valueof) {
+ var n = values.length,
+ i = -1,
+ value,
+ min;
+
+ if (valueof == null) {
+ while (++i < n) { // Find the first comparable value.
+ if ((value = values[i]) != null && value >= value) {
+ min = value;
+ while (++i < n) { // Compare the remaining values.
+ if ((value = values[i]) != null && min > value) {
+ min = value;
+ }
+ }
+ }
+ }
+ }
+
+ else {
+ while (++i < n) { // Find the first comparable value.
+ if ((value = valueof(values[i], i, values)) != null && value >= value) {
+ min = value;
+ while (++i < n) { // Compare the remaining values.
+ if ((value = valueof(values[i], i, values)) != null && min > value) {
+ min = value;
+ }
+ }
+ }
+ }
+ }
+
+ return min;
+};
+
+
+/***/ }),
+/* 62 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (immutable) */ __webpack_exports__["b"] = pair;
+/* harmony default export */ __webpack_exports__["a"] = function(array, f) {
+ if (f == null) f = pair;
+ var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);
+ while (i < n) pairs[i] = f(p, p = array[++i]);
+ return pairs;
+};
+
+function pair(a, b) {
+ return [a, b];
+}
+
+
+/***/ }),
+/* 63 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(start, stop, step) {
+ start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;
+
+ var i = -1,
+ n = Math.max(0, Math.ceil((stop - start) / step)) | 0,
+ range = new Array(n);
+
+ while (++i < n) {
+ range[i] = start + i * step;
+ }
+
+ return range;
+};
+
+
+/***/ }),
+/* 64 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(values) {
+ return Math.ceil(Math.log(values.length) / Math.LN2) + 1;
+};
+
+
+/***/ }),
+/* 65 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (immutable) */ __webpack_exports__["b"] = tickIncrement;
+/* harmony export (immutable) */ __webpack_exports__["c"] = tickStep;
+var e10 = Math.sqrt(50),
+ e5 = Math.sqrt(10),
+ e2 = Math.sqrt(2);
+
+/* harmony default export */ __webpack_exports__["a"] = function(start, stop, count) {
+ var reverse,
+ i = -1,
+ n,
+ ticks,
+ step;
+
+ stop = +stop, start = +start, count = +count;
+ if (start === stop && count > 0) return [start];
+ if (reverse = stop < start) n = start, start = stop, stop = n;
+ if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];
+
+ if (step > 0) {
+ start = Math.ceil(start / step);
+ stop = Math.floor(stop / step);
+ ticks = new Array(n = Math.ceil(stop - start + 1));
+ while (++i < n) ticks[i] = (start + i) * step;
+ } else {
+ start = Math.floor(start * step);
+ stop = Math.ceil(stop * step);
+ ticks = new Array(n = Math.ceil(start - stop + 1));
+ while (++i < n) ticks[i] = (start - i) / step;
+ }
+
+ if (reverse) ticks.reverse();
+
+ return ticks;
+};
+
+function tickIncrement(start, stop, count) {
+ var step = (stop - start) / Math.max(0, count),
+ power = Math.floor(Math.log(step) / Math.LN10),
+ error = step / Math.pow(10, power);
+ return power >= 0
+ ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)
+ : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);
+}
+
+function tickStep(start, stop, count) {
+ var step0 = Math.abs(stop - start) / Math.max(0, count),
+ step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),
+ error = step0 / step1;
+ if (error >= e10) step1 *= 10;
+ else if (error >= e5) step1 *= 5;
+ else if (error >= e2) step1 *= 2;
+ return stop < start ? -step1 : step1;
+}
+
+
+/***/ }),
+/* 66 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__min__ = __webpack_require__(61);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(matrix) {
+ if (!(n = matrix.length)) return [];
+ for (var i = -1, m = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__min__["a" /* default */])(matrix, length), transpose = new Array(m); ++i < m;) {
+ for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {
+ row[j] = matrix[j][i];
+ }
+ }
+ return transpose;
+};
+
+function length(d) {
+ return d.length;
+}
+
+
+/***/ }),
+/* 67 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__number__ = __webpack_require__(14);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(values, valueof) {
+ var n = values.length,
+ m = 0,
+ i = -1,
+ mean = 0,
+ value,
+ delta,
+ sum = 0;
+
+ if (valueof == null) {
+ while (++i < n) {
+ if (!isNaN(value = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__number__["a" /* default */])(values[i]))) {
+ delta = value - mean;
+ mean += delta / ++m;
+ sum += delta * (value - mean);
+ }
+ }
+ }
+
+ else {
+ while (++i < n) {
+ if (!isNaN(value = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__number__["a" /* default */])(valueof(values[i], i, values)))) {
+ delta = value - mean;
+ mean += delta / ++m;
+ sum += delta * (value - mean);
+ }
+ }
+ }
+
+ if (m > 1) return sum / (m - 1);
+};
+
+
+/***/ }),
+/* 68 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_axis__ = __webpack_require__(125);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "axisTop", function() { return __WEBPACK_IMPORTED_MODULE_0__src_axis__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "axisRight", function() { return __WEBPACK_IMPORTED_MODULE_0__src_axis__["b"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "axisBottom", function() { return __WEBPACK_IMPORTED_MODULE_0__src_axis__["c"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "axisLeft", function() { return __WEBPACK_IMPORTED_MODULE_0__src_axis__["d"]; });
+
+
+
+/***/ }),
+/* 69 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return deg2rad; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return rad2deg; });
+var deg2rad = Math.PI / 180;
+var rad2deg = 180 / Math.PI;
+
+
+/***/ }),
+/* 70 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(0);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__noevent__ = __webpack_require__(71);
+/* harmony export (immutable) */ __webpack_exports__["b"] = yesdrag;
+
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(view) {
+ var root = view.document.documentElement,
+ selection = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_selection__["select"])(view).on("dragstart.drag", __WEBPACK_IMPORTED_MODULE_1__noevent__["a" /* default */], true);
+ if ("onselectstart" in root) {
+ selection.on("selectstart.drag", __WEBPACK_IMPORTED_MODULE_1__noevent__["a" /* default */], true);
+ } else {
+ root.__noselect = root.style.MozUserSelect;
+ root.style.MozUserSelect = "none";
+ }
+};
+
+function yesdrag(view, noclick) {
+ var root = view.document.documentElement,
+ selection = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_selection__["select"])(view).on("dragstart.drag", null);
+ if (noclick) {
+ selection.on("click.drag", __WEBPACK_IMPORTED_MODULE_1__noevent__["a" /* default */], true);
+ setTimeout(function() { selection.on("click.drag", null); }, 0);
+ }
+ if ("onselectstart" in root) {
+ selection.on("selectstart.drag", null);
+ } else {
+ root.style.MozUserSelect = root.__noselect;
+ delete root.__noselect;
+ }
+}
+
+
+/***/ }),
+/* 71 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(0);
+/* harmony export (immutable) */ __webpack_exports__["b"] = nopropagation;
+
+
+function nopropagation() {
+ __WEBPACK_IMPORTED_MODULE_0_d3_selection__["event"].stopImmediatePropagation();
+}
+
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ __WEBPACK_IMPORTED_MODULE_0_d3_selection__["event"].preventDefault();
+ __WEBPACK_IMPORTED_MODULE_0_d3_selection__["event"].stopImmediatePropagation();
+};
+
+
+/***/ }),
+/* 72 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__formatDecimal__ = __webpack_require__(35);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return prefixExponent; });
+
+
+var prefixExponent;
+
+/* harmony default export */ __webpack_exports__["a"] = function(x, p) {
+ var d = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__formatDecimal__["a" /* default */])(x, p);
+ if (!d) return x + "";
+ var coefficient = d[0],
+ exponent = d[1],
+ i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,
+ n = coefficient.length;
+ return i === n ? coefficient
+ : i > n ? coefficient + new Array(i - n + 1).join("0")
+ : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i)
+ : "0." + new Array(1 - i).join("0") + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__formatDecimal__["a" /* default */])(x, Math.max(0, p + i - 1))[0]; // less than 1y!
+};
+
+
+/***/ }),
+/* 73 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__formatTypes__ = __webpack_require__(74);
+/* harmony export (immutable) */ __webpack_exports__["a"] = formatSpecifier;
+
+
+// [[fill]align][sign][symbol][0][width][,][.precision][type]
+var re = /^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;
+
+function formatSpecifier(specifier) {
+ return new FormatSpecifier(specifier);
+}
+
+formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof
+
+function FormatSpecifier(specifier) {
+ if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier);
+
+ var match,
+ fill = match[1] || " ",
+ align = match[2] || ">",
+ sign = match[3] || "-",
+ symbol = match[4] || "",
+ zero = !!match[5],
+ width = match[6] && +match[6],
+ comma = !!match[7],
+ precision = match[8] && +match[8].slice(1),
+ type = match[9] || "";
+
+ // The "n" type is an alias for ",g".
+ if (type === "n") comma = true, type = "g";
+
+ // Map invalid types to the default format.
+ else if (!__WEBPACK_IMPORTED_MODULE_0__formatTypes__["a" /* default */][type]) type = "";
+
+ // If zero fill is specified, padding goes after sign and before digits.
+ if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "=";
+
+ this.fill = fill;
+ this.align = align;
+ this.sign = sign;
+ this.symbol = symbol;
+ this.zero = zero;
+ this.width = width;
+ this.comma = comma;
+ this.precision = precision;
+ this.type = type;
+}
+
+FormatSpecifier.prototype.toString = function() {
+ return this.fill
+ + this.align
+ + this.sign
+ + this.symbol
+ + (this.zero ? "0" : "")
+ + (this.width == null ? "" : Math.max(1, this.width | 0))
+ + (this.comma ? "," : "")
+ + (this.precision == null ? "" : "." + Math.max(0, this.precision | 0))
+ + this.type;
+};
+
+
+/***/ }),
+/* 74 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__formatDefault__ = __webpack_require__(156);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__formatPrefixAuto__ = __webpack_require__(72);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__formatRounded__ = __webpack_require__(159);
+
+
+
+
+/* harmony default export */ __webpack_exports__["a"] = {
+ "": __WEBPACK_IMPORTED_MODULE_0__formatDefault__["a" /* default */],
+ "%": function(x, p) { return (x * 100).toFixed(p); },
+ "b": function(x) { return Math.round(x).toString(2); },
+ "c": function(x) { return x + ""; },
+ "d": function(x) { return Math.round(x).toString(10); },
+ "e": function(x, p) { return x.toExponential(p); },
+ "f": function(x, p) { return x.toFixed(p); },
+ "g": function(x, p) { return x.toPrecision(p); },
+ "o": function(x) { return Math.round(x).toString(8); },
+ "p": function(x, p) { return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__formatRounded__["a" /* default */])(x * 100, p); },
+ "r": __WEBPACK_IMPORTED_MODULE_2__formatRounded__["a" /* default */],
+ "s": __WEBPACK_IMPORTED_MODULE_1__formatPrefixAuto__["a" /* default */],
+ "X": function(x) { return Math.round(x).toString(16).toUpperCase(); },
+ "x": function(x) { return Math.round(x).toString(16); }
+};
+
+
+/***/ }),
+/* 75 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__exponent__ = __webpack_require__(21);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__formatGroup__ = __webpack_require__(157);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__formatNumerals__ = __webpack_require__(158);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__formatSpecifier__ = __webpack_require__(73);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__formatTypes__ = __webpack_require__(74);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__formatPrefixAuto__ = __webpack_require__(72);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__identity__ = __webpack_require__(160);
+
+
+
+
+
+
+
+
+var prefixes = ["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];
+
+/* harmony default export */ __webpack_exports__["a"] = function(locale) {
+ var group = locale.grouping && locale.thousands ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__formatGroup__["a" /* default */])(locale.grouping, locale.thousands) : __WEBPACK_IMPORTED_MODULE_6__identity__["a" /* default */],
+ currency = locale.currency,
+ decimal = locale.decimal,
+ numerals = locale.numerals ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__formatNumerals__["a" /* default */])(locale.numerals) : __WEBPACK_IMPORTED_MODULE_6__identity__["a" /* default */],
+ percent = locale.percent || "%";
+
+ function newFormat(specifier) {
+ specifier = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__formatSpecifier__["a" /* default */])(specifier);
+
+ var fill = specifier.fill,
+ align = specifier.align,
+ sign = specifier.sign,
+ symbol = specifier.symbol,
+ zero = specifier.zero,
+ width = specifier.width,
+ comma = specifier.comma,
+ precision = specifier.precision,
+ type = specifier.type;
+
+ // Compute the prefix and suffix.
+ // For SI-prefix, the suffix is lazily computed.
+ var prefix = symbol === "$" ? currency[0] : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "",
+ suffix = symbol === "$" ? currency[1] : /[%p]/.test(type) ? percent : "";
+
+ // What format function should we use?
+ // Is this an integer type?
+ // Can this type generate exponential notation?
+ var formatType = __WEBPACK_IMPORTED_MODULE_4__formatTypes__["a" /* default */][type],
+ maybeSuffix = !type || /[defgprs%]/.test(type);
+
+ // Set the default precision if not specified,
+ // or clamp the specified precision to the supported range.
+ // For significant precision, it must be in [1, 21].
+ // For fixed precision, it must be in [0, 20].
+ precision = precision == null ? (type ? 6 : 12)
+ : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))
+ : Math.max(0, Math.min(20, precision));
+
+ function format(value) {
+ var valuePrefix = prefix,
+ valueSuffix = suffix,
+ i, n, c;
+
+ if (type === "c") {
+ valueSuffix = formatType(value) + valueSuffix;
+ value = "";
+ } else {
+ value = +value;
+
+ // Perform the initial formatting.
+ var valueNegative = value < 0;
+ value = formatType(Math.abs(value), precision);
+
+ // If a negative value rounds to zero during formatting, treat as positive.
+ if (valueNegative && +value === 0) valueNegative = false;
+
+ // Compute the prefix and suffix.
+ valuePrefix = (valueNegative ? (sign === "(" ? sign : "-") : sign === "-" || sign === "(" ? "" : sign) + valuePrefix;
+ valueSuffix = valueSuffix + (type === "s" ? prefixes[8 + __WEBPACK_IMPORTED_MODULE_5__formatPrefixAuto__["b" /* prefixExponent */] / 3] : "") + (valueNegative && sign === "(" ? ")" : "");
+
+ // Break the formatted value into the integer “value” part that can be
+ // grouped, and fractional or exponential “suffix” part that is not.
+ if (maybeSuffix) {
+ i = -1, n = value.length;
+ while (++i < n) {
+ if (c = value.charCodeAt(i), 48 > c || c > 57) {
+ valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;
+ value = value.slice(0, i);
+ break;
+ }
+ }
+ }
+ }
+
+ // If the fill character is not "0", grouping is applied before padding.
+ if (comma && !zero) value = group(value, Infinity);
+
+ // Compute the padding.
+ var length = valuePrefix.length + value.length + valueSuffix.length,
+ padding = length < width ? new Array(width - length + 1).join(fill) : "";
+
+ // If the fill character is "0", grouping is applied after padding.
+ if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = "";
+
+ // Reconstruct the final output based on the desired alignment.
+ switch (align) {
+ case "<": value = valuePrefix + value + valueSuffix + padding; break;
+ case "=": value = valuePrefix + padding + value + valueSuffix; break;
+ case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;
+ default: value = padding + valuePrefix + value + valueSuffix; break;
+ }
+
+ return numerals(value);
+ }
+
+ format.toString = function() {
+ return specifier + "";
+ };
+
+ return format;
+ }
+
+ function formatPrefix(specifier, value) {
+ var f = newFormat((specifier = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__formatSpecifier__["a" /* default */])(specifier), specifier.type = "f", specifier)),
+ e = Math.max(-8, Math.min(8, Math.floor(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__exponent__["a" /* default */])(value) / 3))) * 3,
+ k = Math.pow(10, -e),
+ prefix = prefixes[8 + e / 3];
+ return function(value) {
+ return f(k * value) + prefix;
+ };
+ }
+
+ return {
+ format: newFormat,
+ formatPrefix: formatPrefix
+ };
+};
+
+
+/***/ }),
+/* 76 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (immutable) */ __webpack_exports__["a"] = constantZero;
+function constantZero() {
+ return 0;
+}
+
+/* harmony default export */ __webpack_exports__["b"] = function(x) {
+ return function() {
+ return x;
+ };
+};
+
+
+/***/ }),
+/* 77 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__array__ = __webpack_require__(164);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(circles) {
+ var i = 0, n = (circles = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__array__["a" /* shuffle */])(__WEBPACK_IMPORTED_MODULE_0__array__["b" /* slice */].call(circles))).length, B = [], p, e;
+
+ while (i < n) {
+ p = circles[i];
+ if (e && enclosesWeak(e, p)) ++i;
+ else e = encloseBasis(B = extendBasis(B, p)), i = 0;
+ }
+
+ return e;
+};
+
+function extendBasis(B, p) {
+ var i, j;
+
+ if (enclosesWeakAll(p, B)) return [p];
+
+ // If we get here then B must have at least one element.
+ for (i = 0; i < B.length; ++i) {
+ if (enclosesNot(p, B[i])
+ && enclosesWeakAll(encloseBasis2(B[i], p), B)) {
+ return [B[i], p];
+ }
+ }
+
+ // If we get here then B must have at least two elements.
+ for (i = 0; i < B.length - 1; ++i) {
+ for (j = i + 1; j < B.length; ++j) {
+ if (enclosesNot(encloseBasis2(B[i], B[j]), p)
+ && enclosesNot(encloseBasis2(B[i], p), B[j])
+ && enclosesNot(encloseBasis2(B[j], p), B[i])
+ && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {
+ return [B[i], B[j], p];
+ }
+ }
+ }
+
+ // If we get here then something is very wrong.
+ throw new Error;
+}
+
+function enclosesNot(a, b) {
+ var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;
+ return dr < 0 || dr * dr < dx * dx + dy * dy;
+}
+
+function enclosesWeak(a, b) {
+ var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;
+ return dr > 0 && dr * dr > dx * dx + dy * dy;
+}
+
+function enclosesWeakAll(a, B) {
+ for (var i = 0; i < B.length; ++i) {
+ if (!enclosesWeak(a, B[i])) {
+ return false;
+ }
+ }
+ return true;
+}
+
+function encloseBasis(B) {
+ switch (B.length) {
+ case 1: return encloseBasis1(B[0]);
+ case 2: return encloseBasis2(B[0], B[1]);
+ case 3: return encloseBasis3(B[0], B[1], B[2]);
+ }
+}
+
+function encloseBasis1(a) {
+ return {
+ x: a.x,
+ y: a.y,
+ r: a.r
+ };
+}
+
+function encloseBasis2(a, b) {
+ var x1 = a.x, y1 = a.y, r1 = a.r,
+ x2 = b.x, y2 = b.y, r2 = b.r,
+ x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,
+ l = Math.sqrt(x21 * x21 + y21 * y21);
+ return {
+ x: (x1 + x2 + x21 / l * r21) / 2,
+ y: (y1 + y2 + y21 / l * r21) / 2,
+ r: (l + r1 + r2) / 2
+ };
+}
+
+function encloseBasis3(a, b, c) {
+ var x1 = a.x, y1 = a.y, r1 = a.r,
+ x2 = b.x, y2 = b.y, r2 = b.r,
+ x3 = c.x, y3 = c.y, r3 = c.r,
+ a2 = x1 - x2,
+ a3 = x1 - x3,
+ b2 = y1 - y2,
+ b3 = y1 - y3,
+ c2 = r2 - r1,
+ c3 = r3 - r1,
+ d1 = x1 * x1 + y1 * y1 - r1 * r1,
+ d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,
+ d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,
+ ab = a3 * b2 - a2 * b3,
+ xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,
+ xb = (b3 * c2 - b2 * c3) / ab,
+ ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,
+ yb = (a2 * c3 - a3 * c2) / ab,
+ A = xb * xb + yb * yb - 1,
+ B = 2 * (r1 + xa * xb + ya * yb),
+ C = xa * xa + ya * ya - r1 * r1,
+ r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);
+ return {
+ x: x1 + xa + xb * r,
+ y: y1 + ya + yb * r,
+ r: r
+ };
+}
+
+
+/***/ }),
+/* 78 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__enclose__ = __webpack_require__(77);
+/* harmony export (immutable) */ __webpack_exports__["b"] = packEnclose;
+
+
+function place(a, b, c) {
+ var ax = a.x,
+ ay = a.y,
+ da = b.r + c.r,
+ db = a.r + c.r,
+ dx = b.x - ax,
+ dy = b.y - ay,
+ dc = dx * dx + dy * dy;
+ if (dc) {
+ var x = 0.5 + ((db *= db) - (da *= da)) / (2 * dc),
+ y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);
+ c.x = ax + x * dx + y * dy;
+ c.y = ay + x * dy - y * dx;
+ } else {
+ c.x = ax + db;
+ c.y = ay;
+ }
+}
+
+function intersects(a, b) {
+ var dx = b.x - a.x,
+ dy = b.y - a.y,
+ dr = a.r + b.r;
+ return dr * dr - 1e-6 > dx * dx + dy * dy;
+}
+
+function score(node) {
+ var a = node._,
+ b = node.next._,
+ ab = a.r + b.r,
+ dx = (a.x * b.r + b.x * a.r) / ab,
+ dy = (a.y * b.r + b.y * a.r) / ab;
+ return dx * dx + dy * dy;
+}
+
+function Node(circle) {
+ this._ = circle;
+ this.next = null;
+ this.previous = null;
+}
+
+function packEnclose(circles) {
+ if (!(n = circles.length)) return 0;
+
+ var a, b, c, n, aa, ca, i, j, k, sj, sk;
+
+ // Place the first circle.
+ a = circles[0], a.x = 0, a.y = 0;
+ if (!(n > 1)) return a.r;
+
+ // Place the second circle.
+ b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;
+ if (!(n > 2)) return a.r + b.r;
+
+ // Place the third circle.
+ place(b, a, c = circles[2]);
+
+ // Initialize the front-chain using the first three circles a, b and c.
+ a = new Node(a), b = new Node(b), c = new Node(c);
+ a.next = c.previous = b;
+ b.next = a.previous = c;
+ c.next = b.previous = a;
+
+ // Attempt to place each remaining circle…
+ pack: for (i = 3; i < n; ++i) {
+ place(a._, b._, c = circles[i]), c = new Node(c);
+
+ // Find the closest intersecting circle on the front-chain, if any.
+ // “Closeness” is determined by linear distance along the front-chain.
+ // “Ahead” or “behind” is likewise determined by linear distance.
+ j = b.next, k = a.previous, sj = b._.r, sk = a._.r;
+ do {
+ if (sj <= sk) {
+ if (intersects(j._, c._)) {
+ b = j, a.next = b, b.previous = a, --i;
+ continue pack;
+ }
+ sj += j._.r, j = j.next;
+ } else {
+ if (intersects(k._, c._)) {
+ a = k, a.next = b, b.previous = a, --i;
+ continue pack;
+ }
+ sk += k._.r, k = k.previous;
+ }
+ } while (j !== k.next);
+
+ // Success! Insert the new circle c between a and b.
+ c.previous = a, c.next = b, a.next = b.previous = b = c;
+
+ // Compute the new closest circle pair to the centroid.
+ aa = score(a);
+ while ((c = c.next) !== b) {
+ if ((ca = score(c)) < aa) {
+ a = c, aa = ca;
+ }
+ }
+ b = a.next;
+ }
+
+ // Compute the enclosing circle of the front chain.
+ a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__enclose__["a" /* default */])(a);
+
+ // Translate the circles to put the enclosing circle around the origin.
+ for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;
+
+ return c.r;
+}
+
+/* harmony default export */ __webpack_exports__["a"] = function(circles) {
+ packEnclose(circles);
+ return circles;
+};
+
+
+/***/ }),
+/* 79 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(node) {
+ node.x0 = Math.round(node.x0);
+ node.y0 = Math.round(node.y0);
+ node.x1 = Math.round(node.x1);
+ node.y1 = Math.round(node.y1);
+};
+
+
+/***/ }),
+/* 80 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__value__ = __webpack_require__(40);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(a, b) {
+ var nb = b ? b.length : 0,
+ na = a ? Math.min(nb, a.length) : 0,
+ x = new Array(nb),
+ c = new Array(nb),
+ i;
+
+ for (i = 0; i < na; ++i) x[i] = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__value__["a" /* default */])(a[i], b[i]);
+ for (; i < nb; ++i) c[i] = b[i];
+
+ return function(t) {
+ for (i = 0; i < na; ++i) c[i] = x[i](t);
+ return c;
+ };
+};
+
+
+/***/ }),
+/* 81 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__basis__ = __webpack_require__(39);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(values) {
+ var n = values.length;
+ return function(t) {
+ var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),
+ v0 = values[(i + n - 1) % n],
+ v1 = values[i % n],
+ v2 = values[(i + 1) % n],
+ v3 = values[(i + 2) % n];
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__basis__["b" /* basis */])((t - i / n) * n, v0, v1, v2, v3);
+ };
+};
+
+
+/***/ }),
+/* 82 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(x) {
+ return function() {
+ return x;
+ };
+};
+
+
+/***/ }),
+/* 83 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(a, b) {
+ var d = new Date;
+ return a = +a, b -= a, function(t) {
+ return d.setTime(a + b * t), d;
+ };
+};
+
+
+/***/ }),
+/* 84 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__value__ = __webpack_require__(40);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(a, b) {
+ var i = {},
+ c = {},
+ k;
+
+ if (a === null || typeof a !== "object") a = {};
+ if (b === null || typeof b !== "object") b = {};
+
+ for (k in b) {
+ if (k in a) {
+ i[k] = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__value__["a" /* default */])(a[k], b[k]);
+ } else {
+ c[k] = b[k];
+ }
+ }
+
+ return function(t) {
+ for (k in i) c[k] = i[k](t);
+ return c;
+ };
+};
+
+
+/***/ }),
+/* 85 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_color__ = __webpack_require__(6);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__basis__ = __webpack_require__(39);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__basisClosed__ = __webpack_require__(81);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__color__ = __webpack_require__(18);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return rgbBasis; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return rgbBasisClosed; });
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["a"] = (function rgbGamma(y) {
+ var color = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__color__["c" /* gamma */])(y);
+
+ function rgb(start, end) {
+ var r = color((start = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["f" /* rgb */])(start)).r, (end = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["f" /* rgb */])(end)).r),
+ g = color(start.g, end.g),
+ b = color(start.b, end.b),
+ opacity = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__color__["a" /* default */])(start.opacity, end.opacity);
+ return function(t) {
+ start.r = r(t);
+ start.g = g(t);
+ start.b = b(t);
+ start.opacity = opacity(t);
+ return start + "";
+ };
+ }
+
+ rgb.gamma = rgbGamma;
+
+ return rgb;
+})(1);
+
+function rgbSpline(spline) {
+ return function(colors) {
+ var n = colors.length,
+ r = new Array(n),
+ g = new Array(n),
+ b = new Array(n),
+ i, color;
+ for (i = 0; i < n; ++i) {
+ color = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["f" /* rgb */])(colors[i]);
+ r[i] = color.r || 0;
+ g[i] = color.g || 0;
+ b[i] = color.b || 0;
+ }
+ r = spline(r);
+ g = spline(g);
+ b = spline(b);
+ color.opacity = 1;
+ return function(t) {
+ color.r = r(t);
+ color.g = g(t);
+ color.b = b(t);
+ return color + "";
+ };
+ };
+}
+
+var rgbBasis = rgbSpline(__WEBPACK_IMPORTED_MODULE_1__basis__["a" /* default */]);
+var rgbBasisClosed = rgbSpline(__WEBPACK_IMPORTED_MODULE_2__basisClosed__["a" /* default */]);
+
+
+/***/ }),
+/* 86 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__number__ = __webpack_require__(23);
+
+
+var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,
+ reB = new RegExp(reA.source, "g");
+
+function zero(b) {
+ return function() {
+ return b;
+ };
+}
+
+function one(b) {
+ return function(t) {
+ return b(t) + "";
+ };
+}
+
+/* harmony default export */ __webpack_exports__["a"] = function(a, b) {
+ var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b
+ am, // current match in a
+ bm, // current match in b
+ bs, // string preceding current number in b, if any
+ i = -1, // index in s
+ s = [], // string constants and placeholders
+ q = []; // number interpolators
+
+ // Coerce inputs to strings.
+ a = a + "", b = b + "";
+
+ // Interpolate pairs of numbers in a & b.
+ while ((am = reA.exec(a))
+ && (bm = reB.exec(b))) {
+ if ((bs = bm.index) > bi) { // a string precedes the next number in b
+ bs = b.slice(bi, bs);
+ if (s[i]) s[i] += bs; // coalesce with previous string
+ else s[++i] = bs;
+ }
+ if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match
+ if (s[i]) s[i] += bm; // coalesce with previous string
+ else s[++i] = bm;
+ } else { // interpolate non-matching numbers
+ s[++i] = null;
+ q.push({i: i, x: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__number__["a" /* default */])(am, bm)});
+ }
+ bi = reB.lastIndex;
+ }
+
+ // Add remains of b.
+ if (bi < b.length) {
+ bs = b.slice(bi);
+ if (s[i]) s[i] += bs; // coalesce with previous string
+ else s[++i] = bs;
+ }
+
+ // Special optimization for only a single match.
+ // Otherwise, interpolate each of the numbers and rejoin the string.
+ return s.length < 2 ? (q[0]
+ ? one(q[0].x)
+ : zero(b))
+ : (b = q.length, function(t) {
+ for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);
+ return s.join("");
+ });
+};
+
+
+/***/ }),
+/* 87 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(domain, interval) {
+ domain = domain.slice();
+
+ var i0 = 0,
+ i1 = domain.length - 1,
+ x0 = domain[i0],
+ x1 = domain[i1],
+ t;
+
+ if (x1 < x0) {
+ t = i0, i0 = i1, i1 = t;
+ t = x0, x0 = x1, x1 = t;
+ }
+
+ domain[i0] = interval.floor(x0);
+ domain[i1] = interval.ceil(x1);
+ return domain;
+};
+
+
+/***/ }),
+/* 88 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(x) {
+ return +x;
+};
+
+
+/***/ }),
+/* 89 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_collection__ = __webpack_require__(132);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__array__ = __webpack_require__(11);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return implicit; });
+/* harmony export (immutable) */ __webpack_exports__["a"] = ordinal;
+
+
+
+var implicit = {name: "implicit"};
+
+function ordinal(range) {
+ var index = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_collection__["a" /* map */])(),
+ domain = [],
+ unknown = implicit;
+
+ range = range == null ? [] : __WEBPACK_IMPORTED_MODULE_1__array__["b" /* slice */].call(range);
+
+ function scale(d) {
+ var key = d + "", i = index.get(key);
+ if (!i) {
+ if (unknown !== implicit) return unknown;
+ index.set(key, i = domain.push(d));
+ }
+ return range[(i - 1) % range.length];
+ }
+
+ scale.domain = function(_) {
+ if (!arguments.length) return domain.slice();
+ domain = [], index = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_collection__["a" /* map */])();
+ var i = -1, n = _.length, d, key;
+ while (++i < n) if (!index.has(key = (d = _[i]) + "")) index.set(key, domain.push(d));
+ return scale;
+ };
+
+ scale.range = function(_) {
+ return arguments.length ? (range = __WEBPACK_IMPORTED_MODULE_1__array__["b" /* slice */].call(_), scale) : range.slice();
+ };
+
+ scale.unknown = function(_) {
+ return arguments.length ? (unknown = _, scale) : unknown;
+ };
+
+ scale.copy = function() {
+ return ordinal()
+ .domain(domain)
+ .range(range)
+ .unknown(unknown);
+ };
+
+ return scale;
+}
+
+
+/***/ }),
+/* 90 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_array__ = __webpack_require__(1);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_d3_interpolate__ = __webpack_require__(3);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_d3_time__ = __webpack_require__(52);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_d3_time_format__ = __webpack_require__(96);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__array__ = __webpack_require__(11);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__continuous__ = __webpack_require__(24);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__nice__ = __webpack_require__(87);
+/* harmony export (immutable) */ __webpack_exports__["b"] = calendar;
+
+
+
+
+
+
+
+
+var durationSecond = 1000,
+ durationMinute = durationSecond * 60,
+ durationHour = durationMinute * 60,
+ durationDay = durationHour * 24,
+ durationWeek = durationDay * 7,
+ durationMonth = durationDay * 30,
+ durationYear = durationDay * 365;
+
+function date(t) {
+ return new Date(t);
+}
+
+function number(t) {
+ return t instanceof Date ? +t : +new Date(+t);
+}
+
+function calendar(year, month, week, day, hour, minute, second, millisecond, format) {
+ var scale = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__continuous__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_5__continuous__["b" /* deinterpolateLinear */], __WEBPACK_IMPORTED_MODULE_1_d3_interpolate__["interpolateNumber"]),
+ invert = scale.invert,
+ domain = scale.domain;
+
+ var formatMillisecond = format(".%L"),
+ formatSecond = format(":%S"),
+ formatMinute = format("%I:%M"),
+ formatHour = format("%I %p"),
+ formatDay = format("%a %d"),
+ formatWeek = format("%b %d"),
+ formatMonth = format("%B"),
+ formatYear = format("%Y");
+
+ var tickIntervals = [
+ [second, 1, durationSecond],
+ [second, 5, 5 * durationSecond],
+ [second, 15, 15 * durationSecond],
+ [second, 30, 30 * durationSecond],
+ [minute, 1, durationMinute],
+ [minute, 5, 5 * durationMinute],
+ [minute, 15, 15 * durationMinute],
+ [minute, 30, 30 * durationMinute],
+ [ hour, 1, durationHour ],
+ [ hour, 3, 3 * durationHour ],
+ [ hour, 6, 6 * durationHour ],
+ [ hour, 12, 12 * durationHour ],
+ [ day, 1, durationDay ],
+ [ day, 2, 2 * durationDay ],
+ [ week, 1, durationWeek ],
+ [ month, 1, durationMonth ],
+ [ month, 3, 3 * durationMonth ],
+ [ year, 1, durationYear ]
+ ];
+
+ function tickFormat(date) {
+ return (second(date) < date ? formatMillisecond
+ : minute(date) < date ? formatSecond
+ : hour(date) < date ? formatMinute
+ : day(date) < date ? formatHour
+ : month(date) < date ? (week(date) < date ? formatDay : formatWeek)
+ : year(date) < date ? formatMonth
+ : formatYear)(date);
+ }
+
+ function tickInterval(interval, start, stop, step) {
+ if (interval == null) interval = 10;
+
+ // If a desired tick count is specified, pick a reasonable tick interval
+ // based on the extent of the domain and a rough estimate of tick size.
+ // Otherwise, assume interval is already a time interval and use it.
+ if (typeof interval === "number") {
+ var target = Math.abs(stop - start) / interval,
+ i = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_array__["bisector"])(function(i) { return i[2]; }).right(tickIntervals, target);
+ if (i === tickIntervals.length) {
+ step = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_array__["tickStep"])(start / durationYear, stop / durationYear, interval);
+ interval = year;
+ } else if (i) {
+ i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];
+ step = i[1];
+ interval = i[0];
+ } else {
+ step = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_array__["tickStep"])(start, stop, interval);
+ interval = millisecond;
+ }
+ }
+
+ return step == null ? interval : interval.every(step);
+ }
+
+ scale.invert = function(y) {
+ return new Date(invert(y));
+ };
+
+ scale.domain = function(_) {
+ return arguments.length ? domain(__WEBPACK_IMPORTED_MODULE_4__array__["a" /* map */].call(_, number)) : domain().map(date);
+ };
+
+ scale.ticks = function(interval, step) {
+ var d = domain(),
+ t0 = d[0],
+ t1 = d[d.length - 1],
+ r = t1 < t0,
+ t;
+ if (r) t = t0, t0 = t1, t1 = t;
+ t = tickInterval(interval, t0, t1, step);
+ t = t ? t.range(t0, t1 + 1) : []; // inclusive stop
+ return r ? t.reverse() : t;
+ };
+
+ scale.tickFormat = function(count, specifier) {
+ return specifier == null ? tickFormat : format(specifier);
+ };
+
+ scale.nice = function(interval, step) {
+ var d = domain();
+ return (interval = tickInterval(interval, d[0], d[d.length - 1], step))
+ ? domain(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__nice__["a" /* default */])(d, interval))
+ : scale;
+ };
+
+ scale.copy = function() {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__continuous__["c" /* copy */])(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));
+ };
+
+ return scale;
+}
+
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ return calendar(__WEBPACK_IMPORTED_MODULE_2_d3_time__["j" /* timeYear */], __WEBPACK_IMPORTED_MODULE_2_d3_time__["o" /* timeMonth */], __WEBPACK_IMPORTED_MODULE_2_d3_time__["p" /* timeWeek */], __WEBPACK_IMPORTED_MODULE_2_d3_time__["i" /* timeDay */], __WEBPACK_IMPORTED_MODULE_2_d3_time__["q" /* timeHour */], __WEBPACK_IMPORTED_MODULE_2_d3_time__["r" /* timeMinute */], __WEBPACK_IMPORTED_MODULE_2_d3_time__["s" /* timeSecond */], __WEBPACK_IMPORTED_MODULE_2_d3_time__["t" /* timeMillisecond */], __WEBPACK_IMPORTED_MODULE_3_d3_time_format__["b" /* timeFormat */]).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);
+};
+
+
+/***/ }),
+/* 91 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+var matcher = function(selector) {
+ return function() {
+ return this.matches(selector);
+ };
+};
+
+if (typeof document !== "undefined") {
+ var element = document.documentElement;
+ if (!element.matches) {
+ var vendorMatches = element.webkitMatchesSelector
+ || element.msMatchesSelector
+ || element.mozMatchesSelector
+ || element.oMatchesSelector;
+ matcher = function(selector) {
+ return function() {
+ return vendorMatches.call(this, selector);
+ };
+ };
+ }
+}
+
+/* harmony default export */ __webpack_exports__["a"] = matcher;
+
+
+/***/ }),
+/* 92 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sparse__ = __webpack_require__(93);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__index__ = __webpack_require__(4);
+/* harmony export (immutable) */ __webpack_exports__["b"] = EnterNode;
+
+
+
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ return new __WEBPACK_IMPORTED_MODULE_1__index__["b" /* Selection */](this._enter || this._groups.map(__WEBPACK_IMPORTED_MODULE_0__sparse__["a" /* default */]), this._parents);
+};
+
+function EnterNode(parent, datum) {
+ this.ownerDocument = parent.ownerDocument;
+ this.namespaceURI = parent.namespaceURI;
+ this._next = null;
+ this._parent = parent;
+ this.__data__ = datum;
+}
+
+EnterNode.prototype = {
+ constructor: EnterNode,
+ appendChild: function(child) { return this._parent.insertBefore(child, this._next); },
+ insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },
+ querySelector: function(selector) { return this._parent.querySelector(selector); },
+ querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }
+};
+
+
+/***/ }),
+/* 93 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(update) {
+ return new Array(update.length);
+};
+
+
+/***/ }),
+/* 94 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__window__ = __webpack_require__(50);
+/* harmony export (immutable) */ __webpack_exports__["a"] = styleValue;
+
+
+function styleRemove(name) {
+ return function() {
+ this.style.removeProperty(name);
+ };
+}
+
+function styleConstant(name, value, priority) {
+ return function() {
+ this.style.setProperty(name, value, priority);
+ };
+}
+
+function styleFunction(name, value, priority) {
+ return function() {
+ var v = value.apply(this, arguments);
+ if (v == null) this.style.removeProperty(name);
+ else this.style.setProperty(name, v, priority);
+ };
+}
+
+/* harmony default export */ __webpack_exports__["b"] = function(name, value, priority) {
+ return arguments.length > 1
+ ? this.each((value == null
+ ? styleRemove : typeof value === "function"
+ ? styleFunction
+ : styleConstant)(name, value, priority == null ? "" : priority))
+ : styleValue(this.node(), name);
+};
+
+function styleValue(node, name) {
+ return node.style.getPropertyValue(name)
+ || __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__window__["a" /* default */])(node).getComputedStyle(node, null).getPropertyValue(name);
+}
+
+
+/***/ }),
+/* 95 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+function empty() {
+ return [];
+}
+
+/* harmony default export */ __webpack_exports__["a"] = function(selector) {
+ return selector == null ? empty : function() {
+ return this.querySelectorAll(selector);
+ };
+};
+
+
+/***/ }),
+/* 96 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_defaultLocale__ = __webpack_require__(51);
+/* unused harmony reexport timeFormatDefaultLocale */
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_0__src_defaultLocale__["c"]; });
+/* unused harmony reexport timeParse */
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __WEBPACK_IMPORTED_MODULE_0__src_defaultLocale__["a"]; });
+/* unused harmony reexport utcParse */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_locale__ = __webpack_require__(98);
+/* unused harmony reexport timeFormatLocale */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_isoFormat__ = __webpack_require__(97);
+/* unused harmony reexport isoFormat */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_isoParse__ = __webpack_require__(265);
+/* unused harmony reexport isoParse */
+
+
+
+
+
+
+/***/ }),
+/* 97 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defaultLocale__ = __webpack_require__(51);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isoSpecifier; });
+
+
+var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ";
+
+function formatIsoNative(date) {
+ return date.toISOString();
+}
+
+var formatIso = Date.prototype.toISOString
+ ? formatIsoNative
+ : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__defaultLocale__["a" /* utcFormat */])(isoSpecifier);
+
+/* unused harmony default export */ var _unused_webpack_default_export = formatIso;
+
+
+/***/ }),
+/* 98 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_time__ = __webpack_require__(52);
+/* harmony export (immutable) */ __webpack_exports__["a"] = formatLocale;
+
+
+function localDate(d) {
+ if (0 <= d.y && d.y < 100) {
+ var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);
+ date.setFullYear(d.y);
+ return date;
+ }
+ return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);
+}
+
+function utcDate(d) {
+ if (0 <= d.y && d.y < 100) {
+ var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));
+ date.setUTCFullYear(d.y);
+ return date;
+ }
+ return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));
+}
+
+function newYear(y) {
+ return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};
+}
+
+function formatLocale(locale) {
+ var locale_dateTime = locale.dateTime,
+ locale_date = locale.date,
+ locale_time = locale.time,
+ locale_periods = locale.periods,
+ locale_weekdays = locale.days,
+ locale_shortWeekdays = locale.shortDays,
+ locale_months = locale.months,
+ locale_shortMonths = locale.shortMonths;
+
+ var periodRe = formatRe(locale_periods),
+ periodLookup = formatLookup(locale_periods),
+ weekdayRe = formatRe(locale_weekdays),
+ weekdayLookup = formatLookup(locale_weekdays),
+ shortWeekdayRe = formatRe(locale_shortWeekdays),
+ shortWeekdayLookup = formatLookup(locale_shortWeekdays),
+ monthRe = formatRe(locale_months),
+ monthLookup = formatLookup(locale_months),
+ shortMonthRe = formatRe(locale_shortMonths),
+ shortMonthLookup = formatLookup(locale_shortMonths);
+
+ var formats = {
+ "a": formatShortWeekday,
+ "A": formatWeekday,
+ "b": formatShortMonth,
+ "B": formatMonth,
+ "c": null,
+ "d": formatDayOfMonth,
+ "e": formatDayOfMonth,
+ "H": formatHour24,
+ "I": formatHour12,
+ "j": formatDayOfYear,
+ "L": formatMilliseconds,
+ "m": formatMonthNumber,
+ "M": formatMinutes,
+ "p": formatPeriod,
+ "S": formatSeconds,
+ "U": formatWeekNumberSunday,
+ "w": formatWeekdayNumber,
+ "W": formatWeekNumberMonday,
+ "x": null,
+ "X": null,
+ "y": formatYear,
+ "Y": formatFullYear,
+ "Z": formatZone,
+ "%": formatLiteralPercent
+ };
+
+ var utcFormats = {
+ "a": formatUTCShortWeekday,
+ "A": formatUTCWeekday,
+ "b": formatUTCShortMonth,
+ "B": formatUTCMonth,
+ "c": null,
+ "d": formatUTCDayOfMonth,
+ "e": formatUTCDayOfMonth,
+ "H": formatUTCHour24,
+ "I": formatUTCHour12,
+ "j": formatUTCDayOfYear,
+ "L": formatUTCMilliseconds,
+ "m": formatUTCMonthNumber,
+ "M": formatUTCMinutes,
+ "p": formatUTCPeriod,
+ "S": formatUTCSeconds,
+ "U": formatUTCWeekNumberSunday,
+ "w": formatUTCWeekdayNumber,
+ "W": formatUTCWeekNumberMonday,
+ "x": null,
+ "X": null,
+ "y": formatUTCYear,
+ "Y": formatUTCFullYear,
+ "Z": formatUTCZone,
+ "%": formatLiteralPercent
+ };
+
+ var parses = {
+ "a": parseShortWeekday,
+ "A": parseWeekday,
+ "b": parseShortMonth,
+ "B": parseMonth,
+ "c": parseLocaleDateTime,
+ "d": parseDayOfMonth,
+ "e": parseDayOfMonth,
+ "H": parseHour24,
+ "I": parseHour24,
+ "j": parseDayOfYear,
+ "L": parseMilliseconds,
+ "m": parseMonthNumber,
+ "M": parseMinutes,
+ "p": parsePeriod,
+ "S": parseSeconds,
+ "U": parseWeekNumberSunday,
+ "w": parseWeekdayNumber,
+ "W": parseWeekNumberMonday,
+ "x": parseLocaleDate,
+ "X": parseLocaleTime,
+ "y": parseYear,
+ "Y": parseFullYear,
+ "Z": parseZone,
+ "%": parseLiteralPercent
+ };
+
+ // These recursive directive definitions must be deferred.
+ formats.x = newFormat(locale_date, formats);
+ formats.X = newFormat(locale_time, formats);
+ formats.c = newFormat(locale_dateTime, formats);
+ utcFormats.x = newFormat(locale_date, utcFormats);
+ utcFormats.X = newFormat(locale_time, utcFormats);
+ utcFormats.c = newFormat(locale_dateTime, utcFormats);
+
+ function newFormat(specifier, formats) {
+ return function(date) {
+ var string = [],
+ i = -1,
+ j = 0,
+ n = specifier.length,
+ c,
+ pad,
+ format;
+
+ if (!(date instanceof Date)) date = new Date(+date);
+
+ while (++i < n) {
+ if (specifier.charCodeAt(i) === 37) {
+ string.push(specifier.slice(j, i));
+ if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);
+ else pad = c === "e" ? " " : "0";
+ if (format = formats[c]) c = format(date, pad);
+ string.push(c);
+ j = i + 1;
+ }
+ }
+
+ string.push(specifier.slice(j, i));
+ return string.join("");
+ };
+ }
+
+ function newParse(specifier, newDate) {
+ return function(string) {
+ var d = newYear(1900),
+ i = parseSpecifier(d, specifier, string += "", 0);
+ if (i != string.length) return null;
+
+ // The am-pm flag is 0 for AM, and 1 for PM.
+ if ("p" in d) d.H = d.H % 12 + d.p * 12;
+
+ // Convert day-of-week and week-of-year to day-of-year.
+ if ("W" in d || "U" in d) {
+ if (!("w" in d)) d.w = "W" in d ? 1 : 0;
+ var day = "Z" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();
+ d.m = 0;
+ d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;
+ }
+
+ // If a time zone is specified, all fields are interpreted as UTC and then
+ // offset according to the specified time zone.
+ if ("Z" in d) {
+ d.H += d.Z / 100 | 0;
+ d.M += d.Z % 100;
+ return utcDate(d);
+ }
+
+ // Otherwise, all fields are in local time.
+ return newDate(d);
+ };
+ }
+
+ function parseSpecifier(d, specifier, string, j) {
+ var i = 0,
+ n = specifier.length,
+ m = string.length,
+ c,
+ parse;
+
+ while (i < n) {
+ if (j >= m) return -1;
+ c = specifier.charCodeAt(i++);
+ if (c === 37) {
+ c = specifier.charAt(i++);
+ parse = parses[c in pads ? specifier.charAt(i++) : c];
+ if (!parse || ((j = parse(d, string, j)) < 0)) return -1;
+ } else if (c != string.charCodeAt(j++)) {
+ return -1;
+ }
+ }
+
+ return j;
+ }
+
+ function parsePeriod(d, string, i) {
+ var n = periodRe.exec(string.slice(i));
+ return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;
+ }
+
+ function parseShortWeekday(d, string, i) {
+ var n = shortWeekdayRe.exec(string.slice(i));
+ return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;
+ }
+
+ function parseWeekday(d, string, i) {
+ var n = weekdayRe.exec(string.slice(i));
+ return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;
+ }
+
+ function parseShortMonth(d, string, i) {
+ var n = shortMonthRe.exec(string.slice(i));
+ return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;
+ }
+
+ function parseMonth(d, string, i) {
+ var n = monthRe.exec(string.slice(i));
+ return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;
+ }
+
+ function parseLocaleDateTime(d, string, i) {
+ return parseSpecifier(d, locale_dateTime, string, i);
+ }
+
+ function parseLocaleDate(d, string, i) {
+ return parseSpecifier(d, locale_date, string, i);
+ }
+
+ function parseLocaleTime(d, string, i) {
+ return parseSpecifier(d, locale_time, string, i);
+ }
+
+ function formatShortWeekday(d) {
+ return locale_shortWeekdays[d.getDay()];
+ }
+
+ function formatWeekday(d) {
+ return locale_weekdays[d.getDay()];
+ }
+
+ function formatShortMonth(d) {
+ return locale_shortMonths[d.getMonth()];
+ }
+
+ function formatMonth(d) {
+ return locale_months[d.getMonth()];
+ }
+
+ function formatPeriod(d) {
+ return locale_periods[+(d.getHours() >= 12)];
+ }
+
+ function formatUTCShortWeekday(d) {
+ return locale_shortWeekdays[d.getUTCDay()];
+ }
+
+ function formatUTCWeekday(d) {
+ return locale_weekdays[d.getUTCDay()];
+ }
+
+ function formatUTCShortMonth(d) {
+ return locale_shortMonths[d.getUTCMonth()];
+ }
+
+ function formatUTCMonth(d) {
+ return locale_months[d.getUTCMonth()];
+ }
+
+ function formatUTCPeriod(d) {
+ return locale_periods[+(d.getUTCHours() >= 12)];
+ }
+
+ return {
+ format: function(specifier) {
+ var f = newFormat(specifier += "", formats);
+ f.toString = function() { return specifier; };
+ return f;
+ },
+ parse: function(specifier) {
+ var p = newParse(specifier += "", localDate);
+ p.toString = function() { return specifier; };
+ return p;
+ },
+ utcFormat: function(specifier) {
+ var f = newFormat(specifier += "", utcFormats);
+ f.toString = function() { return specifier; };
+ return f;
+ },
+ utcParse: function(specifier) {
+ var p = newParse(specifier, utcDate);
+ p.toString = function() { return specifier; };
+ return p;
+ }
+ };
+}
+
+var pads = {"-": "", "_": " ", "0": "0"},
+ numberRe = /^\s*\d+/, // note: ignores next directive
+ percentRe = /^%/,
+ requoteRe = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
+
+function pad(value, fill, width) {
+ var sign = value < 0 ? "-" : "",
+ string = (sign ? -value : value) + "",
+ length = string.length;
+ return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);
+}
+
+function requote(s) {
+ return s.replace(requoteRe, "\\$&");
+}
+
+function formatRe(names) {
+ return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i");
+}
+
+function formatLookup(names) {
+ var map = {}, i = -1, n = names.length;
+ while (++i < n) map[names[i].toLowerCase()] = i;
+ return map;
+}
+
+function parseWeekdayNumber(d, string, i) {
+ var n = numberRe.exec(string.slice(i, i + 1));
+ return n ? (d.w = +n[0], i + n[0].length) : -1;
+}
+
+function parseWeekNumberSunday(d, string, i) {
+ var n = numberRe.exec(string.slice(i));
+ return n ? (d.U = +n[0], i + n[0].length) : -1;
+}
+
+function parseWeekNumberMonday(d, string, i) {
+ var n = numberRe.exec(string.slice(i));
+ return n ? (d.W = +n[0], i + n[0].length) : -1;
+}
+
+function parseFullYear(d, string, i) {
+ var n = numberRe.exec(string.slice(i, i + 4));
+ return n ? (d.y = +n[0], i + n[0].length) : -1;
+}
+
+function parseYear(d, string, i) {
+ var n = numberRe.exec(string.slice(i, i + 2));
+ return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;
+}
+
+function parseZone(d, string, i) {
+ var n = /^(Z)|([+-]\d\d)(?:\:?(\d\d))?/.exec(string.slice(i, i + 6));
+ return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1;
+}
+
+function parseMonthNumber(d, string, i) {
+ var n = numberRe.exec(string.slice(i, i + 2));
+ return n ? (d.m = n[0] - 1, i + n[0].length) : -1;
+}
+
+function parseDayOfMonth(d, string, i) {
+ var n = numberRe.exec(string.slice(i, i + 2));
+ return n ? (d.d = +n[0], i + n[0].length) : -1;
+}
+
+function parseDayOfYear(d, string, i) {
+ var n = numberRe.exec(string.slice(i, i + 3));
+ return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;
+}
+
+function parseHour24(d, string, i) {
+ var n = numberRe.exec(string.slice(i, i + 2));
+ return n ? (d.H = +n[0], i + n[0].length) : -1;
+}
+
+function parseMinutes(d, string, i) {
+ var n = numberRe.exec(string.slice(i, i + 2));
+ return n ? (d.M = +n[0], i + n[0].length) : -1;
+}
+
+function parseSeconds(d, string, i) {
+ var n = numberRe.exec(string.slice(i, i + 2));
+ return n ? (d.S = +n[0], i + n[0].length) : -1;
+}
+
+function parseMilliseconds(d, string, i) {
+ var n = numberRe.exec(string.slice(i, i + 3));
+ return n ? (d.L = +n[0], i + n[0].length) : -1;
+}
+
+function parseLiteralPercent(d, string, i) {
+ var n = percentRe.exec(string.slice(i, i + 1));
+ return n ? i + n[0].length : -1;
+}
+
+function formatDayOfMonth(d, p) {
+ return pad(d.getDate(), p, 2);
+}
+
+function formatHour24(d, p) {
+ return pad(d.getHours(), p, 2);
+}
+
+function formatHour12(d, p) {
+ return pad(d.getHours() % 12 || 12, p, 2);
+}
+
+function formatDayOfYear(d, p) {
+ return pad(1 + __WEBPACK_IMPORTED_MODULE_0_d3_time__["i" /* timeDay */].count(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_time__["j" /* timeYear */])(d), d), p, 3);
+}
+
+function formatMilliseconds(d, p) {
+ return pad(d.getMilliseconds(), p, 3);
+}
+
+function formatMonthNumber(d, p) {
+ return pad(d.getMonth() + 1, p, 2);
+}
+
+function formatMinutes(d, p) {
+ return pad(d.getMinutes(), p, 2);
+}
+
+function formatSeconds(d, p) {
+ return pad(d.getSeconds(), p, 2);
+}
+
+function formatWeekNumberSunday(d, p) {
+ return pad(__WEBPACK_IMPORTED_MODULE_0_d3_time__["k" /* timeSunday */].count(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_time__["j" /* timeYear */])(d), d), p, 2);
+}
+
+function formatWeekdayNumber(d) {
+ return d.getDay();
+}
+
+function formatWeekNumberMonday(d, p) {
+ return pad(__WEBPACK_IMPORTED_MODULE_0_d3_time__["l" /* timeMonday */].count(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_time__["j" /* timeYear */])(d), d), p, 2);
+}
+
+function formatYear(d, p) {
+ return pad(d.getFullYear() % 100, p, 2);
+}
+
+function formatFullYear(d, p) {
+ return pad(d.getFullYear() % 10000, p, 4);
+}
+
+function formatZone(d) {
+ var z = d.getTimezoneOffset();
+ return (z > 0 ? "-" : (z *= -1, "+"))
+ + pad(z / 60 | 0, "0", 2)
+ + pad(z % 60, "0", 2);
+}
+
+function formatUTCDayOfMonth(d, p) {
+ return pad(d.getUTCDate(), p, 2);
+}
+
+function formatUTCHour24(d, p) {
+ return pad(d.getUTCHours(), p, 2);
+}
+
+function formatUTCHour12(d, p) {
+ return pad(d.getUTCHours() % 12 || 12, p, 2);
+}
+
+function formatUTCDayOfYear(d, p) {
+ return pad(1 + __WEBPACK_IMPORTED_MODULE_0_d3_time__["d" /* utcDay */].count(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_time__["a" /* utcYear */])(d), d), p, 3);
+}
+
+function formatUTCMilliseconds(d, p) {
+ return pad(d.getUTCMilliseconds(), p, 3);
+}
+
+function formatUTCMonthNumber(d, p) {
+ return pad(d.getUTCMonth() + 1, p, 2);
+}
+
+function formatUTCMinutes(d, p) {
+ return pad(d.getUTCMinutes(), p, 2);
+}
+
+function formatUTCSeconds(d, p) {
+ return pad(d.getUTCSeconds(), p, 2);
+}
+
+function formatUTCWeekNumberSunday(d, p) {
+ return pad(__WEBPACK_IMPORTED_MODULE_0_d3_time__["m" /* utcSunday */].count(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_time__["a" /* utcYear */])(d), d), p, 2);
+}
+
+function formatUTCWeekdayNumber(d) {
+ return d.getUTCDay();
+}
+
+function formatUTCWeekNumberMonday(d, p) {
+ return pad(__WEBPACK_IMPORTED_MODULE_0_d3_time__["n" /* utcMonday */].count(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_time__["a" /* utcYear */])(d), d), p, 2);
+}
+
+function formatUTCYear(d, p) {
+ return pad(d.getUTCFullYear() % 100, p, 2);
+}
+
+function formatUTCFullYear(d, p) {
+ return pad(d.getUTCFullYear() % 10000, p, 4);
+}
+
+function formatUTCZone() {
+ return "+0000";
+}
+
+function formatLiteralPercent() {
+ return "%";
+}
+
+
+/***/ }),
+/* 99 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_timer__ = __webpack_require__(53);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return __WEBPACK_IMPORTED_MODULE_0__src_timer__["c"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __WEBPACK_IMPORTED_MODULE_0__src_timer__["a"]; });
+/* unused harmony reexport timerFlush */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_timeout__ = __webpack_require__(281);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_1__src_timeout__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_interval__ = __webpack_require__(280);
+/* unused harmony reexport interval */
+
+
+
+
+
+
+
+/***/ }),
+/* 100 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__transition_schedule__ = __webpack_require__(5);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(node, name) {
+ var schedules = node.__transition,
+ schedule,
+ active,
+ empty = true,
+ i;
+
+ if (!schedules) return;
+
+ name = name == null ? null : name + "";
+
+ for (i in schedules) {
+ if ((schedule = schedules[i]).name !== name) { empty = false; continue; }
+ active = schedule.state > __WEBPACK_IMPORTED_MODULE_0__transition_schedule__["a" /* STARTING */] && schedule.state < __WEBPACK_IMPORTED_MODULE_0__transition_schedule__["b" /* ENDING */];
+ schedule.state = __WEBPACK_IMPORTED_MODULE_0__transition_schedule__["c" /* ENDED */];
+ schedule.timer.stop();
+ if (active) schedule.on.call("interrupt", node, node.__data__, schedule.index, schedule.group);
+ delete schedules[i];
+ }
+
+ if (empty) delete node.__transition;
+};
+
+
+/***/ }),
+/* 101 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_color__ = __webpack_require__(6);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_d3_interpolate__ = __webpack_require__(3);
+
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(a, b) {
+ var c;
+ return (typeof b === "number" ? __WEBPACK_IMPORTED_MODULE_1_d3_interpolate__["interpolateNumber"]
+ : b instanceof __WEBPACK_IMPORTED_MODULE_0_d3_color__["a" /* color */] ? __WEBPACK_IMPORTED_MODULE_1_d3_interpolate__["interpolateRgb"]
+ : (c = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["a" /* color */])(b)) ? (b = c, __WEBPACK_IMPORTED_MODULE_1_d3_interpolate__["interpolateRgb"])
+ : __WEBPACK_IMPORTED_MODULE_1_d3_interpolate__["interpolateString"])(a, b);
+};
+
+
+/***/ }),
+/* 102 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (immutable) */ __webpack_exports__["c"] = Transform;
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return identity; });
+/* harmony export (immutable) */ __webpack_exports__["a"] = transform;
+function Transform(k, x, y) {
+ this.k = k;
+ this.x = x;
+ this.y = y;
+}
+
+Transform.prototype = {
+ constructor: Transform,
+ scale: function(k) {
+ return k === 1 ? this : new Transform(this.k * k, this.x, this.y);
+ },
+ translate: function(x, y) {
+ return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);
+ },
+ apply: function(point) {
+ return [point[0] * this.k + this.x, point[1] * this.k + this.y];
+ },
+ applyX: function(x) {
+ return x * this.k + this.x;
+ },
+ applyY: function(y) {
+ return y * this.k + this.y;
+ },
+ invert: function(location) {
+ return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];
+ },
+ invertX: function(x) {
+ return (x - this.x) / this.k;
+ },
+ invertY: function(y) {
+ return (y - this.y) / this.k;
+ },
+ rescaleX: function(x) {
+ return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));
+ },
+ rescaleY: function(y) {
+ return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));
+ },
+ toString: function() {
+ return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")";
+ }
+};
+
+var identity = new Transform(1, 0, 0);
+
+transform.prototype = Transform.prototype;
+
+function transform(node) {
+ return node.__zoom || identity;
+}
+
+
+/***/ }),
+/* 103 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_lineage_plot_base_lineage_plot_js__ = __webpack_require__(28);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__base_lineage_plot_base_lineage_plot_default_layout_js__ = __webpack_require__(27);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__shared_features_js__ = __webpack_require__(12);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_angular__ = __webpack_require__(9);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_angular__);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__lineage_plot_css__ = __webpack_require__(310);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__lineage_plot_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4__lineage_plot_css__);
+
+
+
+
+
+
+
+let d3 = Object.assign({},
+ __webpack_require__(10),
+ __webpack_require__(1),
+ __webpack_require__(16)
+);
+
+let lineageLayout = {
+ axis: {
+ x: {
+ title: null,
+ showAxisLine: false,
+ showGrid: true,
+ showTickText: true
+ }
+ },
+ brush: {
+ axis: {
+ x: {
+ title: null,
+ showAxisLine: false,
+ showGrid: true,
+ showTickText: true
+ }
+ }
+ }
+};
+
+
+class LineagePlotController extends __WEBPACK_IMPORTED_MODULE_0__base_lineage_plot_base_lineage_plot_js__["a" /* default */] {
+ constructor ($element, $window, $scope, $attrs) {
+ super($element, $window, $scope, $attrs);
+ $element.addClass('ancestry-lineage-plot');
+ }
+
+ static getLayoutTemplate() {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__shared_features_js__["a" /* mergeTemplateLayout */])(lineageLayout, __WEBPACK_IMPORTED_MODULE_1__base_lineage_plot_base_lineage_plot_default_layout_js__["a" /* default */]);
+ }
+
+ linkGenerator(d) {
+ let c = Math.abs(d.parent.x - d.x) / 2;
+
+ return 'M' + d.x + ',' + d.y
+ + 'C' + (d.parent.x + c) + ',' + d.y
+ + ' ' + (d.parent.x + c) + ',' + d.parent.y
+ + ' ' + d.parent.x + ',' + d.parent.y;
+ }
+
+ setupScales() {
+ this.xExtent = d3.extent(this.nodes, node => this.isTimePlot ? new Date(node.data.date * 1000) : node.depth);
+
+ this.xScale = (this.isTimePlot ? d3.scaleTime() : d3.scaleLinear())
+ .domain(this.xExtent)
+ .range([0, this.plotWidth]);
+
+ this.yScale = d3.scaleLinear()
+ .domain([0, this.plotHeight])
+ .range([0, this.plotHeight]);
+ }
+
+ drawMainAxes() {
+ this.drawAxis(this.treeFixedContainer, 'x-main', this.xScale, this.plotHeight, true, this.isTimePlot);
+ }
+
+ drawBrushAxes() {
+ this.drawAxis(this.brushFixedContainer, 'x-brush', this.brushContext.xScale, this.brushContext.plotHeight, true,
+ this.isTimePlot);
+ }
+
+ prepareNodes(data, context) {
+ let root = {name: 'virtualRoot', children: [], parent: null};
+
+ let allTrees = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__shared_features_js__["v" /* createTreeLayout */])(data);
+
+ root.children = allTrees.map(node => {
+ node.parent = 'virtualRoot';
+ return node;
+ });
+
+ let hierarchy = d3.hierarchy(root, d => d.children);
+
+ if (context.isTimePlot) {
+ (function calcTotalChildren(node) {
+ node.totalChildren = 0;
+ if (!node.children || node.children.length == 0) {
+ return 1;
+ }
+ for (let child of node.children) {
+ node.totalChildren += calcTotalChildren(child);
+ }
+ return node.totalChildren;
+ })(hierarchy);
+
+ hierarchy.each(node => {
+ let oldChildren = node.children;
+ if (!oldChildren || oldChildren.length == 0) {
+ return;
+ }
+ let newChildren = [];
+ oldChildren.sort((a, b) => (a.totalChildren - b.totalChildren) || (b.data.date - a.data.date));
+ while (oldChildren.length) {
+ newChildren[oldChildren.length % 2 === 0 ? 'push' : 'unshift'](oldChildren.shift());
+ }
+ node.children = newChildren;
+ });
+ }
+
+ let treeLayout = d3.tree().size([context.plotHeight, context.plotWidth]),
+ nodes = treeLayout(hierarchy).descendants().filter(n => n.parent !== null);
+
+ for (let node of nodes) {
+ node._y = node.x;
+ node._x = context.isTimePlot ? new Date(node.data.date * 1000) : node.depth;
+ if (node.parent.data.name === 'virtualRoot') {
+ node.parent = null;
+ }
+ }
+
+ return nodes.filter(node => node.data.name !== 'virtualRoot');
+ }
+}
+
+const LineagePlotComponent = {
+ template: '',
+ controller: LineagePlotController,
+ bindings: {
+ plotData: '<',
+ plotLayout: '<',
+ nodesSelection: '&',
+ nodeClick: '&',
+ customNode: '&'
+ }
+};
+
+/* unused harmony default export */ var _unused_webpack_default_export = __WEBPACK_IMPORTED_MODULE_3_angular___default.a.module('ancestry.lineage', [])
+ .component('lineagePlot', LineagePlotComponent);
+
+
+/***/ }),
+/* 104 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_lineage_plot_base_lineage_plot_js__ = __webpack_require__(28);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__base_lineage_plot_base_lineage_plot_default_layout_js__ = __webpack_require__(27);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__shared_features_js__ = __webpack_require__(12);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__lineage_scatter_plot_css__ = __webpack_require__(311);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__lineage_scatter_plot_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3__lineage_scatter_plot_css__);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_angular__ = __webpack_require__(9);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_angular__);
+
+
+
+
+
+
+
+let d3 = Object.assign({},
+ __webpack_require__(10),
+ __webpack_require__(1),
+ __webpack_require__(16)
+);
+
+let lineageScatterLayout = {
+ showLinkArrowhead: true,
+ link: {
+ 'stroke-dasharray': 4
+ },
+ axis: {
+ x: {
+ title: null,
+ format: 'g',
+ showAxisLine: true,
+ showGrid: true,
+ showTickText: true
+ },
+ y: {
+ title: null,
+ format: 'g',
+ showAxisLine: true,
+ showGrid: true,
+ showTickText: true
+ }
+ },
+ brush: {
+ axis: {
+ x: {
+ title: null,
+ format: 'g',
+ showAxisLine: false,
+ showGrid: true,
+ showTickText: true
+ },
+ y: {
+ title: null,
+ format: 'g',
+ showAxisLine: false,
+ showGrid: true,
+ showTickText: true
+ }
+ }
+ }
+};
+
+
+class LineageScatterPlotController extends __WEBPACK_IMPORTED_MODULE_0__base_lineage_plot_base_lineage_plot_js__["a" /* default */] {
+ constructor ($element, $window, $scope, $attrs) {
+ super($element, $window, $scope, $attrs);
+ $element.addClass('ancestry-lineage-scatter-plot');
+ }
+
+ static getLayoutTemplate() {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__shared_features_js__["a" /* mergeTemplateLayout */])(lineageScatterLayout, __WEBPACK_IMPORTED_MODULE_1__base_lineage_plot_base_lineage_plot_default_layout_js__["a" /* default */]);
+ }
+
+ linkGenerator(d) {
+ return `M ${d.parent.x} ${d.parent.y} L ${d.x} ${d.y}`;
+ }
+
+ setupScales() {
+ this.xExtent = d3.extent(this.nodes, node => node._x);
+
+ this.xScale = (this.isTimePlot ? d3.scaleTime() : d3.scaleLinear())
+ .domain(this.xExtent)
+ .range([0, this.plotWidth]);
+
+ this.yScale = d3.scaleLinear()
+ .domain(d3.extent(this.nodes, node => node._y).reverse())
+ .range([0, this.plotHeight]);
+ }
+
+ drawMainAxes() {
+ this.drawAxis(this.treeFixedContainer, 'x-main', this.xScale, this.plotHeight);
+ this.drawAxis(this.treeFixedContainer, 'y-main', this.yScale, this.plotWidth);
+ }
+
+ drawBrushAxes() {
+ this.drawAxis(this.brushFixedContainer, 'x-brush', this.brushContext.xScale, this.brushContext.plotHeight);
+ this.drawAxis(this.brushFixedContainer, 'y-brush', this.brushContext.yScale, this.brushContext.plotWidth);
+ }
+
+ prepareNodes(data) {
+ let root = {name: 'virtualRoot', children: [], parent: null};
+
+ let allTrees = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__shared_features_js__["v" /* createTreeLayout */])(data);
+
+ root.children = allTrees.map(node => {
+ node.parent = 'virtualRoot';
+ return node;
+ });
+
+ let hierarchy = d3.hierarchy(root, d => d.children),
+ nodes = hierarchy.descendants().filter(n => n.parent !== null);
+
+ for (let node of nodes) {
+ node._y = node.data.y;
+ node._x = node.data.x;
+ if (node.parent.data.name === 'virtualRoot') {
+ node.parent = null;
+ }
+ }
+
+ return nodes.filter(node => node.data.name !== 'virtualRoot');
+ }
+}
+
+const LineageScatterPlotComponent = {
+ template: '',
+ controller: LineageScatterPlotController,
+ bindings: {
+ plotData: '<',
+ plotLayout: '<',
+ nodesSelection: '&',
+ nodeClick: '&',
+ customNode: '&'
+ }
+};
+
+/* unused harmony default export */ var _unused_webpack_default_export = __WEBPACK_IMPORTED_MODULE_4_angular___default.a.module('ancestry.lineage-scatter', [])
+ .component('lineageScatterPlot', LineageScatterPlotComponent);
+
+
+
+
+
+
+
+/***/ }),
+/* 105 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_radial_lineage_plot_base_radial_lineage_plot_js__ = __webpack_require__(55);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__shared_features_js__ = __webpack_require__(12);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_angular__ = __webpack_require__(9);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_angular__);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__radial_lineage_plot_css__ = __webpack_require__(312);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__radial_lineage_plot_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3__radial_lineage_plot_css__);
+
+
+
+
+
+
+let d3 = Object.assign({},
+ __webpack_require__(0),
+ __webpack_require__(10),
+ __webpack_require__(1),
+ __webpack_require__(16),
+ __webpack_require__(54)
+);
+
+d3.getEvent = () => __webpack_require__(0).event;
+
+let radialLineageLayout = {
+ sameLevel: 'both' // 'roots', 'leaves' or 'both'
+};
+
+
+class RadialLineagePlotController extends __WEBPACK_IMPORTED_MODULE_0__base_radial_lineage_plot_base_radial_lineage_plot_js__["a" /* default */] {
+ constructor ($element, $window, $scope, $attrs) {
+ super($element, $window, $scope, $attrs);
+ $element.addClass('ancestry-lineage-plot');
+ }
+
+ static getLayoutTemplate() {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared_features_js__["a" /* mergeTemplateLayout */])(radialLineageLayout, __WEBPACK_IMPORTED_MODULE_0__base_radial_lineage_plot_base_radial_lineage_plot_js__["a" /* default */].getLayoutTemplate());
+ }
+
+ prepareNodes(data, context) {
+ let root = {name: 'virtualRoot', children: [], parent: null};
+
+ let allTrees = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared_features_js__["v" /* createTreeLayout */])(data),
+ multipleTreeOffset = allTrees.length == 1 ? 0 : 30;
+
+ root.children = allTrees.map(node => {
+ node.parent = 'virtualRoot';
+ return node;
+ });
+
+ let r = Math.min(context.plotHeight, context.plotWidth) / 2,
+ totalTreeLength = r - multipleTreeOffset - Math.max(...Object.values(context.layout.plotPadding));
+
+ let hierarchy = d3.hierarchy(root, d => d.children).sort((a,b) => b.depth - a.depth),
+ treeLayout = (context.layout.sameLevel == 'roots' ? d3.tree : d3.cluster)().size([360, 1]),
+ nodes = treeLayout(hierarchy).descendants().filter(n => n.parent !== null);
+
+ for (let child of hierarchy.children) {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared_features_js__["b" /* spreadNodes */])(child);
+ }
+
+ for (let node of nodes) {
+ node._theta = node.x;
+ node._lastTheta = node.x;
+ node._r = multipleTreeOffset + (context.layout.sameLevel == 'both' ? node.depth : node.y) * totalTreeLength;
+ [node._x, node._y] = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared_features_js__["c" /* project */])(node);
+ // below is hack to calculate curvature of brush links correctly
+ node._r2 = context.xScale ? Math.sqrt(Math.pow(context.xScale(context.plotOrigin[0] + node._x) -
+ context.xScale(context.plotOrigin[0]), 2) + Math.pow(context.yScale(context.plotOrigin[1] + node._y)
+ - context.yScale(context.plotOrigin[1]), 2)) : node._r;
+ node._m = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared_features_js__["c" /* project */])({_theta: node._theta, _r: node.parent._r});
+ if (node.parent.data.name === 'virtualRoot') {
+ node.parent = null;
+ }
+ }
+
+ return nodes.filter(node => node.data.name !== 'virtualRoot');
+ }
+}
+
+const RadialLineagePlotComponent = {
+ template: '',
+ controller: RadialLineagePlotController,
+ bindings: {
+ plotData: '<',
+ plotLayout: '<',
+ nodesSelection: '&',
+ nodeClick: '&',
+ customNode: '&'
+ }
+};
+
+/* unused harmony default export */ var _unused_webpack_default_export = __WEBPACK_IMPORTED_MODULE_2_angular___default.a.module('ancestry.radial-lineage', [])
+ .component('radialLineagePlot', RadialLineagePlotComponent);
+
+/***/ }),
+/* 106 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_radial_lineage_plot_base_radial_lineage_plot_js__ = __webpack_require__(55);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__shared_features_js__ = __webpack_require__(12);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_angular__ = __webpack_require__(9);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_angular__);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__radial_phylogenetic_tree_css__ = __webpack_require__(313);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__radial_phylogenetic_tree_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3__radial_phylogenetic_tree_css__);
+
+
+
+
+
+
+let d3 = Object.assign({},
+ __webpack_require__(0),
+ __webpack_require__(10),
+ __webpack_require__(1),
+ __webpack_require__(16),
+ __webpack_require__(54)
+);
+
+d3.getEvent = () => __webpack_require__(0).event;
+
+let radialPhylogeneticTreeLayout = {
+ showBranchLength: true
+};
+
+class RadialPhylogeneticTreeController extends __WEBPACK_IMPORTED_MODULE_0__base_radial_lineage_plot_base_radial_lineage_plot_js__["a" /* default */] {
+ constructor ($element, $window, $scope, $attrs) {
+ super($element, $window, $scope, $attrs);
+ $element.addClass('ancestry-radial-lineage-plot');
+ this.flatInput = false;
+ }
+
+ static getLayoutTemplate() {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared_features_js__["a" /* mergeTemplateLayout */])(radialPhylogeneticTreeLayout, __WEBPACK_IMPORTED_MODULE_0__base_radial_lineage_plot_base_radial_lineage_plot_js__["a" /* default */].getLayoutTemplate());
+ }
+
+ prepareNodes(data, context) {
+ let root = {name: 'virtualRoot', parent: null, children: data};
+
+ let multipleTreeOffset = data.length == 1 ? 0 : 30;
+
+ let r = Math.min(context.plotHeight, context.plotWidth) / 2,
+ totalTreeLength = r - multipleTreeOffset - Math.max(...Object.values(context.layout.plotPadding));
+
+ removeNegativeLengths(root);
+ setRadius(root, root.length = 0, totalTreeLength / maxLength(root));
+
+ function setRadius(d, y0, k) {
+ d.radius = (y0 += d.length) * k + multipleTreeOffset;
+ if (d.children && d.children.length > 0) d.children.forEach(d => setRadius(d, y0, k));
+ }
+
+ function removeNegativeLengths(d) {
+ if (d.length < 0) d.length = 0;
+ if (d.children && d.children.length > 0) d.children.forEach(removeNegativeLengths);
+ }
+
+ function maxLength(d) {
+ return d.length + (d.children && d.children.length > 0 ? d3.max(d.children, maxLength) : 0);
+ }
+
+ let hierarchy = d3.hierarchy(root, d => d.children).sort((a,b) => b.depth - a.depth),
+ treeLayout = d3.cluster().size([360, 1]).separation(() => 1),
+ nodes = treeLayout(hierarchy).descendants().filter(n => n.parent !== null);
+
+ for (let child of hierarchy.children) {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared_features_js__["b" /* spreadNodes */])(child);
+ }
+
+ for (let node of nodes) {
+ node._r = this.layout.showBranchLength ? node.data.radius
+ : multipleTreeOffset + node.depth * totalTreeLength;
+ node.data = node.data.taxon || {hide: true};
+ node._theta = node.x;
+ node._lastTheta = node.x;
+ [node._x, node._y] = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared_features_js__["c" /* project */])(node);
+ // below is hack to calculate curvature of brush links correctly
+ node._r2 = context.xScale ? Math.sqrt(Math.pow(context.xScale(context.plotOrigin[0] + node._x) -
+ context.xScale(context.plotOrigin[0]), 2) + Math.pow(context.yScale(context.plotOrigin[1] + node._y)
+ - context.yScale(context.plotOrigin[1]), 2)) : node._r;
+ node._m = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__shared_features_js__["c" /* project */])({_theta: node._theta, _r: node.parent._r});
+ if (node.parent.data.name === 'virtualRoot') {
+ node.parent = null;
+ }
+ }
+
+ return nodes.filter(node => node.data.name !== 'virtualRoot');
+ }
+
+ static filterSeries(trees, activeSeries) {
+ let newTrees = [];
+ for (let tree of trees) {
+ let leaves = [];
+ (function findLeaves(t) {
+ if (t.taxon !== null) {
+ leaves.push(t);
+ return;
+ }
+ findLeaves(t.children[0]);
+ findLeaves(t.children[1]);
+ })(tree);
+ (function addParents(t, parent) {
+ if (parent) {
+ t.parent = parent;
+ }
+ if (t.taxon !== null) {
+ return;
+ }
+ addParents(t.children[0], t);
+ addParents(t.children[1], t);
+ })(tree, null);
+ let leavesOut = leaves.filter(l => !activeSeries.has(l.taxon.series));
+
+ for (let leaf of leavesOut) {
+ let parent = leaf.parent;
+ if (!parent && leaf.taxon) {
+ return null;
+ }
+ let sibling = parent.children[parent.children.indexOf(leaf) ^ 1];
+ let parent2 = parent.parent;
+ if (!parent2) {
+ sibling.parent = null;
+ tree = sibling;
+ continue;
+ }
+ parent2.children[parent2.children.indexOf(parent)] = sibling;
+ sibling.length += parent.length;
+ sibling.parent = parent2;
+ }
+ if (tree.children) newTrees.push(tree);
+ }
+ return newTrees;
+ }
+}
+
+const RadialPhylogeneticTreeComponent = {
+ template: '',
+ controller: RadialPhylogeneticTreeController,
+ bindings: {
+ plotData: '<',
+ plotLayout: '<',
+ nodesSelection: '&',
+ nodeClick: '&',
+ customNode: '&'
+ }
+};
+
+/* unused harmony default export */ var _unused_webpack_default_export = __WEBPACK_IMPORTED_MODULE_2_angular___default.a.module('ancestry.radial-phylogenetic-tree', [])
+ .component('radialPhylogeneticTree', RadialPhylogeneticTreeComponent);
+
+
+/***/ }),
+/* 107 */
+/***/ (function(module, exports) {
+
+// removed by extract-text-webpack-plugin
+
+/***/ }),
+/* 108 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(x) {
+ return function() {
+ return x;
+ };
+};
+
+
+/***/ }),
+/* 109 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__pairs__ = __webpack_require__(62);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(values0, values1, reduce) {
+ var n0 = values0.length,
+ n1 = values1.length,
+ values = new Array(n0 * n1),
+ i0,
+ i1,
+ i,
+ value0;
+
+ if (reduce == null) reduce = __WEBPACK_IMPORTED_MODULE_0__pairs__["b" /* pair */];
+
+ for (i0 = i = 0; i0 < n0; ++i0) {
+ for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {
+ values[i] = reduce(value0, values1[i1]);
+ }
+ }
+
+ return values;
+};
+
+
+/***/ }),
+/* 110 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(a, b) {
+ return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
+};
+
+
+/***/ }),
+/* 111 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__array__ = __webpack_require__(56);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__bisect__ = __webpack_require__(57);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constant__ = __webpack_require__(108);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__extent__ = __webpack_require__(60);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__identity__ = __webpack_require__(112);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__range__ = __webpack_require__(63);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__ticks__ = __webpack_require__(65);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__threshold_sturges__ = __webpack_require__(64);
+
+
+
+
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var value = __WEBPACK_IMPORTED_MODULE_4__identity__["a" /* default */],
+ domain = __WEBPACK_IMPORTED_MODULE_3__extent__["a" /* default */],
+ threshold = __WEBPACK_IMPORTED_MODULE_7__threshold_sturges__["a" /* default */];
+
+ function histogram(data) {
+ var i,
+ n = data.length,
+ x,
+ values = new Array(n);
+
+ for (i = 0; i < n; ++i) {
+ values[i] = value(data[i], i, data);
+ }
+
+ var xz = domain(values),
+ x0 = xz[0],
+ x1 = xz[1],
+ tz = threshold(values, x0, x1);
+
+ // Convert number of thresholds into uniform thresholds.
+ if (!Array.isArray(tz)) {
+ tz = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__ticks__["c" /* tickStep */])(x0, x1, tz);
+ tz = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__range__["a" /* default */])(Math.ceil(x0 / tz) * tz, Math.floor(x1 / tz) * tz, tz); // exclusive
+ }
+
+ // Remove any thresholds outside the domain.
+ var m = tz.length;
+ while (tz[0] <= x0) tz.shift(), --m;
+ while (tz[m - 1] > x1) tz.pop(), --m;
+
+ var bins = new Array(m + 1),
+ bin;
+
+ // Initialize bins.
+ for (i = 0; i <= m; ++i) {
+ bin = bins[i] = [];
+ bin.x0 = i > 0 ? tz[i - 1] : x0;
+ bin.x1 = i < m ? tz[i] : x1;
+ }
+
+ // Assign data to bins by value, ignoring any outside the domain.
+ for (i = 0; i < n; ++i) {
+ x = values[i];
+ if (x0 <= x && x <= x1) {
+ bins[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__bisect__["a" /* default */])(tz, x, 0, m)].push(data[i]);
+ }
+ }
+
+ return bins;
+ }
+
+ histogram.value = function(_) {
+ return arguments.length ? (value = typeof _ === "function" ? _ : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__constant__["a" /* default */])(_), histogram) : value;
+ };
+
+ histogram.domain = function(_) {
+ return arguments.length ? (domain = typeof _ === "function" ? _ : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__constant__["a" /* default */])([_[0], _[1]]), histogram) : domain;
+ };
+
+ histogram.thresholds = function(_) {
+ return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__constant__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_0__array__["b" /* slice */].call(_)) : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__constant__["a" /* default */])(_), histogram) : threshold;
+ };
+
+ return histogram;
+};
+
+
+/***/ }),
+/* 112 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(x) {
+ return x;
+};
+
+
+/***/ }),
+/* 113 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(values, valueof) {
+ var n = values.length,
+ i = -1,
+ value,
+ max;
+
+ if (valueof == null) {
+ while (++i < n) { // Find the first comparable value.
+ if ((value = values[i]) != null && value >= value) {
+ max = value;
+ while (++i < n) { // Compare the remaining values.
+ if ((value = values[i]) != null && value > max) {
+ max = value;
+ }
+ }
+ }
+ }
+ }
+
+ else {
+ while (++i < n) { // Find the first comparable value.
+ if ((value = valueof(values[i], i, values)) != null && value >= value) {
+ max = value;
+ while (++i < n) { // Compare the remaining values.
+ if ((value = valueof(values[i], i, values)) != null && value > max) {
+ max = value;
+ }
+ }
+ }
+ }
+ }
+
+ return max;
+};
+
+
+/***/ }),
+/* 114 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__number__ = __webpack_require__(14);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(values, valueof) {
+ var n = values.length,
+ m = n,
+ i = -1,
+ value,
+ sum = 0;
+
+ if (valueof == null) {
+ while (++i < n) {
+ if (!isNaN(value = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__number__["a" /* default */])(values[i]))) sum += value;
+ else --m;
+ }
+ }
+
+ else {
+ while (++i < n) {
+ if (!isNaN(value = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__number__["a" /* default */])(valueof(values[i], i, values)))) sum += value;
+ else --m;
+ }
+ }
+
+ if (m) return sum / m;
+};
+
+
+/***/ }),
+/* 115 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ascending__ = __webpack_require__(13);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__number__ = __webpack_require__(14);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__quantile__ = __webpack_require__(29);
+
+
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(values, valueof) {
+ var n = values.length,
+ i = -1,
+ value,
+ numbers = [];
+
+ if (valueof == null) {
+ while (++i < n) {
+ if (!isNaN(value = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__number__["a" /* default */])(values[i]))) {
+ numbers.push(value);
+ }
+ }
+ }
+
+ else {
+ while (++i < n) {
+ if (!isNaN(value = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__number__["a" /* default */])(valueof(values[i], i, values)))) {
+ numbers.push(value);
+ }
+ }
+ }
+
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__quantile__["a" /* default */])(numbers.sort(__WEBPACK_IMPORTED_MODULE_0__ascending__["a" /* default */]), 0.5);
+};
+
+
+/***/ }),
+/* 116 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(arrays) {
+ var n = arrays.length,
+ m,
+ i = -1,
+ j = 0,
+ merged,
+ array;
+
+ while (++i < n) j += arrays[i].length;
+ merged = new Array(j);
+
+ while (--n >= 0) {
+ array = arrays[n];
+ m = array.length;
+ while (--m >= 0) {
+ merged[--j] = array[m];
+ }
+ }
+
+ return merged;
+};
+
+
+/***/ }),
+/* 117 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(array, indexes) {
+ var i = indexes.length, permutes = new Array(i);
+ while (i--) permutes[i] = array[indexes[i]];
+ return permutes;
+};
+
+
+/***/ }),
+/* 118 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ascending__ = __webpack_require__(13);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(values, compare) {
+ if (!(n = values.length)) return;
+ var n,
+ i = 0,
+ j = 0,
+ xi,
+ xj = values[j];
+
+ if (compare == null) compare = __WEBPACK_IMPORTED_MODULE_0__ascending__["a" /* default */];
+
+ while (++i < n) {
+ if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {
+ xj = xi, j = i;
+ }
+ }
+
+ if (compare(xj, xj) === 0) return j;
+};
+
+
+/***/ }),
+/* 119 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(array, i0, i1) {
+ var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),
+ t,
+ i;
+
+ while (m) {
+ i = Math.random() * m-- | 0;
+ t = array[m + i0];
+ array[m + i0] = array[i + i0];
+ array[i + i0] = t;
+ }
+
+ return array;
+};
+
+
+/***/ }),
+/* 120 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(values, valueof) {
+ var n = values.length,
+ i = -1,
+ value,
+ sum = 0;
+
+ if (valueof == null) {
+ while (++i < n) {
+ if (value = +values[i]) sum += value; // Note: zero and null are equivalent.
+ }
+ }
+
+ else {
+ while (++i < n) {
+ if (value = +valueof(values[i], i, values)) sum += value;
+ }
+ }
+
+ return sum;
+};
+
+
+/***/ }),
+/* 121 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__array__ = __webpack_require__(56);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ascending__ = __webpack_require__(13);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__number__ = __webpack_require__(14);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__quantile__ = __webpack_require__(29);
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(values, min, max) {
+ values = __WEBPACK_IMPORTED_MODULE_0__array__["a" /* map */].call(values, __WEBPACK_IMPORTED_MODULE_2__number__["a" /* default */]).sort(__WEBPACK_IMPORTED_MODULE_1__ascending__["a" /* default */]);
+ return Math.ceil((max - min) / (2 * (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__quantile__["a" /* default */])(values, 0.75) - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__quantile__["a" /* default */])(values, 0.25)) * Math.pow(values.length, -1 / 3)));
+};
+
+
+/***/ }),
+/* 122 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__deviation__ = __webpack_require__(59);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(values, min, max) {
+ return Math.ceil((max - min) / (3.5 * __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__deviation__["a" /* default */])(values) * Math.pow(values.length, -1 / 3)));
+};
+
+
+/***/ }),
+/* 123 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__transpose__ = __webpack_require__(66);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__transpose__["a" /* default */])(arguments);
+};
+
+
+/***/ }),
+/* 124 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return slice; });
+var slice = Array.prototype.slice;
+
+
+/***/ }),
+/* 125 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__array__ = __webpack_require__(124);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__identity__ = __webpack_require__(126);
+/* harmony export (immutable) */ __webpack_exports__["a"] = axisTop;
+/* harmony export (immutable) */ __webpack_exports__["b"] = axisRight;
+/* harmony export (immutable) */ __webpack_exports__["c"] = axisBottom;
+/* harmony export (immutable) */ __webpack_exports__["d"] = axisLeft;
+
+
+
+var top = 1,
+ right = 2,
+ bottom = 3,
+ left = 4,
+ epsilon = 1e-6;
+
+function translateX(x) {
+ return "translate(" + (x + 0.5) + ",0)";
+}
+
+function translateY(y) {
+ return "translate(0," + (y + 0.5) + ")";
+}
+
+function number(scale) {
+ return function(d) {
+ return +scale(d);
+ };
+}
+
+function center(scale) {
+ var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.
+ if (scale.round()) offset = Math.round(offset);
+ return function(d) {
+ return +scale(d) + offset;
+ };
+}
+
+function entering() {
+ return !this.__axis;
+}
+
+function axis(orient, scale) {
+ var tickArguments = [],
+ tickValues = null,
+ tickFormat = null,
+ tickSizeInner = 6,
+ tickSizeOuter = 6,
+ tickPadding = 3,
+ k = orient === top || orient === left ? -1 : 1,
+ x = orient === left || orient === right ? "x" : "y",
+ transform = orient === top || orient === bottom ? translateX : translateY;
+
+ function axis(context) {
+ var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,
+ format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : __WEBPACK_IMPORTED_MODULE_1__identity__["a" /* default */]) : tickFormat,
+ spacing = Math.max(tickSizeInner, 0) + tickPadding,
+ range = scale.range(),
+ range0 = +range[0] + 0.5,
+ range1 = +range[range.length - 1] + 0.5,
+ position = (scale.bandwidth ? center : number)(scale.copy()),
+ selection = context.selection ? context.selection() : context,
+ path = selection.selectAll(".domain").data([null]),
+ tick = selection.selectAll(".tick").data(values, scale).order(),
+ tickExit = tick.exit(),
+ tickEnter = tick.enter().append("g").attr("class", "tick"),
+ line = tick.select("line"),
+ text = tick.select("text");
+
+ path = path.merge(path.enter().insert("path", ".tick")
+ .attr("class", "domain")
+ .attr("stroke", "#000"));
+
+ tick = tick.merge(tickEnter);
+
+ line = line.merge(tickEnter.append("line")
+ .attr("stroke", "#000")
+ .attr(x + "2", k * tickSizeInner));
+
+ text = text.merge(tickEnter.append("text")
+ .attr("fill", "#000")
+ .attr(x, k * spacing)
+ .attr("dy", orient === top ? "0em" : orient === bottom ? "0.71em" : "0.32em"));
+
+ if (context !== selection) {
+ path = path.transition(context);
+ tick = tick.transition(context);
+ line = line.transition(context);
+ text = text.transition(context);
+
+ tickExit = tickExit.transition(context)
+ .attr("opacity", epsilon)
+ .attr("transform", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute("transform"); });
+
+ tickEnter
+ .attr("opacity", epsilon)
+ .attr("transform", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });
+ }
+
+ tickExit.remove();
+
+ path
+ .attr("d", orient === left || orient == right
+ ? "M" + k * tickSizeOuter + "," + range0 + "H0.5V" + range1 + "H" + k * tickSizeOuter
+ : "M" + range0 + "," + k * tickSizeOuter + "V0.5H" + range1 + "V" + k * tickSizeOuter);
+
+ tick
+ .attr("opacity", 1)
+ .attr("transform", function(d) { return transform(position(d)); });
+
+ line
+ .attr(x + "2", k * tickSizeInner);
+
+ text
+ .attr(x, k * spacing)
+ .text(format);
+
+ selection.filter(entering)
+ .attr("fill", "none")
+ .attr("font-size", 10)
+ .attr("font-family", "sans-serif")
+ .attr("text-anchor", orient === right ? "start" : orient === left ? "end" : "middle");
+
+ selection
+ .each(function() { this.__axis = position; });
+ }
+
+ axis.scale = function(_) {
+ return arguments.length ? (scale = _, axis) : scale;
+ };
+
+ axis.ticks = function() {
+ return tickArguments = __WEBPACK_IMPORTED_MODULE_0__array__["a" /* slice */].call(arguments), axis;
+ };
+
+ axis.tickArguments = function(_) {
+ return arguments.length ? (tickArguments = _ == null ? [] : __WEBPACK_IMPORTED_MODULE_0__array__["a" /* slice */].call(_), axis) : tickArguments.slice();
+ };
+
+ axis.tickValues = function(_) {
+ return arguments.length ? (tickValues = _ == null ? null : __WEBPACK_IMPORTED_MODULE_0__array__["a" /* slice */].call(_), axis) : tickValues && tickValues.slice();
+ };
+
+ axis.tickFormat = function(_) {
+ return arguments.length ? (tickFormat = _, axis) : tickFormat;
+ };
+
+ axis.tickSize = function(_) {
+ return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;
+ };
+
+ axis.tickSizeInner = function(_) {
+ return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;
+ };
+
+ axis.tickSizeOuter = function(_) {
+ return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;
+ };
+
+ axis.tickPadding = function(_) {
+ return arguments.length ? (tickPadding = +_, axis) : tickPadding;
+ };
+
+ return axis;
+}
+
+function axisTop(scale) {
+ return axis(top, scale);
+}
+
+function axisRight(scale) {
+ return axis(right, scale);
+}
+
+function axisBottom(scale) {
+ return axis(bottom, scale);
+}
+
+function axisLeft(scale) {
+ return axis(left, scale);
+}
+
+
+/***/ }),
+/* 126 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(x) {
+ return x;
+};
+
+
+/***/ }),
+/* 127 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_brush__ = __webpack_require__(128);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "brush", function() { return __WEBPACK_IMPORTED_MODULE_0__src_brush__["a"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "brushX", function() { return __WEBPACK_IMPORTED_MODULE_0__src_brush__["b"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "brushY", function() { return __WEBPACK_IMPORTED_MODULE_0__src_brush__["c"]; });
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "brushSelection", function() { return __WEBPACK_IMPORTED_MODULE_0__src_brush__["d"]; });
+
+
+
+/***/ }),
+/* 128 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_dispatch__ = __webpack_require__(15);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_d3_drag__ = __webpack_require__(33);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_d3_interpolate__ = __webpack_require__(3);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_d3_selection__ = __webpack_require__(0);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_d3_transition__ = __webpack_require__(25);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__constant__ = __webpack_require__(129);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__event__ = __webpack_require__(130);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__noevent__ = __webpack_require__(131);
+/* harmony export (immutable) */ __webpack_exports__["d"] = brushSelection;
+/* harmony export (immutable) */ __webpack_exports__["b"] = brushX;
+/* harmony export (immutable) */ __webpack_exports__["c"] = brushY;
+
+
+
+
+
+
+
+
+
+var MODE_DRAG = {name: "drag"},
+ MODE_SPACE = {name: "space"},
+ MODE_HANDLE = {name: "handle"},
+ MODE_CENTER = {name: "center"};
+
+var X = {
+ name: "x",
+ handles: ["e", "w"].map(type),
+ input: function(x, e) { return x && [[x[0], e[0][1]], [x[1], e[1][1]]]; },
+ output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }
+};
+
+var Y = {
+ name: "y",
+ handles: ["n", "s"].map(type),
+ input: function(y, e) { return y && [[e[0][0], y[0]], [e[1][0], y[1]]]; },
+ output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }
+};
+
+var XY = {
+ name: "xy",
+ handles: ["n", "e", "s", "w", "nw", "ne", "se", "sw"].map(type),
+ input: function(xy) { return xy; },
+ output: function(xy) { return xy; }
+};
+
+var cursors = {
+ overlay: "crosshair",
+ selection: "move",
+ n: "ns-resize",
+ e: "ew-resize",
+ s: "ns-resize",
+ w: "ew-resize",
+ nw: "nwse-resize",
+ ne: "nesw-resize",
+ se: "nwse-resize",
+ sw: "nesw-resize"
+};
+
+var flipX = {
+ e: "w",
+ w: "e",
+ nw: "ne",
+ ne: "nw",
+ se: "sw",
+ sw: "se"
+};
+
+var flipY = {
+ n: "s",
+ s: "n",
+ nw: "sw",
+ ne: "se",
+ se: "ne",
+ sw: "nw"
+};
+
+var signsX = {
+ overlay: +1,
+ selection: +1,
+ n: null,
+ e: +1,
+ s: null,
+ w: -1,
+ nw: -1,
+ ne: +1,
+ se: +1,
+ sw: -1
+};
+
+var signsY = {
+ overlay: +1,
+ selection: +1,
+ n: -1,
+ e: null,
+ s: +1,
+ w: null,
+ nw: -1,
+ ne: -1,
+ se: +1,
+ sw: +1
+};
+
+function type(t) {
+ return {type: t};
+}
+
+// Ignore right-click, since that should open the context menu.
+function defaultFilter() {
+ return !__WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].button;
+}
+
+function defaultExtent() {
+ var svg = this.ownerSVGElement || this;
+ return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];
+}
+
+// Like d3.local, but with the name “__brush” rather than auto-generated.
+function local(node) {
+ while (!node.__brush) if (!(node = node.parentNode)) return;
+ return node.__brush;
+}
+
+function empty(extent) {
+ return extent[0][0] === extent[1][0]
+ || extent[0][1] === extent[1][1];
+}
+
+function brushSelection(node) {
+ var state = node.__brush;
+ return state ? state.dim.output(state.selection) : null;
+}
+
+function brushX() {
+ return brush(X);
+}
+
+function brushY() {
+ return brush(Y);
+}
+
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ return brush(XY);
+};
+
+function brush(dim) {
+ var extent = defaultExtent,
+ filter = defaultFilter,
+ listeners = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_dispatch__["dispatch"])(brush, "start", "brush", "end"),
+ handleSize = 6,
+ touchending;
+
+ function brush(group) {
+ var overlay = group
+ .property("__brush", initialize)
+ .selectAll(".overlay")
+ .data([type("overlay")]);
+
+ overlay.enter().append("rect")
+ .attr("class", "overlay")
+ .attr("pointer-events", "all")
+ .attr("cursor", cursors.overlay)
+ .merge(overlay)
+ .each(function() {
+ var extent = local(this).extent;
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_d3_selection__["select"])(this)
+ .attr("x", extent[0][0])
+ .attr("y", extent[0][1])
+ .attr("width", extent[1][0] - extent[0][0])
+ .attr("height", extent[1][1] - extent[0][1]);
+ });
+
+ group.selectAll(".selection")
+ .data([type("selection")])
+ .enter().append("rect")
+ .attr("class", "selection")
+ .attr("cursor", cursors.selection)
+ .attr("fill", "#777")
+ .attr("fill-opacity", 0.3)
+ .attr("stroke", "#fff")
+ .attr("shape-rendering", "crispEdges");
+
+ var handle = group.selectAll(".handle")
+ .data(dim.handles, function(d) { return d.type; });
+
+ handle.exit().remove();
+
+ handle.enter().append("rect")
+ .attr("class", function(d) { return "handle handle--" + d.type; })
+ .attr("cursor", function(d) { return cursors[d.type]; });
+
+ group
+ .each(redraw)
+ .attr("fill", "none")
+ .attr("pointer-events", "all")
+ .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)")
+ .on("mousedown.brush touchstart.brush", started);
+ }
+
+ brush.move = function(group, selection) {
+ if (group.selection) {
+ group
+ .on("start.brush", function() { emitter(this, arguments).beforestart().start(); })
+ .on("interrupt.brush end.brush", function() { emitter(this, arguments).end(); })
+ .tween("brush", function() {
+ var that = this,
+ state = that.__brush,
+ emit = emitter(that, arguments),
+ selection0 = state.selection,
+ selection1 = dim.input(typeof selection === "function" ? selection.apply(this, arguments) : selection, state.extent),
+ i = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2_d3_interpolate__["interpolate"])(selection0, selection1);
+
+ function tween(t) {
+ state.selection = t === 1 && empty(selection1) ? null : i(t);
+ redraw.call(that);
+ emit.brush();
+ }
+
+ return selection0 && selection1 ? tween : tween(1);
+ });
+ } else {
+ group
+ .each(function() {
+ var that = this,
+ args = arguments,
+ state = that.__brush,
+ selection1 = dim.input(typeof selection === "function" ? selection.apply(that, args) : selection, state.extent),
+ emit = emitter(that, args).beforestart();
+
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4_d3_transition__["interrupt"])(that);
+ state.selection = selection1 == null || empty(selection1) ? null : selection1;
+ redraw.call(that);
+ emit.start().brush().end();
+ });
+ }
+ };
+
+ function redraw() {
+ var group = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_d3_selection__["select"])(this),
+ selection = local(this).selection;
+
+ if (selection) {
+ group.selectAll(".selection")
+ .style("display", null)
+ .attr("x", selection[0][0])
+ .attr("y", selection[0][1])
+ .attr("width", selection[1][0] - selection[0][0])
+ .attr("height", selection[1][1] - selection[0][1]);
+
+ group.selectAll(".handle")
+ .style("display", null)
+ .attr("x", function(d) { return d.type[d.type.length - 1] === "e" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })
+ .attr("y", function(d) { return d.type[0] === "s" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })
+ .attr("width", function(d) { return d.type === "n" || d.type === "s" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })
+ .attr("height", function(d) { return d.type === "e" || d.type === "w" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });
+ }
+
+ else {
+ group.selectAll(".selection,.handle")
+ .style("display", "none")
+ .attr("x", null)
+ .attr("y", null)
+ .attr("width", null)
+ .attr("height", null);
+ }
+ }
+
+ function emitter(that, args) {
+ return that.__brush.emitter || new Emitter(that, args);
+ }
+
+ function Emitter(that, args) {
+ this.that = that;
+ this.args = args;
+ this.state = that.__brush;
+ this.active = 0;
+ }
+
+ Emitter.prototype = {
+ beforestart: function() {
+ if (++this.active === 1) this.state.emitter = this, this.starting = true;
+ return this;
+ },
+ start: function() {
+ if (this.starting) this.starting = false, this.emit("start");
+ return this;
+ },
+ brush: function() {
+ this.emit("brush");
+ return this;
+ },
+ end: function() {
+ if (--this.active === 0) delete this.state.emitter, this.emit("end");
+ return this;
+ },
+ emit: function(type) {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_d3_selection__["customEvent"])(new __WEBPACK_IMPORTED_MODULE_6__event__["a" /* default */](brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);
+ }
+ };
+
+ function started() {
+ if (__WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].touches) { if (__WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].changedTouches.length < __WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].touches.length) return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_7__noevent__["a" /* default */])(); }
+ else if (touchending) return;
+ if (!filter.apply(this, arguments)) return;
+
+ var that = this,
+ type = __WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].target.__data__.type,
+ mode = (__WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].metaKey ? type = "overlay" : type) === "selection" ? MODE_DRAG : (__WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].altKey ? MODE_CENTER : MODE_HANDLE),
+ signX = dim === Y ? null : signsX[type],
+ signY = dim === X ? null : signsY[type],
+ state = local(that),
+ extent = state.extent,
+ selection = state.selection,
+ W = extent[0][0], w0, w1,
+ N = extent[0][1], n0, n1,
+ E = extent[1][0], e0, e1,
+ S = extent[1][1], s0, s1,
+ dx,
+ dy,
+ moving,
+ shifting = signX && signY && __WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].shiftKey,
+ lockX,
+ lockY,
+ point0 = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_d3_selection__["mouse"])(that),
+ point = point0,
+ emit = emitter(that, arguments).beforestart();
+
+ if (type === "overlay") {
+ state.selection = selection = [
+ [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],
+ [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]
+ ];
+ } else {
+ w0 = selection[0][0];
+ n0 = selection[0][1];
+ e0 = selection[1][0];
+ s0 = selection[1][1];
+ }
+
+ w1 = w0;
+ n1 = n0;
+ e1 = e0;
+ s1 = s0;
+
+ var group = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_d3_selection__["select"])(that)
+ .attr("pointer-events", "none");
+
+ var overlay = group.selectAll(".overlay")
+ .attr("cursor", cursors[type]);
+
+ if (__WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].touches) {
+ group
+ .on("touchmove.brush", moved, true)
+ .on("touchend.brush touchcancel.brush", ended, true);
+ } else {
+ var view = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_d3_selection__["select"])(__WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].view)
+ .on("keydown.brush", keydowned, true)
+ .on("keyup.brush", keyupped, true)
+ .on("mousemove.brush", moved, true)
+ .on("mouseup.brush", ended, true);
+
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_drag__["dragDisable"])(__WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].view);
+ }
+
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_7__noevent__["b" /* nopropagation */])();
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4_d3_transition__["interrupt"])(that);
+ redraw.call(that);
+ emit.start();
+
+ function moved() {
+ var point1 = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_d3_selection__["mouse"])(that);
+ if (shifting && !lockX && !lockY) {
+ if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;
+ else lockX = true;
+ }
+ point = point1;
+ moving = true;
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_7__noevent__["a" /* default */])();
+ move();
+ }
+
+ function move() {
+ var t;
+
+ dx = point[0] - point0[0];
+ dy = point[1] - point0[1];
+
+ switch (mode) {
+ case MODE_SPACE:
+ case MODE_DRAG: {
+ if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;
+ if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;
+ break;
+ }
+ case MODE_HANDLE: {
+ if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;
+ else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;
+ if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;
+ else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;
+ break;
+ }
+ case MODE_CENTER: {
+ if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));
+ if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));
+ break;
+ }
+ }
+
+ if (e1 < w1) {
+ signX *= -1;
+ t = w0, w0 = e0, e0 = t;
+ t = w1, w1 = e1, e1 = t;
+ if (type in flipX) overlay.attr("cursor", cursors[type = flipX[type]]);
+ }
+
+ if (s1 < n1) {
+ signY *= -1;
+ t = n0, n0 = s0, s0 = t;
+ t = n1, n1 = s1, s1 = t;
+ if (type in flipY) overlay.attr("cursor", cursors[type = flipY[type]]);
+ }
+
+ if (state.selection) selection = state.selection; // May be set by brush.move!
+ if (lockX) w1 = selection[0][0], e1 = selection[1][0];
+ if (lockY) n1 = selection[0][1], s1 = selection[1][1];
+
+ if (selection[0][0] !== w1
+ || selection[0][1] !== n1
+ || selection[1][0] !== e1
+ || selection[1][1] !== s1) {
+ state.selection = [[w1, n1], [e1, s1]];
+ redraw.call(that);
+ emit.brush();
+ }
+ }
+
+ function ended() {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_7__noevent__["b" /* nopropagation */])();
+ if (__WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].touches) {
+ if (__WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].touches.length) return;
+ if (touchending) clearTimeout(touchending);
+ touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!
+ group.on("touchmove.brush touchend.brush touchcancel.brush", null);
+ } else {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_drag__["dragEnable"])(__WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].view, moving);
+ view.on("keydown.brush keyup.brush mousemove.brush mouseup.brush", null);
+ }
+ group.attr("pointer-events", "all");
+ overlay.attr("cursor", cursors.overlay);
+ if (state.selection) selection = state.selection; // May be set by brush.move (on start)!
+ if (empty(selection)) state.selection = null, redraw.call(that);
+ emit.end();
+ }
+
+ function keydowned() {
+ switch (__WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].keyCode) {
+ case 16: { // SHIFT
+ shifting = signX && signY;
+ break;
+ }
+ case 18: { // ALT
+ if (mode === MODE_HANDLE) {
+ if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;
+ if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;
+ mode = MODE_CENTER;
+ move();
+ }
+ break;
+ }
+ case 32: { // SPACE; takes priority over ALT
+ if (mode === MODE_HANDLE || mode === MODE_CENTER) {
+ if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;
+ if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;
+ mode = MODE_SPACE;
+ overlay.attr("cursor", cursors.selection);
+ move();
+ }
+ break;
+ }
+ default: return;
+ }
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_7__noevent__["a" /* default */])();
+ }
+
+ function keyupped() {
+ switch (__WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].keyCode) {
+ case 16: { // SHIFT
+ if (shifting) {
+ lockX = lockY = shifting = false;
+ move();
+ }
+ break;
+ }
+ case 18: { // ALT
+ if (mode === MODE_CENTER) {
+ if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;
+ if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;
+ mode = MODE_HANDLE;
+ move();
+ }
+ break;
+ }
+ case 32: { // SPACE
+ if (mode === MODE_SPACE) {
+ if (__WEBPACK_IMPORTED_MODULE_3_d3_selection__["event"].altKey) {
+ if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;
+ if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;
+ mode = MODE_CENTER;
+ } else {
+ if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;
+ if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;
+ mode = MODE_HANDLE;
+ }
+ overlay.attr("cursor", cursors[type]);
+ move();
+ }
+ break;
+ }
+ default: return;
+ }
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_7__noevent__["a" /* default */])();
+ }
+ }
+
+ function initialize() {
+ var state = this.__brush || {selection: null};
+ state.extent = extent.apply(this, arguments);
+ state.dim = dim;
+ return state;
+ }
+
+ brush.extent = function(_) {
+ return arguments.length ? (extent = typeof _ === "function" ? _ : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__constant__["a" /* default */])([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), brush) : extent;
+ };
+
+ brush.filter = function(_) {
+ return arguments.length ? (filter = typeof _ === "function" ? _ : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__constant__["a" /* default */])(!!_), brush) : filter;
+ };
+
+ brush.handleSize = function(_) {
+ return arguments.length ? (handleSize = +_, brush) : handleSize;
+ };
+
+ brush.on = function() {
+ var value = listeners.on.apply(listeners, arguments);
+ return value === listeners ? brush : value;
+ };
+
+ return brush;
+}
+
+
+/***/ }),
+/* 129 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(x) {
+ return function() {
+ return x;
+ };
+};
+
+
+/***/ }),
+/* 130 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(target, type, selection) {
+ this.target = target;
+ this.type = type;
+ this.selection = selection;
+};
+
+
+/***/ }),
+/* 131 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(0);
+/* harmony export (immutable) */ __webpack_exports__["b"] = nopropagation;
+
+
+function nopropagation() {
+ __WEBPACK_IMPORTED_MODULE_0_d3_selection__["event"].stopImmediatePropagation();
+}
+
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ __WEBPACK_IMPORTED_MODULE_0_d3_selection__["event"].preventDefault();
+ __WEBPACK_IMPORTED_MODULE_0_d3_selection__["event"].stopImmediatePropagation();
+};
+
+
+/***/ }),
+/* 132 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_nest__ = __webpack_require__(135);
+/* unused harmony reexport nest */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_set__ = __webpack_require__(136);
+/* unused harmony reexport set */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_map__ = __webpack_require__(30);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __WEBPACK_IMPORTED_MODULE_2__src_map__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_keys__ = __webpack_require__(134);
+/* unused harmony reexport keys */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_values__ = __webpack_require__(137);
+/* unused harmony reexport values */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_entries__ = __webpack_require__(133);
+/* unused harmony reexport entries */
+
+
+
+
+
+
+
+
+/***/ }),
+/* 133 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* unused harmony default export */ var _unused_webpack_default_export = function(map) {
+ var entries = [];
+ for (var key in map) entries.push({key: key, value: map[key]});
+ return entries;
+};
+
+
+/***/ }),
+/* 134 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* unused harmony default export */ var _unused_webpack_default_export = function(map) {
+ var keys = [];
+ for (var key in map) keys.push(key);
+ return keys;
+};
+
+
+/***/ }),
+/* 135 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__map__ = __webpack_require__(30);
+
+
+/* unused harmony default export */ var _unused_webpack_default_export = function() {
+ var keys = [],
+ sortKeys = [],
+ sortValues,
+ rollup,
+ nest;
+
+ function apply(array, depth, createResult, setResult) {
+ if (depth >= keys.length) {
+ if (sortValues != null) array.sort(sortValues);
+ return rollup != null ? rollup(array) : array;
+ }
+
+ var i = -1,
+ n = array.length,
+ key = keys[depth++],
+ keyValue,
+ value,
+ valuesByKey = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__map__["a" /* default */])(),
+ values,
+ result = createResult();
+
+ while (++i < n) {
+ if (values = valuesByKey.get(keyValue = key(value = array[i]) + "")) {
+ values.push(value);
+ } else {
+ valuesByKey.set(keyValue, [value]);
+ }
+ }
+
+ valuesByKey.each(function(values, key) {
+ setResult(result, key, apply(values, depth, createResult, setResult));
+ });
+
+ return result;
+ }
+
+ function entries(map, depth) {
+ if (++depth > keys.length) return map;
+ var array, sortKey = sortKeys[depth - 1];
+ if (rollup != null && depth >= keys.length) array = map.entries();
+ else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });
+ return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;
+ }
+
+ return nest = {
+ object: function(array) { return apply(array, 0, createObject, setObject); },
+ map: function(array) { return apply(array, 0, createMap, setMap); },
+ entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },
+ key: function(d) { keys.push(d); return nest; },
+ sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },
+ sortValues: function(order) { sortValues = order; return nest; },
+ rollup: function(f) { rollup = f; return nest; }
+ };
+};
+
+function createObject() {
+ return {};
+}
+
+function setObject(object, key, value) {
+ object[key] = value;
+}
+
+function createMap() {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__map__["a" /* default */])();
+}
+
+function setMap(map, key, value) {
+ map.set(key, value);
+}
+
+
+/***/ }),
+/* 136 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__map__ = __webpack_require__(30);
+
+
+function Set() {}
+
+var proto = __WEBPACK_IMPORTED_MODULE_0__map__["a" /* default */].prototype;
+
+Set.prototype = set.prototype = {
+ constructor: Set,
+ has: proto.has,
+ add: function(value) {
+ value += "";
+ this[__WEBPACK_IMPORTED_MODULE_0__map__["b" /* prefix */] + value] = value;
+ return this;
+ },
+ remove: proto.remove,
+ clear: proto.clear,
+ values: proto.keys,
+ size: proto.size,
+ empty: proto.empty,
+ each: proto.each
+};
+
+function set(object, f) {
+ var set = new Set;
+
+ // Copy constructor.
+ if (object instanceof Set) object.each(function(value) { set.add(value); });
+
+ // Otherwise, assume it’s an array.
+ else if (object) {
+ var i = -1, n = object.length;
+ if (f == null) while (++i < n) set.add(object[i]);
+ else while (++i < n) set.add(f(object[i], i, object));
+ }
+
+ return set;
+}
+
+/* unused harmony default export */ var _unused_webpack_default_export = set;
+
+
+/***/ }),
+/* 137 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* unused harmony default export */ var _unused_webpack_default_export = function(map) {
+ var values = [];
+ for (var key in map) values.push(map[key]);
+ return values;
+};
+
+
+/***/ }),
+/* 138 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__define__ = __webpack_require__(32);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__color__ = __webpack_require__(31);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__math__ = __webpack_require__(69);
+/* harmony export (immutable) */ __webpack_exports__["a"] = cubehelix;
+/* unused harmony export Cubehelix */
+
+
+
+
+var A = -0.14861,
+ B = +1.78277,
+ C = -0.29227,
+ D = -0.90649,
+ E = +1.97294,
+ ED = E * D,
+ EB = E * B,
+ BC_DA = B * C - D * A;
+
+function cubehelixConvert(o) {
+ if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);
+ if (!(o instanceof __WEBPACK_IMPORTED_MODULE_1__color__["b" /* Rgb */])) o = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__color__["c" /* rgbConvert */])(o);
+ var r = o.r / 255,
+ g = o.g / 255,
+ b = o.b / 255,
+ l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),
+ bl = b - l,
+ k = (E * (g - l) - C * bl) / D,
+ s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1
+ h = s ? Math.atan2(k, bl) * __WEBPACK_IMPORTED_MODULE_2__math__["a" /* rad2deg */] - 120 : NaN;
+ return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);
+}
+
+function cubehelix(h, s, l, opacity) {
+ return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);
+}
+
+function Cubehelix(h, s, l, opacity) {
+ this.h = +h;
+ this.s = +s;
+ this.l = +l;
+ this.opacity = +opacity;
+}
+
+__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__define__["a" /* default */])(Cubehelix, cubehelix, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__define__["b" /* extend */])(__WEBPACK_IMPORTED_MODULE_1__color__["d" /* Color */], {
+ brighter: function(k) {
+ k = k == null ? __WEBPACK_IMPORTED_MODULE_1__color__["e" /* brighter */] : Math.pow(__WEBPACK_IMPORTED_MODULE_1__color__["e" /* brighter */], k);
+ return new Cubehelix(this.h, this.s, this.l * k, this.opacity);
+ },
+ darker: function(k) {
+ k = k == null ? __WEBPACK_IMPORTED_MODULE_1__color__["f" /* darker */] : Math.pow(__WEBPACK_IMPORTED_MODULE_1__color__["f" /* darker */], k);
+ return new Cubehelix(this.h, this.s, this.l * k, this.opacity);
+ },
+ rgb: function() {
+ var h = isNaN(this.h) ? 0 : (this.h + 120) * __WEBPACK_IMPORTED_MODULE_2__math__["b" /* deg2rad */],
+ l = +this.l,
+ a = isNaN(this.s) ? 0 : this.s * l * (1 - l),
+ cosh = Math.cos(h),
+ sinh = Math.sin(h);
+ return new __WEBPACK_IMPORTED_MODULE_1__color__["b" /* Rgb */](
+ 255 * (l + a * (A * cosh + B * sinh)),
+ 255 * (l + a * (C * cosh + D * sinh)),
+ 255 * (l + a * (E * cosh)),
+ this.opacity
+ );
+ }
+}));
+
+
+/***/ }),
+/* 139 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__define__ = __webpack_require__(32);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__color__ = __webpack_require__(31);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__math__ = __webpack_require__(69);
+/* harmony export (immutable) */ __webpack_exports__["b"] = lab;
+/* unused harmony export Lab */
+/* harmony export (immutable) */ __webpack_exports__["a"] = hcl;
+/* unused harmony export Hcl */
+
+
+
+
+var Kn = 18,
+ Xn = 0.950470, // D65 standard referent
+ Yn = 1,
+ Zn = 1.088830,
+ t0 = 4 / 29,
+ t1 = 6 / 29,
+ t2 = 3 * t1 * t1,
+ t3 = t1 * t1 * t1;
+
+function labConvert(o) {
+ if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);
+ if (o instanceof Hcl) {
+ var h = o.h * __WEBPACK_IMPORTED_MODULE_2__math__["b" /* deg2rad */];
+ return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);
+ }
+ if (!(o instanceof __WEBPACK_IMPORTED_MODULE_1__color__["b" /* Rgb */])) o = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__color__["c" /* rgbConvert */])(o);
+ var b = rgb2xyz(o.r),
+ a = rgb2xyz(o.g),
+ l = rgb2xyz(o.b),
+ x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),
+ y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),
+ z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);
+ return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);
+}
+
+function lab(l, a, b, opacity) {
+ return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);
+}
+
+function Lab(l, a, b, opacity) {
+ this.l = +l;
+ this.a = +a;
+ this.b = +b;
+ this.opacity = +opacity;
+}
+
+__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__define__["a" /* default */])(Lab, lab, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__define__["b" /* extend */])(__WEBPACK_IMPORTED_MODULE_1__color__["d" /* Color */], {
+ brighter: function(k) {
+ return new Lab(this.l + Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);
+ },
+ darker: function(k) {
+ return new Lab(this.l - Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);
+ },
+ rgb: function() {
+ var y = (this.l + 16) / 116,
+ x = isNaN(this.a) ? y : y + this.a / 500,
+ z = isNaN(this.b) ? y : y - this.b / 200;
+ y = Yn * lab2xyz(y);
+ x = Xn * lab2xyz(x);
+ z = Zn * lab2xyz(z);
+ return new __WEBPACK_IMPORTED_MODULE_1__color__["b" /* Rgb */](
+ xyz2rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB
+ xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),
+ xyz2rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z),
+ this.opacity
+ );
+ }
+}));
+
+function xyz2lab(t) {
+ return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;
+}
+
+function lab2xyz(t) {
+ return t > t1 ? t * t * t : t2 * (t - t0);
+}
+
+function xyz2rgb(x) {
+ return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);
+}
+
+function rgb2xyz(x) {
+ return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
+}
+
+function hclConvert(o) {
+ if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);
+ if (!(o instanceof Lab)) o = labConvert(o);
+ var h = Math.atan2(o.b, o.a) * __WEBPACK_IMPORTED_MODULE_2__math__["a" /* rad2deg */];
+ return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);
+}
+
+function hcl(h, c, l, opacity) {
+ return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);
+}
+
+function Hcl(h, c, l, opacity) {
+ this.h = +h;
+ this.c = +c;
+ this.l = +l;
+ this.opacity = +opacity;
+}
+
+__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__define__["a" /* default */])(Hcl, hcl, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__define__["b" /* extend */])(__WEBPACK_IMPORTED_MODULE_1__color__["d" /* Color */], {
+ brighter: function(k) {
+ return new Hcl(this.h, this.c, this.l + Kn * (k == null ? 1 : k), this.opacity);
+ },
+ darker: function(k) {
+ return new Hcl(this.h, this.c, this.l - Kn * (k == null ? 1 : k), this.opacity);
+ },
+ rgb: function() {
+ return labConvert(this).rgb();
+ }
+}));
+
+
+/***/ }),
+/* 140 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+var noop = {value: function() {}};
+
+function dispatch() {
+ for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {
+ if (!(t = arguments[i] + "") || (t in _)) throw new Error("illegal type: " + t);
+ _[t] = [];
+ }
+ return new Dispatch(_);
+}
+
+function Dispatch(_) {
+ this._ = _;
+}
+
+function parseTypenames(typenames, types) {
+ return typenames.trim().split(/^|\s+/).map(function(t) {
+ var name = "", i = t.indexOf(".");
+ if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
+ if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t);
+ return {type: t, name: name};
+ });
+}
+
+Dispatch.prototype = dispatch.prototype = {
+ constructor: Dispatch,
+ on: function(typename, callback) {
+ var _ = this._,
+ T = parseTypenames(typename + "", _),
+ t,
+ i = -1,
+ n = T.length;
+
+ // If no callback was specified, return the callback of the given type and name.
+ if (arguments.length < 2) {
+ while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;
+ return;
+ }
+
+ // If a type was specified, set the callback for the given type and name.
+ // Otherwise, if a null callback was specified, remove callbacks of the given name.
+ if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback);
+ while (++i < n) {
+ if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);
+ else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);
+ }
+
+ return this;
+ },
+ copy: function() {
+ var copy = {}, _ = this._;
+ for (var t in _) copy[t] = _[t].slice();
+ return new Dispatch(copy);
+ },
+ call: function(type, that) {
+ if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];
+ if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type);
+ for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);
+ },
+ apply: function(type, that, args) {
+ if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type);
+ for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);
+ }
+};
+
+function get(type, name) {
+ for (var i = 0, n = type.length, c; i < n; ++i) {
+ if ((c = type[i]).name === name) {
+ return c.value;
+ }
+ }
+}
+
+function set(type, name, callback) {
+ for (var i = 0, n = type.length; i < n; ++i) {
+ if (type[i].name === name) {
+ type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));
+ break;
+ }
+ }
+ if (callback != null) type.push({name: name, value: callback});
+ return type;
+}
+
+/* harmony default export */ __webpack_exports__["a"] = dispatch;
+
+
+/***/ }),
+/* 141 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(x) {
+ return function() {
+ return x;
+ };
+};
+
+
+/***/ }),
+/* 142 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_dispatch__ = __webpack_require__(15);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_d3_selection__ = __webpack_require__(0);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__nodrag__ = __webpack_require__(70);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__noevent__ = __webpack_require__(71);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__constant__ = __webpack_require__(141);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__event__ = __webpack_require__(143);
+
+
+
+
+
+
+
+// Ignore right-click, since that should open the context menu.
+function defaultFilter() {
+ return !__WEBPACK_IMPORTED_MODULE_1_d3_selection__["event"].button;
+}
+
+function defaultContainer() {
+ return this.parentNode;
+}
+
+function defaultSubject(d) {
+ return d == null ? {x: __WEBPACK_IMPORTED_MODULE_1_d3_selection__["event"].x, y: __WEBPACK_IMPORTED_MODULE_1_d3_selection__["event"].y} : d;
+}
+
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var filter = defaultFilter,
+ container = defaultContainer,
+ subject = defaultSubject,
+ gestures = {},
+ listeners = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_dispatch__["dispatch"])("start", "drag", "end"),
+ active = 0,
+ mousemoving,
+ touchending;
+
+ function drag(selection) {
+ selection
+ .on("mousedown.drag", mousedowned)
+ .on("touchstart.drag", touchstarted)
+ .on("touchmove.drag", touchmoved)
+ .on("touchend.drag touchcancel.drag", touchended)
+ .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
+ }
+
+ function mousedowned() {
+ if (touchending || !filter.apply(this, arguments)) return;
+ var gesture = beforestart("mouse", container.apply(this, arguments), __WEBPACK_IMPORTED_MODULE_1_d3_selection__["mouse"], this, arguments);
+ if (!gesture) return;
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_selection__["select"])(__WEBPACK_IMPORTED_MODULE_1_d3_selection__["event"].view).on("mousemove.drag", mousemoved, true).on("mouseup.drag", mouseupped, true);
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__nodrag__["a" /* default */])(__WEBPACK_IMPORTED_MODULE_1_d3_selection__["event"].view);
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__noevent__["b" /* nopropagation */])();
+ mousemoving = false;
+ gesture("start");
+ }
+
+ function mousemoved() {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__noevent__["a" /* default */])();
+ mousemoving = true;
+ gestures.mouse("drag");
+ }
+
+ function mouseupped() {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_selection__["select"])(__WEBPACK_IMPORTED_MODULE_1_d3_selection__["event"].view).on("mousemove.drag mouseup.drag", null);
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__nodrag__["b" /* yesdrag */])(__WEBPACK_IMPORTED_MODULE_1_d3_selection__["event"].view, mousemoving);
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__noevent__["a" /* default */])();
+ gestures.mouse("end");
+ }
+
+ function touchstarted() {
+ if (!filter.apply(this, arguments)) return;
+ var touches = __WEBPACK_IMPORTED_MODULE_1_d3_selection__["event"].changedTouches,
+ c = container.apply(this, arguments),
+ n = touches.length, i, gesture;
+
+ for (i = 0; i < n; ++i) {
+ if (gesture = beforestart(touches[i].identifier, c, __WEBPACK_IMPORTED_MODULE_1_d3_selection__["touch"], this, arguments)) {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__noevent__["b" /* nopropagation */])();
+ gesture("start");
+ }
+ }
+ }
+
+ function touchmoved() {
+ var touches = __WEBPACK_IMPORTED_MODULE_1_d3_selection__["event"].changedTouches,
+ n = touches.length, i, gesture;
+
+ for (i = 0; i < n; ++i) {
+ if (gesture = gestures[touches[i].identifier]) {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__noevent__["a" /* default */])();
+ gesture("drag");
+ }
+ }
+ }
+
+ function touchended() {
+ var touches = __WEBPACK_IMPORTED_MODULE_1_d3_selection__["event"].changedTouches,
+ n = touches.length, i, gesture;
+
+ if (touchending) clearTimeout(touchending);
+ touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!
+ for (i = 0; i < n; ++i) {
+ if (gesture = gestures[touches[i].identifier]) {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__noevent__["b" /* nopropagation */])();
+ gesture("end");
+ }
+ }
+ }
+
+ function beforestart(id, container, point, that, args) {
+ var p = point(container, id), s, dx, dy,
+ sublisteners = listeners.copy();
+
+ if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_selection__["customEvent"])(new __WEBPACK_IMPORTED_MODULE_5__event__["a" /* default */](drag, "beforestart", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {
+ if ((__WEBPACK_IMPORTED_MODULE_1_d3_selection__["event"].subject = s = subject.apply(that, args)) == null) return false;
+ dx = s.x - p[0] || 0;
+ dy = s.y - p[1] || 0;
+ return true;
+ })) return;
+
+ return function gesture(type) {
+ var p0 = p, n;
+ switch (type) {
+ case "start": gestures[id] = gesture, n = active++; break;
+ case "end": delete gestures[id], --active; // nobreak
+ case "drag": p = point(container, id), n = active; break;
+ }
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_selection__["customEvent"])(new __WEBPACK_IMPORTED_MODULE_5__event__["a" /* default */](drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);
+ };
+ }
+
+ drag.filter = function(_) {
+ return arguments.length ? (filter = typeof _ === "function" ? _ : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__constant__["a" /* default */])(!!_), drag) : filter;
+ };
+
+ drag.container = function(_) {
+ return arguments.length ? (container = typeof _ === "function" ? _ : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__constant__["a" /* default */])(_), drag) : container;
+ };
+
+ drag.subject = function(_) {
+ return arguments.length ? (subject = typeof _ === "function" ? _ : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__constant__["a" /* default */])(_), drag) : subject;
+ };
+
+ drag.on = function() {
+ var value = listeners.on.apply(listeners, arguments);
+ return value === listeners ? drag : value;
+ };
+
+ return drag;
+};
+
+
+/***/ }),
+/* 143 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (immutable) */ __webpack_exports__["a"] = DragEvent;
+function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {
+ this.target = target;
+ this.type = type;
+ this.subject = subject;
+ this.identifier = id;
+ this.active = active;
+ this.x = x;
+ this.y = y;
+ this.dx = dx;
+ this.dy = dy;
+ this._ = dispatch;
+}
+
+DragEvent.prototype.on = function() {
+ var value = this._.on.apply(this._, arguments);
+ return value === this._ ? this : value;
+};
+
+
+/***/ }),
+/* 144 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_linear__ = __webpack_require__(151);
+/* unused harmony reexport easeLinear */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_quad__ = __webpack_require__(153);
+/* unused harmony reexport easeQuad */
+/* unused harmony reexport easeQuadIn */
+/* unused harmony reexport easeQuadOut */
+/* unused harmony reexport easeQuadInOut */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_cubic__ = __webpack_require__(148);
+/* unused harmony reexport easeCubic */
+/* unused harmony reexport easeCubicIn */
+/* unused harmony reexport easeCubicOut */
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __WEBPACK_IMPORTED_MODULE_2__src_cubic__["a"]; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_poly__ = __webpack_require__(152);
+/* unused harmony reexport easePoly */
+/* unused harmony reexport easePolyIn */
+/* unused harmony reexport easePolyOut */
+/* unused harmony reexport easePolyInOut */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_sin__ = __webpack_require__(154);
+/* unused harmony reexport easeSin */
+/* unused harmony reexport easeSinIn */
+/* unused harmony reexport easeSinOut */
+/* unused harmony reexport easeSinInOut */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_exp__ = __webpack_require__(150);
+/* unused harmony reexport easeExp */
+/* unused harmony reexport easeExpIn */
+/* unused harmony reexport easeExpOut */
+/* unused harmony reexport easeExpInOut */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__src_circle__ = __webpack_require__(147);
+/* unused harmony reexport easeCircle */
+/* unused harmony reexport easeCircleIn */
+/* unused harmony reexport easeCircleOut */
+/* unused harmony reexport easeCircleInOut */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__src_bounce__ = __webpack_require__(146);
+/* unused harmony reexport easeBounce */
+/* unused harmony reexport easeBounceIn */
+/* unused harmony reexport easeBounceOut */
+/* unused harmony reexport easeBounceInOut */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__src_back__ = __webpack_require__(145);
+/* unused harmony reexport easeBack */
+/* unused harmony reexport easeBackIn */
+/* unused harmony reexport easeBackOut */
+/* unused harmony reexport easeBackInOut */
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__src_elastic__ = __webpack_require__(149);
+/* unused harmony reexport easeElastic */
+/* unused harmony reexport easeElasticIn */
+/* unused harmony reexport easeElasticOut */
+/* unused harmony reexport easeElasticInOut */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/***/ }),
+/* 145 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* unused harmony export backIn */
+/* unused harmony export backOut */
+/* unused harmony export backInOut */
+var overshoot = 1.70158;
+
+var backIn = (function custom(s) {
+ s = +s;
+
+ function backIn(t) {
+ return t * t * ((s + 1) * t - s);
+ }
+
+ backIn.overshoot = custom;
+
+ return backIn;
+})(overshoot);
+
+var backOut = (function custom(s) {
+ s = +s;
+
+ function backOut(t) {
+ return --t * t * ((s + 1) * t + s) + 1;
+ }
+
+ backOut.overshoot = custom;
+
+ return backOut;
+})(overshoot);
+
+var backInOut = (function custom(s) {
+ s = +s;
+
+ function backInOut(t) {
+ return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;
+ }
+
+ backInOut.overshoot = custom;
+
+ return backInOut;
+})(overshoot);
+
+
+/***/ }),
+/* 146 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* unused harmony export bounceIn */
+/* unused harmony export bounceOut */
+/* unused harmony export bounceInOut */
+var b1 = 4 / 11,
+ b2 = 6 / 11,
+ b3 = 8 / 11,
+ b4 = 3 / 4,
+ b5 = 9 / 11,
+ b6 = 10 / 11,
+ b7 = 15 / 16,
+ b8 = 21 / 22,
+ b9 = 63 / 64,
+ b0 = 1 / b1 / b1;
+
+function bounceIn(t) {
+ return 1 - bounceOut(1 - t);
+}
+
+function bounceOut(t) {
+ return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;
+}
+
+function bounceInOut(t) {
+ return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;
+}
+
+
+/***/ }),
+/* 147 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* unused harmony export circleIn */
+/* unused harmony export circleOut */
+/* unused harmony export circleInOut */
+function circleIn(t) {
+ return 1 - Math.sqrt(1 - t * t);
+}
+
+function circleOut(t) {
+ return Math.sqrt(1 - --t * t);
+}
+
+function circleInOut(t) {
+ return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;
+}
+
+
+/***/ }),
+/* 148 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* unused harmony export cubicIn */
+/* unused harmony export cubicOut */
+/* harmony export (immutable) */ __webpack_exports__["a"] = cubicInOut;
+function cubicIn(t) {
+ return t * t * t;
+}
+
+function cubicOut(t) {
+ return --t * t * t + 1;
+}
+
+function cubicInOut(t) {
+ return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;
+}
+
+
+/***/ }),
+/* 149 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* unused harmony export elasticIn */
+/* unused harmony export elasticOut */
+/* unused harmony export elasticInOut */
+var tau = 2 * Math.PI,
+ amplitude = 1,
+ period = 0.3;
+
+var elasticIn = (function custom(a, p) {
+ var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);
+
+ function elasticIn(t) {
+ return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);
+ }
+
+ elasticIn.amplitude = function(a) { return custom(a, p * tau); };
+ elasticIn.period = function(p) { return custom(a, p); };
+
+ return elasticIn;
+})(amplitude, period);
+
+var elasticOut = (function custom(a, p) {
+ var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);
+
+ function elasticOut(t) {
+ return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);
+ }
+
+ elasticOut.amplitude = function(a) { return custom(a, p * tau); };
+ elasticOut.period = function(p) { return custom(a, p); };
+
+ return elasticOut;
+})(amplitude, period);
+
+var elasticInOut = (function custom(a, p) {
+ var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);
+
+ function elasticInOut(t) {
+ return ((t = t * 2 - 1) < 0
+ ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)
+ : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;
+ }
+
+ elasticInOut.amplitude = function(a) { return custom(a, p * tau); };
+ elasticInOut.period = function(p) { return custom(a, p); };
+
+ return elasticInOut;
+})(amplitude, period);
+
+
+/***/ }),
+/* 150 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* unused harmony export expIn */
+/* unused harmony export expOut */
+/* unused harmony export expInOut */
+function expIn(t) {
+ return Math.pow(2, 10 * t - 10);
+}
+
+function expOut(t) {
+ return 1 - Math.pow(2, -10 * t);
+}
+
+function expInOut(t) {
+ return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;
+}
+
+
+/***/ }),
+/* 151 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* unused harmony export linear */
+function linear(t) {
+ return +t;
+}
+
+
+/***/ }),
+/* 152 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* unused harmony export polyIn */
+/* unused harmony export polyOut */
+/* unused harmony export polyInOut */
+var exponent = 3;
+
+var polyIn = (function custom(e) {
+ e = +e;
+
+ function polyIn(t) {
+ return Math.pow(t, e);
+ }
+
+ polyIn.exponent = custom;
+
+ return polyIn;
+})(exponent);
+
+var polyOut = (function custom(e) {
+ e = +e;
+
+ function polyOut(t) {
+ return 1 - Math.pow(1 - t, e);
+ }
+
+ polyOut.exponent = custom;
+
+ return polyOut;
+})(exponent);
+
+var polyInOut = (function custom(e) {
+ e = +e;
+
+ function polyInOut(t) {
+ return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;
+ }
+
+ polyInOut.exponent = custom;
+
+ return polyInOut;
+})(exponent);
+
+
+/***/ }),
+/* 153 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* unused harmony export quadIn */
+/* unused harmony export quadOut */
+/* unused harmony export quadInOut */
+function quadIn(t) {
+ return t * t;
+}
+
+function quadOut(t) {
+ return t * (2 - t);
+}
+
+function quadInOut(t) {
+ return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;
+}
+
+
+/***/ }),
+/* 154 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* unused harmony export sinIn */
+/* unused harmony export sinOut */
+/* unused harmony export sinInOut */
+var pi = Math.PI,
+ halfPi = pi / 2;
+
+function sinIn(t) {
+ return 1 - Math.cos(t * halfPi);
+}
+
+function sinOut(t) {
+ return Math.sin(t * halfPi);
+}
+
+function sinInOut(t) {
+ return (1 - Math.cos(pi * t)) / 2;
+}
+
+
+/***/ }),
+/* 155 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__locale__ = __webpack_require__(75);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return format; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return formatPrefix; });
+/* harmony export (immutable) */ __webpack_exports__["a"] = defaultLocale;
+
+
+var locale;
+var format;
+var formatPrefix;
+
+defaultLocale({
+ decimal: ".",
+ thousands: ",",
+ grouping: [3],
+ currency: ["$", ""]
+});
+
+function defaultLocale(definition) {
+ locale = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__locale__["a" /* default */])(definition);
+ format = locale.format;
+ formatPrefix = locale.formatPrefix;
+ return locale;
+}
+
+
+/***/ }),
+/* 156 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(x, p) {
+ x = x.toPrecision(p);
+
+ out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {
+ switch (x[i]) {
+ case ".": i0 = i1 = i; break;
+ case "0": if (i0 === 0) i0 = i; i1 = i; break;
+ case "e": break out;
+ default: if (i0 > 0) i0 = 0; break;
+ }
+ }
+
+ return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;
+};
+
+
+/***/ }),
+/* 157 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(grouping, thousands) {
+ return function(value, width) {
+ var i = value.length,
+ t = [],
+ j = 0,
+ g = grouping[0],
+ length = 0;
+
+ while (i > 0 && g > 0) {
+ if (length + g + 1 > width) g = Math.max(1, width - length);
+ t.push(value.substring(i -= g, i + g));
+ if ((length += g + 1) > width) break;
+ g = grouping[j = (j + 1) % grouping.length];
+ }
+
+ return t.reverse().join(thousands);
+ };
+};
+
+
+/***/ }),
+/* 158 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(numerals) {
+ return function(value) {
+ return value.replace(/[0-9]/g, function(i) {
+ return numerals[+i];
+ });
+ };
+};
+
+
+/***/ }),
+/* 159 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__formatDecimal__ = __webpack_require__(35);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(x, p) {
+ var d = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__formatDecimal__["a" /* default */])(x, p);
+ if (!d) return x + "";
+ var coefficient = d[0],
+ exponent = d[1];
+ return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient
+ : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1)
+ : coefficient + new Array(exponent - coefficient.length + 2).join("0");
+};
+
+
+/***/ }),
+/* 160 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(x) {
+ return x;
+};
+
+
+/***/ }),
+/* 161 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__exponent__ = __webpack_require__(21);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(step) {
+ return Math.max(0, -__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__exponent__["a" /* default */])(Math.abs(step)));
+};
+
+
+/***/ }),
+/* 162 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__exponent__ = __webpack_require__(21);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(step, value) {
+ return Math.max(0, Math.max(-8, Math.min(8, Math.floor(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__exponent__["a" /* default */])(value) / 3))) * 3 - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__exponent__["a" /* default */])(Math.abs(step)));
+};
+
+
+/***/ }),
+/* 163 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__exponent__ = __webpack_require__(21);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(step, max) {
+ step = Math.abs(step), max = Math.abs(max) - step;
+ return Math.max(0, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__exponent__["a" /* default */])(max) - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__exponent__["a" /* default */])(step)) + 1;
+};
+
+
+/***/ }),
+/* 164 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return slice; });
+/* harmony export (immutable) */ __webpack_exports__["a"] = shuffle;
+var slice = Array.prototype.slice;
+
+function shuffle(array) {
+ var m = array.length,
+ t,
+ i;
+
+ while (m) {
+ i = Math.random() * m-- | 0;
+ t = array[m];
+ array[m] = array[i];
+ array[i] = t;
+ }
+
+ return array;
+}
+
+
+/***/ }),
+/* 165 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+function defaultSeparation(a, b) {
+ return a.parent === b.parent ? 1 : 2;
+}
+
+function meanX(children) {
+ return children.reduce(meanXReduce, 0) / children.length;
+}
+
+function meanXReduce(x, c) {
+ return x + c.x;
+}
+
+function maxY(children) {
+ return 1 + children.reduce(maxYReduce, 0);
+}
+
+function maxYReduce(y, c) {
+ return Math.max(y, c.y);
+}
+
+function leafLeft(node) {
+ var children;
+ while (children = node.children) node = children[0];
+ return node;
+}
+
+function leafRight(node) {
+ var children;
+ while (children = node.children) node = children[children.length - 1];
+ return node;
+}
+
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var separation = defaultSeparation,
+ dx = 1,
+ dy = 1,
+ nodeSize = false;
+
+ function cluster(root) {
+ var previousNode,
+ x = 0;
+
+ // First walk, computing the initial x & y values.
+ root.eachAfter(function(node) {
+ var children = node.children;
+ if (children) {
+ node.x = meanX(children);
+ node.y = maxY(children);
+ } else {
+ node.x = previousNode ? x += separation(node, previousNode) : 0;
+ node.y = 0;
+ previousNode = node;
+ }
+ });
+
+ var left = leafLeft(root),
+ right = leafRight(root),
+ x0 = left.x - separation(left, right) / 2,
+ x1 = right.x + separation(right, left) / 2;
+
+ // Second walk, normalizing x & y to the desired size.
+ return root.eachAfter(nodeSize ? function(node) {
+ node.x = (node.x - root.x) * dx;
+ node.y = (root.y - node.y) * dy;
+ } : function(node) {
+ node.x = (node.x - x0) / (x1 - x0) * dx;
+ node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;
+ });
+ }
+
+ cluster.separation = function(x) {
+ return arguments.length ? (separation = x, cluster) : separation;
+ };
+
+ cluster.size = function(x) {
+ return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);
+ };
+
+ cluster.nodeSize = function(x) {
+ return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);
+ };
+
+ return cluster;
+};
+
+
+/***/ }),
+/* 166 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var node = this, nodes = [node];
+ while (node = node.parent) {
+ nodes.push(node);
+ }
+ return nodes;
+};
+
+
+/***/ }),
+/* 167 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+function count(node) {
+ var sum = 0,
+ children = node.children,
+ i = children && children.length;
+ if (!i) sum = 1;
+ else while (--i >= 0) sum += children[i].value;
+ node.value = sum;
+}
+
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ return this.eachAfter(count);
+};
+
+
+/***/ }),
+/* 168 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var nodes = [];
+ this.each(function(node) {
+ nodes.push(node);
+ });
+ return nodes;
+};
+
+
+/***/ }),
+/* 169 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(callback) {
+ var node = this, current, next = [node], children, i, n;
+ do {
+ current = next.reverse(), next = [];
+ while (node = current.pop()) {
+ callback(node), children = node.children;
+ if (children) for (i = 0, n = children.length; i < n; ++i) {
+ next.push(children[i]);
+ }
+ }
+ } while (next.length);
+ return this;
+};
+
+
+/***/ }),
+/* 170 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(callback) {
+ var node = this, nodes = [node], next = [], children, i, n;
+ while (node = nodes.pop()) {
+ next.push(node), children = node.children;
+ if (children) for (i = 0, n = children.length; i < n; ++i) {
+ nodes.push(children[i]);
+ }
+ }
+ while (node = next.pop()) {
+ callback(node);
+ }
+ return this;
+};
+
+
+/***/ }),
+/* 171 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(callback) {
+ var node = this, nodes = [node], children, i;
+ while (node = nodes.pop()) {
+ callback(node), children = node.children;
+ if (children) for (i = children.length - 1; i >= 0; --i) {
+ nodes.push(children[i]);
+ }
+ }
+ return this;
+};
+
+
+/***/ }),
+/* 172 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var leaves = [];
+ this.eachBefore(function(node) {
+ if (!node.children) {
+ leaves.push(node);
+ }
+ });
+ return leaves;
+};
+
+
+/***/ }),
+/* 173 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var root = this, links = [];
+ root.each(function(node) {
+ if (node !== root) { // Don’t include the root’s parent, if any.
+ links.push({source: node.parent, target: node});
+ }
+ });
+ return links;
+};
+
+
+/***/ }),
+/* 174 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(end) {
+ var start = this,
+ ancestor = leastCommonAncestor(start, end),
+ nodes = [start];
+ while (start !== ancestor) {
+ start = start.parent;
+ nodes.push(start);
+ }
+ var k = nodes.length;
+ while (end !== ancestor) {
+ nodes.splice(k, 0, end);
+ end = end.parent;
+ }
+ return nodes;
+};
+
+function leastCommonAncestor(a, b) {
+ if (a === b) return a;
+ var aNodes = a.ancestors(),
+ bNodes = b.ancestors(),
+ c = null;
+ a = aNodes.pop();
+ b = bNodes.pop();
+ while (a === b) {
+ c = a;
+ a = aNodes.pop();
+ b = bNodes.pop();
+ }
+ return c;
+}
+
+
+/***/ }),
+/* 175 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(compare) {
+ return this.eachBefore(function(node) {
+ if (node.children) {
+ node.children.sort(compare);
+ }
+ });
+};
+
+
+/***/ }),
+/* 176 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(value) {
+ return this.eachAfter(function(node) {
+ var sum = +value(node.data) || 0,
+ children = node.children,
+ i = children && children.length;
+ while (--i >= 0) sum += children[i].value;
+ node.value = sum;
+ });
+};
+
+
+/***/ }),
+/* 177 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__siblings__ = __webpack_require__(78);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__accessors__ = __webpack_require__(36);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constant__ = __webpack_require__(76);
+
+
+
+
+function defaultRadius(d) {
+ return Math.sqrt(d.value);
+}
+
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var radius = null,
+ dx = 1,
+ dy = 1,
+ padding = __WEBPACK_IMPORTED_MODULE_2__constant__["a" /* constantZero */];
+
+ function pack(root) {
+ root.x = dx / 2, root.y = dy / 2;
+ if (radius) {
+ root.eachBefore(radiusLeaf(radius))
+ .eachAfter(packChildren(padding, 0.5))
+ .eachBefore(translateChild(1));
+ } else {
+ root.eachBefore(radiusLeaf(defaultRadius))
+ .eachAfter(packChildren(__WEBPACK_IMPORTED_MODULE_2__constant__["a" /* constantZero */], 1))
+ .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))
+ .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));
+ }
+ return root;
+ }
+
+ pack.radius = function(x) {
+ return arguments.length ? (radius = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__accessors__["b" /* optional */])(x), pack) : radius;
+ };
+
+ pack.size = function(x) {
+ return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];
+ };
+
+ pack.padding = function(x) {
+ return arguments.length ? (padding = typeof x === "function" ? x : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__constant__["b" /* default */])(+x), pack) : padding;
+ };
+
+ return pack;
+};
+
+function radiusLeaf(radius) {
+ return function(node) {
+ if (!node.children) {
+ node.r = Math.max(0, +radius(node) || 0);
+ }
+ };
+}
+
+function packChildren(padding, k) {
+ return function(node) {
+ if (children = node.children) {
+ var children,
+ i,
+ n = children.length,
+ r = padding(node) * k || 0,
+ e;
+
+ if (r) for (i = 0; i < n; ++i) children[i].r += r;
+ e = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__siblings__["b" /* packEnclose */])(children);
+ if (r) for (i = 0; i < n; ++i) children[i].r -= r;
+ node.r = e + r;
+ }
+ };
+}
+
+function translateChild(k) {
+ return function(node) {
+ var parent = node.parent;
+ node.r *= k;
+ if (parent) {
+ node.x = parent.x + k * node.x;
+ node.y = parent.y + k * node.y;
+ }
+ };
+}
+
+
+/***/ }),
+/* 178 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__treemap_round__ = __webpack_require__(79);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__treemap_dice__ = __webpack_require__(17);
+
+
+
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var dx = 1,
+ dy = 1,
+ padding = 0,
+ round = false;
+
+ function partition(root) {
+ var n = root.height + 1;
+ root.x0 =
+ root.y0 = padding;
+ root.x1 = dx;
+ root.y1 = dy / n;
+ root.eachBefore(positionNode(dy, n));
+ if (round) root.eachBefore(__WEBPACK_IMPORTED_MODULE_0__treemap_round__["a" /* default */]);
+ return root;
+ }
+
+ function positionNode(dy, n) {
+ return function(node) {
+ if (node.children) {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__treemap_dice__["a" /* default */])(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);
+ }
+ var x0 = node.x0,
+ y0 = node.y0,
+ x1 = node.x1 - padding,
+ y1 = node.y1 - padding;
+ if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
+ if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
+ node.x0 = x0;
+ node.y0 = y0;
+ node.x1 = x1;
+ node.y1 = y1;
+ };
+ }
+
+ partition.round = function(x) {
+ return arguments.length ? (round = !!x, partition) : round;
+ };
+
+ partition.size = function(x) {
+ return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];
+ };
+
+ partition.padding = function(x) {
+ return arguments.length ? (padding = +x, partition) : padding;
+ };
+
+ return partition;
+};
+
+
+/***/ }),
+/* 179 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__accessors__ = __webpack_require__(36);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__hierarchy_index__ = __webpack_require__(37);
+
+
+
+var keyPrefix = "$", // Protect against keys like “__proto__”.
+ preroot = {depth: -1},
+ ambiguous = {};
+
+function defaultId(d) {
+ return d.id;
+}
+
+function defaultParentId(d) {
+ return d.parentId;
+}
+
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var id = defaultId,
+ parentId = defaultParentId;
+
+ function stratify(data) {
+ var d,
+ i,
+ n = data.length,
+ root,
+ parent,
+ node,
+ nodes = new Array(n),
+ nodeId,
+ nodeKey,
+ nodeByKey = {};
+
+ for (i = 0; i < n; ++i) {
+ d = data[i], node = nodes[i] = new __WEBPACK_IMPORTED_MODULE_1__hierarchy_index__["b" /* Node */](d);
+ if ((nodeId = id(d, i, data)) != null && (nodeId += "")) {
+ nodeKey = keyPrefix + (node.id = nodeId);
+ nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;
+ }
+ }
+
+ for (i = 0; i < n; ++i) {
+ node = nodes[i], nodeId = parentId(data[i], i, data);
+ if (nodeId == null || !(nodeId += "")) {
+ if (root) throw new Error("multiple roots");
+ root = node;
+ } else {
+ parent = nodeByKey[keyPrefix + nodeId];
+ if (!parent) throw new Error("missing: " + nodeId);
+ if (parent === ambiguous) throw new Error("ambiguous: " + nodeId);
+ if (parent.children) parent.children.push(node);
+ else parent.children = [node];
+ node.parent = parent;
+ }
+ }
+
+ if (!root) throw new Error("no root");
+ root.parent = preroot;
+ root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(__WEBPACK_IMPORTED_MODULE_1__hierarchy_index__["c" /* computeHeight */]);
+ root.parent = null;
+ if (n > 0) throw new Error("cycle");
+
+ return root;
+ }
+
+ stratify.id = function(x) {
+ return arguments.length ? (id = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__accessors__["a" /* required */])(x), stratify) : id;
+ };
+
+ stratify.parentId = function(x) {
+ return arguments.length ? (parentId = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__accessors__["a" /* required */])(x), stratify) : parentId;
+ };
+
+ return stratify;
+};
+
+
+/***/ }),
+/* 180 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__hierarchy_index__ = __webpack_require__(37);
+
+
+function defaultSeparation(a, b) {
+ return a.parent === b.parent ? 1 : 2;
+}
+
+// function radialSeparation(a, b) {
+// return (a.parent === b.parent ? 1 : 2) / a.depth;
+// }
+
+// This function is used to traverse the left contour of a subtree (or
+// subforest). It returns the successor of v on this contour. This successor is
+// either given by the leftmost child of v or by the thread of v. The function
+// returns null if and only if v is on the highest level of its subtree.
+function nextLeft(v) {
+ var children = v.children;
+ return children ? children[0] : v.t;
+}
+
+// This function works analogously to nextLeft.
+function nextRight(v) {
+ var children = v.children;
+ return children ? children[children.length - 1] : v.t;
+}
+
+// Shifts the current subtree rooted at w+. This is done by increasing
+// prelim(w+) and mod(w+) by shift.
+function moveSubtree(wm, wp, shift) {
+ var change = shift / (wp.i - wm.i);
+ wp.c -= change;
+ wp.s += shift;
+ wm.c += change;
+ wp.z += shift;
+ wp.m += shift;
+}
+
+// All other shifts, applied to the smaller subtrees between w- and w+, are
+// performed by this function. To prepare the shifts, we have to adjust
+// change(w+), shift(w+), and change(w-).
+function executeShifts(v) {
+ var shift = 0,
+ change = 0,
+ children = v.children,
+ i = children.length,
+ w;
+ while (--i >= 0) {
+ w = children[i];
+ w.z += shift;
+ w.m += shift;
+ shift += w.s + (change += w.c);
+ }
+}
+
+// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,
+// returns the specified (default) ancestor.
+function nextAncestor(vim, v, ancestor) {
+ return vim.a.parent === v.parent ? vim.a : ancestor;
+}
+
+function TreeNode(node, i) {
+ this._ = node;
+ this.parent = null;
+ this.children = null;
+ this.A = null; // default ancestor
+ this.a = this; // ancestor
+ this.z = 0; // prelim
+ this.m = 0; // mod
+ this.c = 0; // change
+ this.s = 0; // shift
+ this.t = null; // thread
+ this.i = i; // number
+}
+
+TreeNode.prototype = Object.create(__WEBPACK_IMPORTED_MODULE_0__hierarchy_index__["b" /* Node */].prototype);
+
+function treeRoot(root) {
+ var tree = new TreeNode(root, 0),
+ node,
+ nodes = [tree],
+ child,
+ children,
+ i,
+ n;
+
+ while (node = nodes.pop()) {
+ if (children = node._.children) {
+ node.children = new Array(n = children.length);
+ for (i = n - 1; i >= 0; --i) {
+ nodes.push(child = node.children[i] = new TreeNode(children[i], i));
+ child.parent = node;
+ }
+ }
+ }
+
+ (tree.parent = new TreeNode(null, 0)).children = [tree];
+ return tree;
+}
+
+// Node-link tree diagram using the Reingold-Tilford "tidy" algorithm
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var separation = defaultSeparation,
+ dx = 1,
+ dy = 1,
+ nodeSize = null;
+
+ function tree(root) {
+ var t = treeRoot(root);
+
+ // Compute the layout using Buchheim et al.’s algorithm.
+ t.eachAfter(firstWalk), t.parent.m = -t.z;
+ t.eachBefore(secondWalk);
+
+ // If a fixed node size is specified, scale x and y.
+ if (nodeSize) root.eachBefore(sizeNode);
+
+ // If a fixed tree size is specified, scale x and y based on the extent.
+ // Compute the left-most, right-most, and depth-most nodes for extents.
+ else {
+ var left = root,
+ right = root,
+ bottom = root;
+ root.eachBefore(function(node) {
+ if (node.x < left.x) left = node;
+ if (node.x > right.x) right = node;
+ if (node.depth > bottom.depth) bottom = node;
+ });
+ var s = left === right ? 1 : separation(left, right) / 2,
+ tx = s - left.x,
+ kx = dx / (right.x + s + tx),
+ ky = dy / (bottom.depth || 1);
+ root.eachBefore(function(node) {
+ node.x = (node.x + tx) * kx;
+ node.y = node.depth * ky;
+ });
+ }
+
+ return root;
+ }
+
+ // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is
+ // applied recursively to the children of v, as well as the function
+ // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the
+ // node v is placed to the midpoint of its outermost children.
+ function firstWalk(v) {
+ var children = v.children,
+ siblings = v.parent.children,
+ w = v.i ? siblings[v.i - 1] : null;
+ if (children) {
+ executeShifts(v);
+ var midpoint = (children[0].z + children[children.length - 1].z) / 2;
+ if (w) {
+ v.z = w.z + separation(v._, w._);
+ v.m = v.z - midpoint;
+ } else {
+ v.z = midpoint;
+ }
+ } else if (w) {
+ v.z = w.z + separation(v._, w._);
+ }
+ v.parent.A = apportion(v, w, v.parent.A || siblings[0]);
+ }
+
+ // Computes all real x-coordinates by summing up the modifiers recursively.
+ function secondWalk(v) {
+ v._.x = v.z + v.parent.m;
+ v.m += v.parent.m;
+ }
+
+ // The core of the algorithm. Here, a new subtree is combined with the
+ // previous subtrees. Threads are used to traverse the inside and outside
+ // contours of the left and right subtree up to the highest common level. The
+ // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the
+ // superscript o means outside and i means inside, the subscript - means left
+ // subtree and + means right subtree. For summing up the modifiers along the
+ // contour, we use respective variables si+, si-, so-, and so+. Whenever two
+ // nodes of the inside contours conflict, we compute the left one of the
+ // greatest uncommon ancestors using the function ANCESTOR and call MOVE
+ // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.
+ // Finally, we add a new thread (if necessary).
+ function apportion(v, w, ancestor) {
+ if (w) {
+ var vip = v,
+ vop = v,
+ vim = w,
+ vom = vip.parent.children[0],
+ sip = vip.m,
+ sop = vop.m,
+ sim = vim.m,
+ som = vom.m,
+ shift;
+ while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {
+ vom = nextLeft(vom);
+ vop = nextRight(vop);
+ vop.a = v;
+ shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);
+ if (shift > 0) {
+ moveSubtree(nextAncestor(vim, v, ancestor), v, shift);
+ sip += shift;
+ sop += shift;
+ }
+ sim += vim.m;
+ sip += vip.m;
+ som += vom.m;
+ sop += vop.m;
+ }
+ if (vim && !nextRight(vop)) {
+ vop.t = vim;
+ vop.m += sim - sop;
+ }
+ if (vip && !nextLeft(vom)) {
+ vom.t = vip;
+ vom.m += sip - som;
+ ancestor = v;
+ }
+ }
+ return ancestor;
+ }
+
+ function sizeNode(node) {
+ node.x *= dx;
+ node.y = node.depth * dy;
+ }
+
+ tree.separation = function(x) {
+ return arguments.length ? (separation = x, tree) : separation;
+ };
+
+ tree.size = function(x) {
+ return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);
+ };
+
+ tree.nodeSize = function(x) {
+ return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);
+ };
+
+ return tree;
+};
+
+
+/***/ }),
+/* 181 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(parent, x0, y0, x1, y1) {
+ var nodes = parent.children,
+ i, n = nodes.length,
+ sum, sums = new Array(n + 1);
+
+ for (sums[0] = sum = i = 0; i < n; ++i) {
+ sums[i + 1] = sum += nodes[i].value;
+ }
+
+ partition(0, n, parent.value, x0, y0, x1, y1);
+
+ function partition(i, j, value, x0, y0, x1, y1) {
+ if (i >= j - 1) {
+ var node = nodes[i];
+ node.x0 = x0, node.y0 = y0;
+ node.x1 = x1, node.y1 = y1;
+ return;
+ }
+
+ var valueOffset = sums[i],
+ valueTarget = (value / 2) + valueOffset,
+ k = i + 1,
+ hi = j - 1;
+
+ while (k < hi) {
+ var mid = k + hi >>> 1;
+ if (sums[mid] < valueTarget) k = mid + 1;
+ else hi = mid;
+ }
+
+ if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;
+
+ var valueLeft = sums[k] - valueOffset,
+ valueRight = value - valueLeft;
+
+ if ((x1 - x0) > (y1 - y0)) {
+ var xk = (x0 * valueRight + x1 * valueLeft) / value;
+ partition(i, k, valueLeft, x0, y0, xk, y1);
+ partition(k, j, valueRight, xk, y0, x1, y1);
+ } else {
+ var yk = (y0 * valueRight + y1 * valueLeft) / value;
+ partition(i, k, valueLeft, x0, y0, x1, yk);
+ partition(k, j, valueRight, x0, yk, x1, y1);
+ }
+ }
+};
+
+
+/***/ }),
+/* 182 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__round__ = __webpack_require__(79);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__squarify__ = __webpack_require__(38);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__accessors__ = __webpack_require__(36);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constant__ = __webpack_require__(76);
+
+
+
+
+
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var tile = __WEBPACK_IMPORTED_MODULE_1__squarify__["a" /* default */],
+ round = false,
+ dx = 1,
+ dy = 1,
+ paddingStack = [0],
+ paddingInner = __WEBPACK_IMPORTED_MODULE_3__constant__["a" /* constantZero */],
+ paddingTop = __WEBPACK_IMPORTED_MODULE_3__constant__["a" /* constantZero */],
+ paddingRight = __WEBPACK_IMPORTED_MODULE_3__constant__["a" /* constantZero */],
+ paddingBottom = __WEBPACK_IMPORTED_MODULE_3__constant__["a" /* constantZero */],
+ paddingLeft = __WEBPACK_IMPORTED_MODULE_3__constant__["a" /* constantZero */];
+
+ function treemap(root) {
+ root.x0 =
+ root.y0 = 0;
+ root.x1 = dx;
+ root.y1 = dy;
+ root.eachBefore(positionNode);
+ paddingStack = [0];
+ if (round) root.eachBefore(__WEBPACK_IMPORTED_MODULE_0__round__["a" /* default */]);
+ return root;
+ }
+
+ function positionNode(node) {
+ var p = paddingStack[node.depth],
+ x0 = node.x0 + p,
+ y0 = node.y0 + p,
+ x1 = node.x1 - p,
+ y1 = node.y1 - p;
+ if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
+ if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
+ node.x0 = x0;
+ node.y0 = y0;
+ node.x1 = x1;
+ node.y1 = y1;
+ if (node.children) {
+ p = paddingStack[node.depth + 1] = paddingInner(node) / 2;
+ x0 += paddingLeft(node) - p;
+ y0 += paddingTop(node) - p;
+ x1 -= paddingRight(node) - p;
+ y1 -= paddingBottom(node) - p;
+ if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
+ if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
+ tile(node, x0, y0, x1, y1);
+ }
+ }
+
+ treemap.round = function(x) {
+ return arguments.length ? (round = !!x, treemap) : round;
+ };
+
+ treemap.size = function(x) {
+ return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];
+ };
+
+ treemap.tile = function(x) {
+ return arguments.length ? (tile = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__accessors__["a" /* required */])(x), treemap) : tile;
+ };
+
+ treemap.padding = function(x) {
+ return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();
+ };
+
+ treemap.paddingInner = function(x) {
+ return arguments.length ? (paddingInner = typeof x === "function" ? x : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__constant__["b" /* default */])(+x), treemap) : paddingInner;
+ };
+
+ treemap.paddingOuter = function(x) {
+ return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();
+ };
+
+ treemap.paddingTop = function(x) {
+ return arguments.length ? (paddingTop = typeof x === "function" ? x : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__constant__["b" /* default */])(+x), treemap) : paddingTop;
+ };
+
+ treemap.paddingRight = function(x) {
+ return arguments.length ? (paddingRight = typeof x === "function" ? x : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__constant__["b" /* default */])(+x), treemap) : paddingRight;
+ };
+
+ treemap.paddingBottom = function(x) {
+ return arguments.length ? (paddingBottom = typeof x === "function" ? x : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__constant__["b" /* default */])(+x), treemap) : paddingBottom;
+ };
+
+ treemap.paddingLeft = function(x) {
+ return arguments.length ? (paddingLeft = typeof x === "function" ? x : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__constant__["b" /* default */])(+x), treemap) : paddingLeft;
+ };
+
+ return treemap;
+};
+
+
+/***/ }),
+/* 183 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__dice__ = __webpack_require__(17);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__slice__ = __webpack_require__(22);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__squarify__ = __webpack_require__(38);
+
+
+
+
+/* harmony default export */ __webpack_exports__["a"] = (function custom(ratio) {
+
+ function resquarify(parent, x0, y0, x1, y1) {
+ if ((rows = parent._squarify) && (rows.ratio === ratio)) {
+ var rows,
+ row,
+ nodes,
+ i,
+ j = -1,
+ n,
+ m = rows.length,
+ value = parent.value;
+
+ while (++j < m) {
+ row = rows[j], nodes = row.children;
+ for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;
+ if (row.dice) __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__dice__["a" /* default */])(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);
+ else __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__slice__["a" /* default */])(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);
+ value -= row.value;
+ }
+ } else {
+ parent._squarify = rows = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__squarify__["b" /* squarifyRatio */])(ratio, parent, x0, y0, x1, y1);
+ rows.ratio = ratio;
+ }
+ }
+
+ resquarify.ratio = function(x) {
+ return custom((x = +x) > 1 ? x : 1);
+ };
+
+ return resquarify;
+})(__WEBPACK_IMPORTED_MODULE_2__squarify__["c" /* phi */]);
+
+
+/***/ }),
+/* 184 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__dice__ = __webpack_require__(17);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__slice__ = __webpack_require__(22);
+
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(parent, x0, y0, x1, y1) {
+ (parent.depth & 1 ? __WEBPACK_IMPORTED_MODULE_1__slice__["a" /* default */] : __WEBPACK_IMPORTED_MODULE_0__dice__["a" /* default */])(parent, x0, y0, x1, y1);
+};
+
+
+/***/ }),
+/* 185 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_color__ = __webpack_require__(6);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__color__ = __webpack_require__(18);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return cubehelixLong; });
+
+
+
+function cubehelix(hue) {
+ return (function cubehelixGamma(y) {
+ y = +y;
+
+ function cubehelix(start, end) {
+ var h = hue((start = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["b" /* cubehelix */])(start)).h, (end = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["b" /* cubehelix */])(end)).h),
+ s = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__color__["a" /* default */])(start.s, end.s),
+ l = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__color__["a" /* default */])(start.l, end.l),
+ opacity = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__color__["a" /* default */])(start.opacity, end.opacity);
+ return function(t) {
+ start.h = h(t);
+ start.s = s(t);
+ start.l = l(Math.pow(t, y));
+ start.opacity = opacity(t);
+ return start + "";
+ };
+ }
+
+ cubehelix.gamma = cubehelixGamma;
+
+ return cubehelix;
+ })(1);
+}
+
+/* harmony default export */ __webpack_exports__["a"] = cubehelix(__WEBPACK_IMPORTED_MODULE_1__color__["b" /* hue */]);
+var cubehelixLong = cubehelix(__WEBPACK_IMPORTED_MODULE_1__color__["a" /* default */]);
+
+
+/***/ }),
+/* 186 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_color__ = __webpack_require__(6);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__color__ = __webpack_require__(18);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return hclLong; });
+
+
+
+function hcl(hue) {
+ return function(start, end) {
+ var h = hue((start = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["c" /* hcl */])(start)).h, (end = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["c" /* hcl */])(end)).h),
+ c = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__color__["a" /* default */])(start.c, end.c),
+ l = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__color__["a" /* default */])(start.l, end.l),
+ opacity = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__color__["a" /* default */])(start.opacity, end.opacity);
+ return function(t) {
+ start.h = h(t);
+ start.c = c(t);
+ start.l = l(t);
+ start.opacity = opacity(t);
+ return start + "";
+ };
+ }
+}
+
+/* harmony default export */ __webpack_exports__["a"] = hcl(__WEBPACK_IMPORTED_MODULE_1__color__["b" /* hue */]);
+var hclLong = hcl(__WEBPACK_IMPORTED_MODULE_1__color__["a" /* default */]);
+
+
+/***/ }),
+/* 187 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_color__ = __webpack_require__(6);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__color__ = __webpack_require__(18);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return hslLong; });
+
+
+
+function hsl(hue) {
+ return function(start, end) {
+ var h = hue((start = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["e" /* hsl */])(start)).h, (end = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["e" /* hsl */])(end)).h),
+ s = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__color__["a" /* default */])(start.s, end.s),
+ l = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__color__["a" /* default */])(start.l, end.l),
+ opacity = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__color__["a" /* default */])(start.opacity, end.opacity);
+ return function(t) {
+ start.h = h(t);
+ start.s = s(t);
+ start.l = l(t);
+ start.opacity = opacity(t);
+ return start + "";
+ };
+ }
+}
+
+/* harmony default export */ __webpack_exports__["a"] = hsl(__WEBPACK_IMPORTED_MODULE_1__color__["b" /* hue */]);
+var hslLong = hsl(__WEBPACK_IMPORTED_MODULE_1__color__["a" /* default */]);
+
+
+/***/ }),
+/* 188 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_color__ = __webpack_require__(6);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__color__ = __webpack_require__(18);
+/* harmony export (immutable) */ __webpack_exports__["a"] = lab;
+
+
+
+function lab(start, end) {
+ var l = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__color__["a" /* default */])((start = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["d" /* lab */])(start)).l, (end = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["d" /* lab */])(end)).l),
+ a = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__color__["a" /* default */])(start.a, end.a),
+ b = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__color__["a" /* default */])(start.b, end.b),
+ opacity = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__color__["a" /* default */])(start.opacity, end.opacity);
+ return function(t) {
+ start.l = l(t);
+ start.a = a(t);
+ start.b = b(t);
+ start.opacity = opacity(t);
+ return start + "";
+ };
+}
+
+
+/***/ }),
+/* 189 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(interpolator, n) {
+ var samples = new Array(n);
+ for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));
+ return samples;
+};
+
+
+/***/ }),
+/* 190 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(a, b) {
+ return a = +a, b -= a, function(t) {
+ return Math.round(a + b * t);
+ };
+};
+
+
+/***/ }),
+/* 191 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return identity; });
+var degrees = 180 / Math.PI;
+
+var identity = {
+ translateX: 0,
+ translateY: 0,
+ rotate: 0,
+ skewX: 0,
+ scaleX: 1,
+ scaleY: 1
+};
+
+/* harmony default export */ __webpack_exports__["b"] = function(a, b, c, d, e, f) {
+ var scaleX, scaleY, skewX;
+ if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;
+ if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;
+ if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;
+ if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;
+ return {
+ translateX: e,
+ translateY: f,
+ rotate: Math.atan2(b, a) * degrees,
+ skewX: Math.atan(skewX) * degrees,
+ scaleX: scaleX,
+ scaleY: scaleY
+ };
+};
+
+
+/***/ }),
+/* 192 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__number__ = __webpack_require__(23);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__parse__ = __webpack_require__(193);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return interpolateTransformCss; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return interpolateTransformSvg; });
+
+
+
+function interpolateTransform(parse, pxComma, pxParen, degParen) {
+
+ function pop(s) {
+ return s.length ? s.pop() + " " : "";
+ }
+
+ function translate(xa, ya, xb, yb, s, q) {
+ if (xa !== xb || ya !== yb) {
+ var i = s.push("translate(", null, pxComma, null, pxParen);
+ q.push({i: i - 4, x: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__number__["a" /* default */])(xa, xb)}, {i: i - 2, x: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__number__["a" /* default */])(ya, yb)});
+ } else if (xb || yb) {
+ s.push("translate(" + xb + pxComma + yb + pxParen);
+ }
+ }
+
+ function rotate(a, b, s, q) {
+ if (a !== b) {
+ if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path
+ q.push({i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__number__["a" /* default */])(a, b)});
+ } else if (b) {
+ s.push(pop(s) + "rotate(" + b + degParen);
+ }
+ }
+
+ function skewX(a, b, s, q) {
+ if (a !== b) {
+ q.push({i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__number__["a" /* default */])(a, b)});
+ } else if (b) {
+ s.push(pop(s) + "skewX(" + b + degParen);
+ }
+ }
+
+ function scale(xa, ya, xb, yb, s, q) {
+ if (xa !== xb || ya !== yb) {
+ var i = s.push(pop(s) + "scale(", null, ",", null, ")");
+ q.push({i: i - 4, x: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__number__["a" /* default */])(xa, xb)}, {i: i - 2, x: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__number__["a" /* default */])(ya, yb)});
+ } else if (xb !== 1 || yb !== 1) {
+ s.push(pop(s) + "scale(" + xb + "," + yb + ")");
+ }
+ }
+
+ return function(a, b) {
+ var s = [], // string constants and placeholders
+ q = []; // number interpolators
+ a = parse(a), b = parse(b);
+ translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);
+ rotate(a.rotate, b.rotate, s, q);
+ skewX(a.skewX, b.skewX, s, q);
+ scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);
+ a = b = null; // gc
+ return function(t) {
+ var i = -1, n = q.length, o;
+ while (++i < n) s[(o = q[i]).i] = o.x(t);
+ return s.join("");
+ };
+ };
+}
+
+var interpolateTransformCss = interpolateTransform(__WEBPACK_IMPORTED_MODULE_1__parse__["a" /* parseCss */], "px, ", "px)", "deg)");
+var interpolateTransformSvg = interpolateTransform(__WEBPACK_IMPORTED_MODULE_1__parse__["b" /* parseSvg */], ", ", ")", ")");
+
+
+/***/ }),
+/* 193 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__decompose__ = __webpack_require__(191);
+/* harmony export (immutable) */ __webpack_exports__["a"] = parseCss;
+/* harmony export (immutable) */ __webpack_exports__["b"] = parseSvg;
+
+
+var cssNode,
+ cssRoot,
+ cssView,
+ svgNode;
+
+function parseCss(value) {
+ if (value === "none") return __WEBPACK_IMPORTED_MODULE_0__decompose__["a" /* identity */];
+ if (!cssNode) cssNode = document.createElement("DIV"), cssRoot = document.documentElement, cssView = document.defaultView;
+ cssNode.style.transform = value;
+ value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue("transform");
+ cssRoot.removeChild(cssNode);
+ value = value.slice(7, -1).split(",");
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__decompose__["b" /* default */])(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);
+}
+
+function parseSvg(value) {
+ if (value == null) return __WEBPACK_IMPORTED_MODULE_0__decompose__["a" /* identity */];
+ if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g");
+ svgNode.setAttribute("transform", value);
+ if (!(value = svgNode.transform.baseVal.consolidate())) return __WEBPACK_IMPORTED_MODULE_0__decompose__["a" /* identity */];
+ value = value.matrix;
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__decompose__["b" /* default */])(value.a, value.b, value.c, value.d, value.e, value.f);
+}
+
+
+/***/ }),
+/* 194 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+var rho = Math.SQRT2,
+ rho2 = 2,
+ rho4 = 4,
+ epsilon2 = 1e-12;
+
+function cosh(x) {
+ return ((x = Math.exp(x)) + 1 / x) / 2;
+}
+
+function sinh(x) {
+ return ((x = Math.exp(x)) - 1 / x) / 2;
+}
+
+function tanh(x) {
+ return ((x = Math.exp(2 * x)) - 1) / (x + 1);
+}
+
+// p0 = [ux0, uy0, w0]
+// p1 = [ux1, uy1, w1]
+/* harmony default export */ __webpack_exports__["a"] = function(p0, p1) {
+ var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],
+ ux1 = p1[0], uy1 = p1[1], w1 = p1[2],
+ dx = ux1 - ux0,
+ dy = uy1 - uy0,
+ d2 = dx * dx + dy * dy,
+ i,
+ S;
+
+ // Special case for u0 ≅ u1.
+ if (d2 < epsilon2) {
+ S = Math.log(w1 / w0) / rho;
+ i = function(t) {
+ return [
+ ux0 + t * dx,
+ uy0 + t * dy,
+ w0 * Math.exp(rho * t * S)
+ ];
+ }
+ }
+
+ // General case.
+ else {
+ var d1 = Math.sqrt(d2),
+ b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),
+ b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),
+ r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),
+ r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);
+ S = (r1 - r0) / rho;
+ i = function(t) {
+ var s = t * S,
+ coshr0 = cosh(r0),
+ u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));
+ return [
+ ux0 + u * dx,
+ uy0 + u * dy,
+ w0 * coshr0 / cosh(rho * s + r0)
+ ];
+ }
+ }
+
+ i.duration = S * 1000;
+
+ return i;
+};
+
+
+/***/ }),
+/* 195 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_quadtree__ = __webpack_require__(201);
+/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "quadtree", function() { return __WEBPACK_IMPORTED_MODULE_0__src_quadtree__["a"]; });
+
+
+
+/***/ }),
+/* 196 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (immutable) */ __webpack_exports__["b"] = addAll;
+/* harmony default export */ __webpack_exports__["a"] = function(d) {
+ var x = +this._x.call(null, d),
+ y = +this._y.call(null, d);
+ return add(this.cover(x, y), x, y, d);
+};
+
+function add(tree, x, y, d) {
+ if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points
+
+ var parent,
+ node = tree._root,
+ leaf = {data: d},
+ x0 = tree._x0,
+ y0 = tree._y0,
+ x1 = tree._x1,
+ y1 = tree._y1,
+ xm,
+ ym,
+ xp,
+ yp,
+ right,
+ bottom,
+ i,
+ j;
+
+ // If the tree is empty, initialize the root as a leaf.
+ if (!node) return tree._root = leaf, tree;
+
+ // Find the existing leaf for the new point, or add it.
+ while (node.length) {
+ if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;
+ if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;
+ if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;
+ }
+
+ // Is the new point is exactly coincident with the existing point?
+ xp = +tree._x.call(null, node.data);
+ yp = +tree._y.call(null, node.data);
+ if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;
+
+ // Otherwise, split the leaf node until the old and new point are separated.
+ do {
+ parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);
+ if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;
+ if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;
+ } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));
+ return parent[j] = node, parent[i] = leaf, tree;
+}
+
+function addAll(data) {
+ var d, i, n = data.length,
+ x,
+ y,
+ xz = new Array(n),
+ yz = new Array(n),
+ x0 = Infinity,
+ y0 = Infinity,
+ x1 = -Infinity,
+ y1 = -Infinity;
+
+ // Compute the points and their extent.
+ for (i = 0; i < n; ++i) {
+ if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;
+ xz[i] = x;
+ yz[i] = y;
+ if (x < x0) x0 = x;
+ if (x > x1) x1 = x;
+ if (y < y0) y0 = y;
+ if (y > y1) y1 = y;
+ }
+
+ // If there were no (valid) points, inherit the existing extent.
+ if (x1 < x0) x0 = this._x0, x1 = this._x1;
+ if (y1 < y0) y0 = this._y0, y1 = this._y1;
+
+ // Expand the tree to cover the new points.
+ this.cover(x0, y0).cover(x1, y1);
+
+ // Add the new points.
+ for (i = 0; i < n; ++i) {
+ add(this, xz[i], yz[i], data[i]);
+ }
+
+ return this;
+}
+
+
+/***/ }),
+/* 197 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(x, y) {
+ if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points
+
+ var x0 = this._x0,
+ y0 = this._y0,
+ x1 = this._x1,
+ y1 = this._y1;
+
+ // If the quadtree has no extent, initialize them.
+ // Integer extent are necessary so that if we later double the extent,
+ // the existing quadrant boundaries don’t change due to floating point error!
+ if (isNaN(x0)) {
+ x1 = (x0 = Math.floor(x)) + 1;
+ y1 = (y0 = Math.floor(y)) + 1;
+ }
+
+ // Otherwise, double repeatedly to cover.
+ else if (x0 > x || x > x1 || y0 > y || y > y1) {
+ var z = x1 - x0,
+ node = this._root,
+ parent,
+ i;
+
+ switch (i = (y < (y0 + y1) / 2) << 1 | (x < (x0 + x1) / 2)) {
+ case 0: {
+ do parent = new Array(4), parent[i] = node, node = parent;
+ while (z *= 2, x1 = x0 + z, y1 = y0 + z, x > x1 || y > y1);
+ break;
+ }
+ case 1: {
+ do parent = new Array(4), parent[i] = node, node = parent;
+ while (z *= 2, x0 = x1 - z, y1 = y0 + z, x0 > x || y > y1);
+ break;
+ }
+ case 2: {
+ do parent = new Array(4), parent[i] = node, node = parent;
+ while (z *= 2, x1 = x0 + z, y0 = y1 - z, x > x1 || y0 > y);
+ break;
+ }
+ case 3: {
+ do parent = new Array(4), parent[i] = node, node = parent;
+ while (z *= 2, x0 = x1 - z, y0 = y1 - z, x0 > x || y0 > y);
+ break;
+ }
+ }
+
+ if (this._root && this._root.length) this._root = node;
+ }
+
+ // If the quadtree covers the point already, just return.
+ else return this;
+
+ this._x0 = x0;
+ this._y0 = y0;
+ this._x1 = x1;
+ this._y1 = y1;
+ return this;
+};
+
+
+/***/ }),
+/* 198 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var data = [];
+ this.visit(function(node) {
+ if (!node.length) do data.push(node.data); while (node = node.next)
+ });
+ return data;
+};
+
+
+/***/ }),
+/* 199 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(_) {
+ return arguments.length
+ ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])
+ : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];
+};
+
+
+/***/ }),
+/* 200 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__quad__ = __webpack_require__(41);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(x, y, radius) {
+ var data,
+ x0 = this._x0,
+ y0 = this._y0,
+ x1,
+ y1,
+ x2,
+ y2,
+ x3 = this._x1,
+ y3 = this._y1,
+ quads = [],
+ node = this._root,
+ q,
+ i;
+
+ if (node) quads.push(new __WEBPACK_IMPORTED_MODULE_0__quad__["a" /* default */](node, x0, y0, x3, y3));
+ if (radius == null) radius = Infinity;
+ else {
+ x0 = x - radius, y0 = y - radius;
+ x3 = x + radius, y3 = y + radius;
+ radius *= radius;
+ }
+
+ while (q = quads.pop()) {
+
+ // Stop searching if this quadrant can’t contain a closer node.
+ if (!(node = q.node)
+ || (x1 = q.x0) > x3
+ || (y1 = q.y0) > y3
+ || (x2 = q.x1) < x0
+ || (y2 = q.y1) < y0) continue;
+
+ // Bisect the current quadrant.
+ if (node.length) {
+ var xm = (x1 + x2) / 2,
+ ym = (y1 + y2) / 2;
+
+ quads.push(
+ new __WEBPACK_IMPORTED_MODULE_0__quad__["a" /* default */](node[3], xm, ym, x2, y2),
+ new __WEBPACK_IMPORTED_MODULE_0__quad__["a" /* default */](node[2], x1, ym, xm, y2),
+ new __WEBPACK_IMPORTED_MODULE_0__quad__["a" /* default */](node[1], xm, y1, x2, ym),
+ new __WEBPACK_IMPORTED_MODULE_0__quad__["a" /* default */](node[0], x1, y1, xm, ym)
+ );
+
+ // Visit the closest quadrant first.
+ if (i = (y >= ym) << 1 | (x >= xm)) {
+ q = quads[quads.length - 1];
+ quads[quads.length - 1] = quads[quads.length - 1 - i];
+ quads[quads.length - 1 - i] = q;
+ }
+ }
+
+ // Visit this point. (Visiting coincident points isn’t necessary!)
+ else {
+ var dx = x - +this._x.call(null, node.data),
+ dy = y - +this._y.call(null, node.data),
+ d2 = dx * dx + dy * dy;
+ if (d2 < radius) {
+ var d = Math.sqrt(radius = d2);
+ x0 = x - d, y0 = y - d;
+ x3 = x + d, y3 = y + d;
+ data = node.data;
+ }
+ }
+ }
+
+ return data;
+};
+
+
+/***/ }),
+/* 201 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__add__ = __webpack_require__(196);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__cover__ = __webpack_require__(197);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__data__ = __webpack_require__(198);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__extent__ = __webpack_require__(199);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__find__ = __webpack_require__(200);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__remove__ = __webpack_require__(202);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__root__ = __webpack_require__(203);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__size__ = __webpack_require__(204);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__visit__ = __webpack_require__(205);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__visitAfter__ = __webpack_require__(206);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__x__ = __webpack_require__(207);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__y__ = __webpack_require__(208);
+/* harmony export (immutable) */ __webpack_exports__["a"] = quadtree;
+
+
+
+
+
+
+
+
+
+
+
+
+
+function quadtree(nodes, x, y) {
+ var tree = new Quadtree(x == null ? __WEBPACK_IMPORTED_MODULE_10__x__["a" /* defaultX */] : x, y == null ? __WEBPACK_IMPORTED_MODULE_11__y__["a" /* defaultY */] : y, NaN, NaN, NaN, NaN);
+ return nodes == null ? tree : tree.addAll(nodes);
+}
+
+function Quadtree(x, y, x0, y0, x1, y1) {
+ this._x = x;
+ this._y = y;
+ this._x0 = x0;
+ this._y0 = y0;
+ this._x1 = x1;
+ this._y1 = y1;
+ this._root = undefined;
+}
+
+function leaf_copy(leaf) {
+ var copy = {data: leaf.data}, next = copy;
+ while (leaf = leaf.next) next = next.next = {data: leaf.data};
+ return copy;
+}
+
+var treeProto = quadtree.prototype = Quadtree.prototype;
+
+treeProto.copy = function() {
+ var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),
+ node = this._root,
+ nodes,
+ child;
+
+ if (!node) return copy;
+
+ if (!node.length) return copy._root = leaf_copy(node), copy;
+
+ nodes = [{source: node, target: copy._root = new Array(4)}];
+ while (node = nodes.pop()) {
+ for (var i = 0; i < 4; ++i) {
+ if (child = node.source[i]) {
+ if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});
+ else node.target[i] = leaf_copy(child);
+ }
+ }
+ }
+
+ return copy;
+};
+
+treeProto.add = __WEBPACK_IMPORTED_MODULE_0__add__["a" /* default */];
+treeProto.addAll = __WEBPACK_IMPORTED_MODULE_0__add__["b" /* addAll */];
+treeProto.cover = __WEBPACK_IMPORTED_MODULE_1__cover__["a" /* default */];
+treeProto.data = __WEBPACK_IMPORTED_MODULE_2__data__["a" /* default */];
+treeProto.extent = __WEBPACK_IMPORTED_MODULE_3__extent__["a" /* default */];
+treeProto.find = __WEBPACK_IMPORTED_MODULE_4__find__["a" /* default */];
+treeProto.remove = __WEBPACK_IMPORTED_MODULE_5__remove__["a" /* default */];
+treeProto.removeAll = __WEBPACK_IMPORTED_MODULE_5__remove__["b" /* removeAll */];
+treeProto.root = __WEBPACK_IMPORTED_MODULE_6__root__["a" /* default */];
+treeProto.size = __WEBPACK_IMPORTED_MODULE_7__size__["a" /* default */];
+treeProto.visit = __WEBPACK_IMPORTED_MODULE_8__visit__["a" /* default */];
+treeProto.visitAfter = __WEBPACK_IMPORTED_MODULE_9__visitAfter__["a" /* default */];
+treeProto.x = __WEBPACK_IMPORTED_MODULE_10__x__["b" /* default */];
+treeProto.y = __WEBPACK_IMPORTED_MODULE_11__y__["b" /* default */];
+
+
+/***/ }),
+/* 202 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (immutable) */ __webpack_exports__["b"] = removeAll;
+/* harmony default export */ __webpack_exports__["a"] = function(d) {
+ if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points
+
+ var parent,
+ node = this._root,
+ retainer,
+ previous,
+ next,
+ x0 = this._x0,
+ y0 = this._y0,
+ x1 = this._x1,
+ y1 = this._y1,
+ x,
+ y,
+ xm,
+ ym,
+ right,
+ bottom,
+ i,
+ j;
+
+ // If the tree is empty, initialize the root as a leaf.
+ if (!node) return this;
+
+ // Find the leaf node for the point.
+ // While descending, also retain the deepest parent with a non-removed sibling.
+ if (node.length) while (true) {
+ if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;
+ if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;
+ if (!(parent = node, node = node[i = bottom << 1 | right])) return this;
+ if (!node.length) break;
+ if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;
+ }
+
+ // Find the point to remove.
+ while (node.data !== d) if (!(previous = node, node = node.next)) return this;
+ if (next = node.next) delete node.next;
+
+ // If there are multiple coincident points, remove just the point.
+ if (previous) return (next ? previous.next = next : delete previous.next), this;
+
+ // If this is the root point, remove it.
+ if (!parent) return this._root = next, this;
+
+ // Remove this leaf.
+ next ? parent[i] = next : delete parent[i];
+
+ // If the parent now contains exactly one leaf, collapse superfluous parents.
+ if ((node = parent[0] || parent[1] || parent[2] || parent[3])
+ && node === (parent[3] || parent[2] || parent[1] || parent[0])
+ && !node.length) {
+ if (retainer) retainer[j] = node;
+ else this._root = node;
+ }
+
+ return this;
+};
+
+function removeAll(data) {
+ for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);
+ return this;
+}
+
+
+/***/ }),
+/* 203 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ return this._root;
+};
+
+
+/***/ }),
+/* 204 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var size = 0;
+ this.visit(function(node) {
+ if (!node.length) do ++size; while (node = node.next)
+ });
+ return size;
+};
+
+
+/***/ }),
+/* 205 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__quad__ = __webpack_require__(41);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(callback) {
+ var quads = [], q, node = this._root, child, x0, y0, x1, y1;
+ if (node) quads.push(new __WEBPACK_IMPORTED_MODULE_0__quad__["a" /* default */](node, this._x0, this._y0, this._x1, this._y1));
+ while (q = quads.pop()) {
+ if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {
+ var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;
+ if (child = node[3]) quads.push(new __WEBPACK_IMPORTED_MODULE_0__quad__["a" /* default */](child, xm, ym, x1, y1));
+ if (child = node[2]) quads.push(new __WEBPACK_IMPORTED_MODULE_0__quad__["a" /* default */](child, x0, ym, xm, y1));
+ if (child = node[1]) quads.push(new __WEBPACK_IMPORTED_MODULE_0__quad__["a" /* default */](child, xm, y0, x1, ym));
+ if (child = node[0]) quads.push(new __WEBPACK_IMPORTED_MODULE_0__quad__["a" /* default */](child, x0, y0, xm, ym));
+ }
+ }
+ return this;
+};
+
+
+/***/ }),
+/* 206 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__quad__ = __webpack_require__(41);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(callback) {
+ var quads = [], next = [], q;
+ if (this._root) quads.push(new __WEBPACK_IMPORTED_MODULE_0__quad__["a" /* default */](this._root, this._x0, this._y0, this._x1, this._y1));
+ while (q = quads.pop()) {
+ var node = q.node;
+ if (node.length) {
+ var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;
+ if (child = node[0]) quads.push(new __WEBPACK_IMPORTED_MODULE_0__quad__["a" /* default */](child, x0, y0, xm, ym));
+ if (child = node[1]) quads.push(new __WEBPACK_IMPORTED_MODULE_0__quad__["a" /* default */](child, xm, y0, x1, ym));
+ if (child = node[2]) quads.push(new __WEBPACK_IMPORTED_MODULE_0__quad__["a" /* default */](child, x0, ym, xm, y1));
+ if (child = node[3]) quads.push(new __WEBPACK_IMPORTED_MODULE_0__quad__["a" /* default */](child, xm, ym, x1, y1));
+ }
+ next.push(q);
+ }
+ while (q = next.pop()) {
+ callback(q.node, q.x0, q.y0, q.x1, q.y1);
+ }
+ return this;
+};
+
+
+/***/ }),
+/* 207 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (immutable) */ __webpack_exports__["a"] = defaultX;
+function defaultX(d) {
+ return d[0];
+}
+
+/* harmony default export */ __webpack_exports__["b"] = function(_) {
+ return arguments.length ? (this._x = _, this) : this._x;
+};
+
+
+/***/ }),
+/* 208 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (immutable) */ __webpack_exports__["a"] = defaultY;
+function defaultY(d) {
+ return d[1];
+}
+
+/* harmony default export */ __webpack_exports__["b"] = function(_) {
+ return arguments.length ? (this._y = _, this) : this._y;
+};
+
+
+/***/ }),
+/* 209 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_array__ = __webpack_require__(1);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ordinal__ = __webpack_require__(89);
+/* harmony export (immutable) */ __webpack_exports__["a"] = band;
+/* harmony export (immutable) */ __webpack_exports__["b"] = point;
+
+
+
+function band() {
+ var scale = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__ordinal__["a" /* default */])().unknown(undefined),
+ domain = scale.domain,
+ ordinalRange = scale.range,
+ range = [0, 1],
+ step,
+ bandwidth,
+ round = false,
+ paddingInner = 0,
+ paddingOuter = 0,
+ align = 0.5;
+
+ delete scale.unknown;
+
+ function rescale() {
+ var n = domain().length,
+ reverse = range[1] < range[0],
+ start = range[reverse - 0],
+ stop = range[1 - reverse];
+ step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);
+ if (round) step = Math.floor(step);
+ start += (stop - start - step * (n - paddingInner)) * align;
+ bandwidth = step * (1 - paddingInner);
+ if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);
+ var values = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_array__["range"])(n).map(function(i) { return start + step * i; });
+ return ordinalRange(reverse ? values.reverse() : values);
+ }
+
+ scale.domain = function(_) {
+ return arguments.length ? (domain(_), rescale()) : domain();
+ };
+
+ scale.range = function(_) {
+ return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();
+ };
+
+ scale.rangeRound = function(_) {
+ return range = [+_[0], +_[1]], round = true, rescale();
+ };
+
+ scale.bandwidth = function() {
+ return bandwidth;
+ };
+
+ scale.step = function() {
+ return step;
+ };
+
+ scale.round = function(_) {
+ return arguments.length ? (round = !!_, rescale()) : round;
+ };
+
+ scale.padding = function(_) {
+ return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;
+ };
+
+ scale.paddingInner = function(_) {
+ return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;
+ };
+
+ scale.paddingOuter = function(_) {
+ return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter;
+ };
+
+ scale.align = function(_) {
+ return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;
+ };
+
+ scale.copy = function() {
+ return band()
+ .domain(domain())
+ .range(range)
+ .round(round)
+ .paddingInner(paddingInner)
+ .paddingOuter(paddingOuter)
+ .align(align);
+ };
+
+ return rescale();
+}
+
+function pointish(scale) {
+ var copy = scale.copy;
+
+ scale.padding = scale.paddingOuter;
+ delete scale.paddingInner;
+ delete scale.paddingOuter;
+
+ scale.copy = function() {
+ return pointish(copy());
+ };
+
+ return scale;
+}
+
+function point() {
+ return pointish(band().paddingInner(1));
+}
+
+
+/***/ }),
+/* 210 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__colors__ = __webpack_require__(19);
+
+
+/* harmony default export */ __webpack_exports__["a"] = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__colors__["a" /* default */])("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf");
+
+
+/***/ }),
+/* 211 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__colors__ = __webpack_require__(19);
+
+
+/* harmony default export */ __webpack_exports__["a"] = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__colors__["a" /* default */])("1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5");
+
+
+/***/ }),
+/* 212 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__colors__ = __webpack_require__(19);
+
+
+/* harmony default export */ __webpack_exports__["a"] = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__colors__["a" /* default */])("393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6");
+
+
+/***/ }),
+/* 213 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__colors__ = __webpack_require__(19);
+
+
+/* harmony default export */ __webpack_exports__["a"] = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__colors__["a" /* default */])("3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9");
+
+
+/***/ }),
+/* 214 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_color__ = __webpack_require__(6);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_d3_interpolate__ = __webpack_require__(3);
+
+
+
+/* harmony default export */ __webpack_exports__["a"] = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_interpolate__["interpolateCubehelixLong"])(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["b" /* cubehelix */])(300, 0.5, 0.0), __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["b" /* cubehelix */])(-240, 0.5, 1.0));
+
+
+/***/ }),
+/* 215 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__array__ = __webpack_require__(11);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__linear__ = __webpack_require__(20);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__number__ = __webpack_require__(88);
+/* harmony export (immutable) */ __webpack_exports__["a"] = identity;
+
+
+
+
+function identity() {
+ var domain = [0, 1];
+
+ function scale(x) {
+ return +x;
+ }
+
+ scale.invert = scale;
+
+ scale.domain = scale.range = function(_) {
+ return arguments.length ? (domain = __WEBPACK_IMPORTED_MODULE_0__array__["a" /* map */].call(_, __WEBPACK_IMPORTED_MODULE_2__number__["a" /* default */]), scale) : domain.slice();
+ };
+
+ scale.copy = function() {
+ return identity().domain(domain);
+ };
+
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__linear__["b" /* linearish */])(scale);
+}
+
+
+/***/ }),
+/* 216 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_array__ = __webpack_require__(1);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_d3_format__ = __webpack_require__(34);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constant__ = __webpack_require__(42);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__nice__ = __webpack_require__(87);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__continuous__ = __webpack_require__(24);
+/* harmony export (immutable) */ __webpack_exports__["a"] = log;
+
+
+
+
+
+
+function deinterpolate(a, b) {
+ return (b = Math.log(b / a))
+ ? function(x) { return Math.log(x / a) / b; }
+ : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__constant__["a" /* default */])(b);
+}
+
+function reinterpolate(a, b) {
+ return a < 0
+ ? function(t) { return -Math.pow(-b, t) * Math.pow(-a, 1 - t); }
+ : function(t) { return Math.pow(b, t) * Math.pow(a, 1 - t); };
+}
+
+function pow10(x) {
+ return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x;
+}
+
+function powp(base) {
+ return base === 10 ? pow10
+ : base === Math.E ? Math.exp
+ : function(x) { return Math.pow(base, x); };
+}
+
+function logp(base) {
+ return base === Math.E ? Math.log
+ : base === 10 && Math.log10
+ || base === 2 && Math.log2
+ || (base = Math.log(base), function(x) { return Math.log(x) / base; });
+}
+
+function reflect(f) {
+ return function(x) {
+ return -f(-x);
+ };
+}
+
+function log() {
+ var scale = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__continuous__["a" /* default */])(deinterpolate, reinterpolate).domain([1, 10]),
+ domain = scale.domain,
+ base = 10,
+ logs = logp(10),
+ pows = powp(10);
+
+ function rescale() {
+ logs = logp(base), pows = powp(base);
+ if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows);
+ return scale;
+ }
+
+ scale.base = function(_) {
+ return arguments.length ? (base = +_, rescale()) : base;
+ };
+
+ scale.domain = function(_) {
+ return arguments.length ? (domain(_), rescale()) : domain();
+ };
+
+ scale.ticks = function(count) {
+ var d = domain(),
+ u = d[0],
+ v = d[d.length - 1],
+ r;
+
+ if (r = v < u) i = u, u = v, v = i;
+
+ var i = logs(u),
+ j = logs(v),
+ p,
+ k,
+ t,
+ n = count == null ? 10 : +count,
+ z = [];
+
+ if (!(base % 1) && j - i < n) {
+ i = Math.round(i) - 1, j = Math.round(j) + 1;
+ if (u > 0) for (; i < j; ++i) {
+ for (k = 1, p = pows(i); k < base; ++k) {
+ t = p * k;
+ if (t < u) continue;
+ if (t > v) break;
+ z.push(t);
+ }
+ } else for (; i < j; ++i) {
+ for (k = base - 1, p = pows(i); k >= 1; --k) {
+ t = p * k;
+ if (t < u) continue;
+ if (t > v) break;
+ z.push(t);
+ }
+ }
+ } else {
+ z = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_array__["ticks"])(i, j, Math.min(j - i, n)).map(pows);
+ }
+
+ return r ? z.reverse() : z;
+ };
+
+ scale.tickFormat = function(count, specifier) {
+ if (specifier == null) specifier = base === 10 ? ".0e" : ",";
+ if (typeof specifier !== "function") specifier = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_format__["format"])(specifier);
+ if (count === Infinity) return specifier;
+ if (count == null) count = 10;
+ var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?
+ return function(d) {
+ var i = d / pows(Math.round(logs(d)));
+ if (i * base < base - 0.5) i *= base;
+ return i <= k ? specifier(d) : "";
+ };
+ };
+
+ scale.nice = function() {
+ return domain(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__nice__["a" /* default */])(domain(), {
+ floor: function(x) { return pows(Math.floor(logs(x))); },
+ ceil: function(x) { return pows(Math.ceil(logs(x))); }
+ }));
+ };
+
+ scale.copy = function() {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__continuous__["c" /* copy */])(scale, log().base(base));
+ };
+
+ return scale;
+}
+
+
+/***/ }),
+/* 217 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__constant__ = __webpack_require__(42);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__linear__ = __webpack_require__(20);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__continuous__ = __webpack_require__(24);
+/* harmony export (immutable) */ __webpack_exports__["a"] = pow;
+/* harmony export (immutable) */ __webpack_exports__["b"] = sqrt;
+
+
+
+
+function raise(x, exponent) {
+ return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);
+}
+
+function pow() {
+ var exponent = 1,
+ scale = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__continuous__["a" /* default */])(deinterpolate, reinterpolate),
+ domain = scale.domain;
+
+ function deinterpolate(a, b) {
+ return (b = raise(b, exponent) - (a = raise(a, exponent)))
+ ? function(x) { return (raise(x, exponent) - a) / b; }
+ : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__constant__["a" /* default */])(b);
+ }
+
+ function reinterpolate(a, b) {
+ b = raise(b, exponent) - (a = raise(a, exponent));
+ return function(t) { return raise(a + b * t, 1 / exponent); };
+ }
+
+ scale.exponent = function(_) {
+ return arguments.length ? (exponent = +_, domain(domain())) : exponent;
+ };
+
+ scale.copy = function() {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__continuous__["c" /* copy */])(scale, pow().exponent(exponent));
+ };
+
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__linear__["b" /* linearish */])(scale);
+}
+
+function sqrt() {
+ return pow().exponent(0.5);
+}
+
+
+/***/ }),
+/* 218 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_array__ = __webpack_require__(1);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__array__ = __webpack_require__(11);
+/* harmony export (immutable) */ __webpack_exports__["a"] = quantile;
+
+
+
+function quantile() {
+ var domain = [],
+ range = [],
+ thresholds = [];
+
+ function rescale() {
+ var i = 0, n = Math.max(1, range.length);
+ thresholds = new Array(n - 1);
+ while (++i < n) thresholds[i - 1] = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_array__["quantile"])(domain, i / n);
+ return scale;
+ }
+
+ function scale(x) {
+ if (!isNaN(x = +x)) return range[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_array__["bisect"])(thresholds, x)];
+ }
+
+ scale.invertExtent = function(y) {
+ var i = range.indexOf(y);
+ return i < 0 ? [NaN, NaN] : [
+ i > 0 ? thresholds[i - 1] : domain[0],
+ i < thresholds.length ? thresholds[i] : domain[domain.length - 1]
+ ];
+ };
+
+ scale.domain = function(_) {
+ if (!arguments.length) return domain.slice();
+ domain = [];
+ for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);
+ domain.sort(__WEBPACK_IMPORTED_MODULE_0_d3_array__["ascending"]);
+ return rescale();
+ };
+
+ scale.range = function(_) {
+ return arguments.length ? (range = __WEBPACK_IMPORTED_MODULE_1__array__["b" /* slice */].call(_), rescale()) : range.slice();
+ };
+
+ scale.quantiles = function() {
+ return thresholds.slice();
+ };
+
+ scale.copy = function() {
+ return quantile()
+ .domain(domain)
+ .range(range);
+ };
+
+ return scale;
+}
+
+
+/***/ }),
+/* 219 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_array__ = __webpack_require__(1);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__array__ = __webpack_require__(11);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__linear__ = __webpack_require__(20);
+/* harmony export (immutable) */ __webpack_exports__["a"] = quantize;
+
+
+
+
+function quantize() {
+ var x0 = 0,
+ x1 = 1,
+ n = 1,
+ domain = [0.5],
+ range = [0, 1];
+
+ function scale(x) {
+ if (x <= x) return range[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_array__["bisect"])(domain, x, 0, n)];
+ }
+
+ function rescale() {
+ var i = -1;
+ domain = new Array(n);
+ while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);
+ return scale;
+ }
+
+ scale.domain = function(_) {
+ return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];
+ };
+
+ scale.range = function(_) {
+ return arguments.length ? (n = (range = __WEBPACK_IMPORTED_MODULE_1__array__["b" /* slice */].call(_)).length - 1, rescale()) : range.slice();
+ };
+
+ scale.invertExtent = function(y) {
+ var i = range.indexOf(y);
+ return i < 0 ? [NaN, NaN]
+ : i < 1 ? [x0, domain[0]]
+ : i >= n ? [domain[n - 1], x1]
+ : [domain[i - 1], domain[i]];
+ };
+
+ scale.copy = function() {
+ return quantize()
+ .domain([x0, x1])
+ .range(range);
+ };
+
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__linear__["b" /* linearish */])(scale);
+}
+
+
+/***/ }),
+/* 220 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_color__ = __webpack_require__(6);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_d3_interpolate__ = __webpack_require__(3);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return warm; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return cool; });
+
+
+
+var warm = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_interpolate__["interpolateCubehelixLong"])(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["b" /* cubehelix */])(-100, 0.75, 0.35), __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["b" /* cubehelix */])(80, 1.50, 0.8));
+
+var cool = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_interpolate__["interpolateCubehelixLong"])(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["b" /* cubehelix */])(260, 0.75, 0.35), __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["b" /* cubehelix */])(80, 1.50, 0.8));
+
+var rainbow = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_color__["b" /* cubehelix */])();
+
+/* harmony default export */ __webpack_exports__["a"] = function(t) {
+ if (t < 0 || t > 1) t -= Math.floor(t);
+ var ts = Math.abs(t - 0.5);
+ rainbow.h = 360 * t - 100;
+ rainbow.s = 1.5 - 1.5 * ts;
+ rainbow.l = 0.8 - 0.9 * ts;
+ return rainbow + "";
+};
+
/***/ }),
-/* 2 */
+/* 221 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_d3__);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__SVG2Bitmap_js__ = __webpack_require__(8);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__icons_sprite_css__ = __webpack_require__(9);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__icons_sprite_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__icons_sprite_css__);
-/* harmony export (immutable) */ __webpack_exports__["i"] = d3legend;
-/* harmony export (immutable) */ __webpack_exports__["r"] = createPlotControls;
-/* harmony export (immutable) */ __webpack_exports__["c"] = mergeTemplateLayout;
-/* harmony export (immutable) */ __webpack_exports__["j"] = createNodeTypes;
-/* harmony export (immutable) */ __webpack_exports__["k"] = createDynamicNodeAttr;
-/* harmony export (immutable) */ __webpack_exports__["q"] = scaleProperties;
-/* harmony export (immutable) */ __webpack_exports__["f"] = createTreeLayout;
-/* unused harmony export copyNodesArray */
-/* harmony export (immutable) */ __webpack_exports__["s"] = spreadGenerations;
-/* unused harmony export roundOffFix */
-/* unused harmony export getNodeLabelBBox */
-/* harmony export (immutable) */ __webpack_exports__["n"] = getBBox;
-/* unused harmony export getLinkLabelBBox */
-/* unused harmony export resetNodeLabelBBox */
-/* unused harmony export resetBBox */
-/* harmony export (immutable) */ __webpack_exports__["h"] = drawColourBar;
-/* harmony export (immutable) */ __webpack_exports__["g"] = calcColourBarSize;
-/* harmony export (immutable) */ __webpack_exports__["e"] = testLabelLength;
-/* harmony export (immutable) */ __webpack_exports__["l"] = getExtraSpaceForLabel;
-/* harmony export (immutable) */ __webpack_exports__["m"] = multiAttr;
-/* unused harmony export getTranslation */
-/* harmony export (immutable) */ __webpack_exports__["a"] = attachActionOnResize;
-/* harmony export (immutable) */ __webpack_exports__["d"] = filterSeries;
-/* harmony export (immutable) */ __webpack_exports__["p"] = toggleSelectionDisplay;
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__linear__ = __webpack_require__(20);
+/* harmony export (immutable) */ __webpack_exports__["a"] = sequential;
+function sequential(interpolator) {
+ var x0 = 0,
+ x1 = 1,
+ clamp = false;
+ function scale(x) {
+ var t = (x - x0) / (x1 - x0);
+ return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);
+ }
-__WEBPACK_IMPORTED_MODULE_0_d3__["selection"].prototype.sortNoInsert = function(compare) {
- function compareNode(a, b) {
- return a && b ? compare(a.__data__, b.__data__) : !a - !b;
- }
+ scale.domain = function(_) {
+ return arguments.length ? (x0 = +_[0], x1 = +_[1], scale) : [x0, x1];
+ };
- for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {
- for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {
- if (node = group[i]) {
- sortgroup[i] = node;
- }
- }
- sortgroup.sort(compareNode);
- }
+ scale.clamp = function(_) {
+ return arguments.length ? (clamp = !!_, scale) : clamp;
+ };
- return __WEBPACK_IMPORTED_MODULE_0_d3__["selectAll"](sortgroups[0]);
-};
+ scale.interpolator = function(_) {
+ return arguments.length ? (interpolator = _, scale) : interpolator;
+ };
-function d3legend() {
- let splitAfter = 0,
- anchor = {x: "outside", y: "inside"},
- position = {x: "right", y: "center"},
- seriesNames = null,
- colourScale = null,
- onMouseOver = null,
- onMouseOut = null,
- onClick = null,
- selectedItems = new Set(),
- verticalItemSpacing = 10,
- horizontalItemSpacing = 20,
- padding = 10,
- shapeSize = 10,
- maxSize = {width: -1, height: -1},
- background = "white";
+ scale.copy = function() {
+ return sequential(interpolator).domain([x0, x1]).clamp(clamp);
+ };
- function legend(g) {
- splitAfter = splitAfter.clamp(0, seriesNames.length);
- if (splitAfter === 0) splitAfter = seriesNames.length;
- let longestName = seriesNames.reduce((a, b) => a.length > b.length ? a : b);
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__linear__["b" /* linearish */])(scale);
+}
- let lengthTestString = g.append("text").attr("visibility", false).text(longestName);
- let box = lengthTestString.node().getBBox();
- box.height = parseInt(window.getComputedStyle(lengthTestString.node()).fontSize, 10);
- lengthTestString.remove();
- let columnWidth = box.width + shapeSize + 5,
- rowHeight = box.height;
+/***/ }),
+/* 222 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (padding + splitAfter * (columnWidth + horizontalItemSpacing) > maxSize.width)
- splitAfter = Math.floor((maxSize.width - padding) / (columnWidth + horizontalItemSpacing));
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_array__ = __webpack_require__(1);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__array__ = __webpack_require__(11);
+/* harmony export (immutable) */ __webpack_exports__["a"] = threshold;
- if (padding + Math.floor(seriesNames.length / splitAfter) * (rowHeight + verticalItemSpacing) > maxSize.height)
- splitAfter = Math.ceil(1.0 / ((maxSize.height - padding) / (rowHeight + verticalItemSpacing) / seriesNames.length));
- let rows = splitAfter > 0 ? Math.ceil(seriesNames.length / splitAfter) : 1,
- cols = splitAfter > 0 ? splitAfter : seriesNames.length,
- w = cols * columnWidth + (cols - 1) * horizontalItemSpacing + 2 * padding,
- h = rows * rowHeight + (rows - 1) * verticalItemSpacing + 2 * padding,
- shapeVerticalOffset = (rowHeight - shapeSize) / 2,
- textVerticalOffset = (rowHeight + box.height) / 2 - 2,
- legendHorizontalOffset = 0,
- legendVerticalOffset = 0;
-
-
- if ((position.y === "top" && anchor.y === "inside") || (position.y === "bottom" && anchor.y === "outside"))
- legendVerticalOffset = 0;
- else if ((position.y === "top" && anchor.y === "outside") || (position.y === "bottom" && anchor.y === "inside"))
- legendVerticalOffset = -h;
- else if (position.y === "center" && (position.x === "right" || position.x === "left"))
- legendVerticalOffset = -h / 2;
-
- if ((position.x === "left" && anchor.x === "inside") || (position.x === "right" && anchor.x === "outside"))
- legendHorizontalOffset = 0;
- else if ((position.x === "left" && anchor.x === "outside") || (position.x === "right" && anchor.x === "inside"))
- legendHorizontalOffset = -w;
- else if (position.x === "center" && (position.y === "top" || position.y === "bottom"))
- legendHorizontalOffset = -w / 2;
-
- g.append("rect")
- .attr("x", legendHorizontalOffset)
- .attr("y", legendVerticalOffset)
- .attr("width", w)
- .attr("height", h)
- .attr("fill", background)
- .style("opacity", 0.75);
-
- let item = g.selectAll("g.legend-item").data(seriesNames);
- let itemEnter = item.enter()
- .append("g")
- .attr("class", "legend-item");
+function threshold() {
+ var domain = [0.5],
+ range = [0, 1],
+ n = 1;
- itemEnter.attr("transform", (d, i) => `translate(${legendHorizontalOffset + padding + (i % splitAfter) * (columnWidth + horizontalItemSpacing)},
- ${legendVerticalOffset + padding + Math.floor(i / splitAfter) * (rowHeight + verticalItemSpacing)})`);
+ function scale(x) {
+ if (x <= x) return range[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_array__["bisect"])(domain, x, 0, n)];
+ }
- itemEnter.each(function (d, i) {
- let sel = __WEBPACK_IMPORTED_MODULE_0_d3__["select"](this);
-
- sel.append("rect")
- .attr("class", "shape")
- .attr("x", 2)
- .attr("y", shapeVerticalOffset)
- .attr("width", shapeSize)
- .attr("height", shapeSize)
- .attr("fill", selectedItems.has(d) ? colourScale(d) : "white")
- .attr("stroke", colourScale(d));
-
- sel.append("text")
- .attr("x", shapeSize + 5)
- .attr("y", textVerticalOffset)
- .attr("fill", "black")
- .attr("font-size", 13)
- .text(d);
-
- sel.append("rect")
- .attr("class", "legend-item-mouse-capture")
- .attr("x", 0)
- .attr("y", 0)
- .attr("width", columnWidth)
- .attr("height", rowHeight)
- .attr("fill", "white")
- .attr("opacity", 0);
- });
+ scale.domain = function(_) {
+ return arguments.length ? (domain = __WEBPACK_IMPORTED_MODULE_1__array__["b" /* slice */].call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();
+ };
+
+ scale.range = function(_) {
+ return arguments.length ? (range = __WEBPACK_IMPORTED_MODULE_1__array__["b" /* slice */].call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();
+ };
+
+ scale.invertExtent = function(y) {
+ var i = range.indexOf(y);
+ return [domain[i - 1], domain[i]];
+ };
- if (onMouseOver) itemEnter.on("mouseover", onMouseOver);
- if (onMouseOut) itemEnter.on("mouseout", onMouseOut);
- if (onClick) itemEnter.on("click", onClick);
+ scale.copy = function() {
+ return threshold()
+ .domain(domain)
+ .range(range);
+ };
+
+ return scale;
+}
+
+
+/***/ }),
+/* 223 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_array__ = __webpack_require__(1);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_d3_format__ = __webpack_require__(34);
+
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(domain, count, specifier) {
+ var start = domain[0],
+ stop = domain[domain.length - 1],
+ step = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_array__["tickStep"])(start, stop, count == null ? 10 : count),
+ precision;
+ specifier = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_format__["formatSpecifier"])(specifier == null ? ",f" : specifier);
+ switch (specifier.type) {
+ case "s": {
+ var value = Math.max(Math.abs(start), Math.abs(stop));
+ if (specifier.precision == null && !isNaN(precision = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_format__["precisionPrefix"])(step, value))) specifier.precision = precision;
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_format__["formatPrefix"])(specifier, value);
}
+ case "":
+ case "e":
+ case "g":
+ case "p":
+ case "r": {
+ if (specifier.precision == null && !isNaN(precision = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_format__["precisionRound"])(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e");
+ break;
+ }
+ case "f":
+ case "%": {
+ if (specifier.precision == null && !isNaN(precision = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_format__["precisionFixed"])(step))) specifier.precision = precision - (specifier.type === "%") * 2;
+ break;
+ }
+ }
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_format__["format"])(specifier);
+};
- legend.splitAfter = function (x) {
- if (!arguments.length) return splitAfter;
- splitAfter = x;
- return legend;
- };
- legend.position = function (x) {
- if (!arguments.length) return position;
- position = x;
- return legend;
- };
+/***/ }),
+/* 224 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- legend.anchor = function (x) {
- if (!arguments.length) return anchor;
- if (x.x == "outside" && x.y == "outside") {
- console.warn('Anchor x and y should not be both set to "outside". Setting both to "inside"');
- anchor = {x: "inside", y: "inside"};
- }
- else anchor = x;
- return this;
- };
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__time__ = __webpack_require__(90);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_d3_time_format__ = __webpack_require__(96);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_d3_time__ = __webpack_require__(52);
- legend.maxSize = function (x) {
- if (!arguments.length) return maxSize;
- if (x.width !== undefined && x.height !== undefined)
- maxSize = x;
- return legend;
- };
- legend.seriesNames = function (x) {
- if (!arguments.length) return seriesNames;
- seriesNames = x;
- return legend;
- };
- legend.colourScale = function (x) {
- if (!arguments.length) return colourScale;
- colourScale = x;
- return legend;
- };
- legend.backgroundColour = function (x) {
- if (!arguments.length) return background;
- background = x;
- return legend;
- };
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__time__["b" /* calendar */])(__WEBPACK_IMPORTED_MODULE_2_d3_time__["a" /* utcYear */], __WEBPACK_IMPORTED_MODULE_2_d3_time__["b" /* utcMonth */], __WEBPACK_IMPORTED_MODULE_2_d3_time__["c" /* utcWeek */], __WEBPACK_IMPORTED_MODULE_2_d3_time__["d" /* utcDay */], __WEBPACK_IMPORTED_MODULE_2_d3_time__["e" /* utcHour */], __WEBPACK_IMPORTED_MODULE_2_d3_time__["f" /* utcMinute */], __WEBPACK_IMPORTED_MODULE_2_d3_time__["g" /* utcSecond */], __WEBPACK_IMPORTED_MODULE_2_d3_time__["h" /* utcMillisecond */], __WEBPACK_IMPORTED_MODULE_1_d3_time_format__["a" /* utcFormat */]).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]);
+};
- legend.onMouseOver = function (x) {
- if (!arguments.length) return onMouseOver;
- onMouseOver = x;
- return legend;
- };
- legend.onMouseOut = function (x) {
- if (!arguments.length) return onMouseOut;
- onMouseOut = x;
- return legend;
- };
+/***/ }),
+/* 225 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- legend.onClick = function (x) {
- if (!arguments.length) return onClick;
- onClick = x;
- return legend;
- };
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__colors__ = __webpack_require__(19);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return magma; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return inferno; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return plasma; });
- legend.selectedItems = function (x) {
- if (!arguments.length) return selectedItems;
- selectedItems = x;
- return legend;
- };
- return legend;
+function ramp(range) {
+ var n = range.length;
+ return function(t) {
+ return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];
+ };
}
-function createPlotControls(root, controls, activeControls = new Set()) {
- const ICONS = {
- 'download': 'svg-ic_photo_camera_black_24px',
- 'select': 'svg-ic_radio_button_checked_black_24px',
- 'zoom': 'svg-ic_open_with_black_24px',
- 'label': 'svg-ic_label_black_24px'
- };
- let plotRoot = __WEBPACK_IMPORTED_MODULE_0_d3__["select"](root),
- ctrls = Object.keys(controls),
- timeoutId = null,
- isVisible = false;
+/* harmony default export */ __webpack_exports__["a"] = ramp(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__colors__["a" /* default */])("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));
- plotRoot.selectAll("div.plot-control-panel").remove();
+var magma = ramp(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__colors__["a" /* default */])("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf"));
- let controlPanel = plotRoot.append("div")
- .attr("class", "plot-control-panel")
- .style("visibility", "hidden");
+var inferno = ramp(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__colors__["a" /* default */])("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4"));
- controlPanel.selectAll("div")
- .data(ctrls)
- .enter()
- .append("div")
- .attr("class", action => `${ICONS[action]} svg-icon action-${action}`);
+var plasma = ramp(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__colors__["a" /* default */])("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));
- plotRoot.select("svg").on("mousemove", function() {
- if (!isVisible) {
- controlPanel.style("visibility", "visible").transition().style("opacity", 1);
- isVisible = true;
- }
- clearTimeout(timeoutId);
- timeoutId = setTimeout(function() {
- controlPanel.style("opacity", 0).style("visibility", "hidden");
- isVisible = false;
- }, 2500);
- });
- plotRoot.select("div.action-zoom")
- .classed("active", activeControls.has("zoom"))
- .on('click', function() {
- let self = __WEBPACK_IMPORTED_MODULE_0_d3__["select"](this);
- let active = self.classed("active");
- (controls['zoom'])(!active);
- self.classed("active", !active);
- let selectMode = plotRoot.select("div.action-select");
- if (!selectMode.empty() && selectMode.classed("active") && !active) {
- selectMode.classed("active", false);
- (controls['select'])(false);
- }
- setActiveControl();
- });
+/***/ }),
+/* 226 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- plotRoot.select("div.action-select")
- .classed("active", activeControls.has("select"))
- .on('click', function() {
- let self = __WEBPACK_IMPORTED_MODULE_0_d3__["select"](this);
- let active = self.classed("active");
- (controls['select'])(!active);
- self.classed("active", !active);
- let zoomMode = plotRoot.select("div.action-zoom");
- if (!zoomMode.empty() && zoomMode.classed("active") && !active) {
- zoomMode.classed("active", false);
- (controls['zoom'])(false);
- }
- setActiveControl();
- });
+"use strict";
+Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(0);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_d3_transition__ = __webpack_require__(25);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_selection_attrs__ = __webpack_require__(227);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_selection_styles__ = __webpack_require__(229);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_selection_properties__ = __webpack_require__(228);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_transition_attrs__ = __webpack_require__(230);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__src_transition_styles__ = __webpack_require__(231);
- plotRoot.select("div.action-label")
- .classed("active", activeControls.has("label"))
- .on('click', function() {
- let self = __WEBPACK_IMPORTED_MODULE_0_d3__["select"](this);
- let active = self.classed("active");
- (controls['label'])(!active);
- self.classed("active", !active);
- setActiveControl();
- });
- plotRoot.select("div.action-download")
- .on('click', function(){
- let canvas = plotRoot.append("canvas")
- .style("position", "absolute")
- .style("display", "none");
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__SVG2Bitmap_js__["a" /* default */])(plotRoot.select("svg").node(), canvas.node());
- function sleep (time) {
- return new Promise((resolve) => setTimeout(resolve, time));
- }
- sleep(100).then(() => {
- var imgURI = canvas.node()
- .toDataURL('image/png')
- .replace('image/png', 'image/octet-stream');
- triggerDownload(imgURI);
- canvas.remove();
- });
- });
- for (let ctrl of ctrls) {
- controls[ctrl](activeControls.has(ctrl));
- }
- function triggerDownload (imgURI) {
- var evt = new MouseEvent('click', {
- view: window,
- bubbles: false,
- cancelable: true
- });
- var a = document.createElement('a');
- a.setAttribute('download', 'plot.png');
- a.setAttribute('href', imgURI);
- a.setAttribute('target', '_blank');
+__WEBPACK_IMPORTED_MODULE_0_d3_selection__["selection"].prototype.attrs = __WEBPACK_IMPORTED_MODULE_2__src_selection_attrs__["a" /* default */];
+__WEBPACK_IMPORTED_MODULE_0_d3_selection__["selection"].prototype.styles = __WEBPACK_IMPORTED_MODULE_3__src_selection_styles__["a" /* default */];
+__WEBPACK_IMPORTED_MODULE_0_d3_selection__["selection"].prototype.properties = __WEBPACK_IMPORTED_MODULE_4__src_selection_properties__["a" /* default */];
+__WEBPACK_IMPORTED_MODULE_1_d3_transition__["transition"].prototype.attrs = __WEBPACK_IMPORTED_MODULE_5__src_transition_attrs__["a" /* default */];
+__WEBPACK_IMPORTED_MODULE_1_d3_transition__["transition"].prototype.styles = __WEBPACK_IMPORTED_MODULE_6__src_transition_styles__["a" /* default */];
- a.dispatchEvent(evt);
- }
- function setActiveControl() {
- activeControls.clear();
- for (let activeCtrl of plotRoot.selectAll('.active').data()) {
- activeControls.add(activeCtrl);
- }
- }
+
+/***/ }),
+/* 227 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(0);
+
+
+function attrsFunction(selection, map) {
+ return selection.each(function() {
+ var x = map.apply(this, arguments), s = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_selection__["select"])(this);
+ for (var name in x) s.attr(name, x[name]);
+ });
}
-class d3tooltip {
- constructor(g) {
- this.tip = g.append("div").attr("class", "ancestry-tooltip");
- this.pos = [0, 0];
- this.hide();
- }
+function attrsObject(selection, map) {
+ for (var name in map) selection.attr(name, map[name]);
+ return selection;
+}
- position(pos) {
- if (!arguments.length) return this.pos;
- this.pos = pos;
- this.tip.style("left", `${pos[0]}px`)
- .style("top", `${pos[1]}px`);
- return this;
- }
+/* harmony default export */ __webpack_exports__["a"] = function(map) {
+ return (typeof map === "function" ? attrsFunction : attrsObject)(this, map);
+};
- move(pos, duration) {
- this.pos = pos;
- this.tip.transition().duration(duration).style("left", `${pos[0]}px`)
- .style("top", `${pos[1]}px`);
- return this;
- }
- hide() {
- this.tip.transition().delay(100).style("opacity", 0);
- return this;
- }
+/***/ }),
+/* 228 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- show() {
- this.tip.transition().duration(0).style("opacity", 1);
- return this;
- }
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(0);
- html(content) {
- this.tip.html(content);
- return this;
- }
- static getRelativePosition(el, parent) {
- let elPos = el.getBoundingClientRect(),
- parentPos = parent.getBoundingClientRect();
+function propertiesFunction(selection, map) {
+ return selection.each(function() {
+ var x = map.apply(this, arguments), s = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_selection__["select"])(this);
+ for (var name in x) s.property(name, x[name]);
+ });
+}
- return {x: (elPos.right + elPos.left) / 2 - parentPos.left, y: elPos.top - parentPos.top};
- }
+function propertiesObject(selection, map) {
+ for (var name in map) selection.property(name, map[name]);
+ return selection;
}
-/* harmony export (immutable) */ __webpack_exports__["b"] = d3tooltip;
+/* harmony default export */ __webpack_exports__["a"] = function(map) {
+ return (typeof map === "function" ? propertiesFunction : propertiesObject)(this, map);
+};
-function mergeTemplateLayout(layout, templateLayout) {
- for (let p in templateLayout) {
- if (layout.hasOwnProperty(p)) {
- if (typeof templateLayout[p] == 'object' && !Array.isArray(templateLayout[p]) && templateLayout[p] != null) {
- layout[p] = mergeTemplateLayout(layout[p], templateLayout[p]);
- }
- }
- else {
- if (typeof templateLayout[p] == 'object' && !Array.isArray(templateLayout[p]) && templateLayout[p] != null) {
- layout[p] = mergeTemplateLayout({}, templateLayout[p]);
- }
- else {
- layout[p] = templateLayout[p];
- }
- }
- }
- return layout;
-}
-function createNodeTypes(nodesArray, definedTypes, defaultType) {
- let typesFromLayout = Object.keys(definedTypes),
- typeNames = Array.from(new Set(nodesArray.map(node => node.type))),
- types = {};
- typeNames.forEach(type => {
- types[type] = typesFromLayout.includes(type) ? mergeTemplateLayout(definedTypes[type], defaultType) : defaultType;
- });
- types[undefined] = defaultType;
- return types;
+/***/ }),
+/* 229 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(0);
+
+
+function stylesFunction(selection, map, priority) {
+ return selection.each(function() {
+ var x = map.apply(this, arguments), s = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_selection__["select"])(this);
+ for (var name in x) s.style(name, x[name], priority);
+ });
}
-function createDynamicNodeAttr(types, attrNames) {
- let typeAttr = {};
- for (let attr of attrNames) {
- typeAttr[attr] = (d) => types[d.hasOwnProperty("data") ? d.data.type : d.type][attr];
- }
- return typeAttr;
+function stylesObject(selection, map, priority) {
+ for (var name in map) selection.style(name, map[name], priority);
+ return selection;
}
+/* harmony default export */ __webpack_exports__["a"] = function(map, priority) {
+ return (typeof map === "function" ? stylesFunction : stylesObject)(this, map, priority == null ? "" : priority);
+};
+
+
+/***/ }),
+/* 230 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(0);
-function scaleProperties(props, scale, dynamic = false) {
- let scaledProps = {};
- for (let key in props) {
- if (!props.hasOwnProperty(key)) continue;
- let test = dynamic ? props[key]({type: undefined}) : props[key];
- scaledProps[key] = !isNaN(test) && typeof test != 'string' ?
- (dynamic ? d=> props[key](d) / scale : props[key] / scale) : props[key];
- }
- return scaledProps;
-}
-function createTreeLayout(nodes) {
- //let nodes = copyNodesArray(nodesArray);
- return nodes.map(node => {
- node.children = nodes.filter(n => n.parent == node.name);
- return node;
- }).filter(n => !n.parent);
+function attrsFunction(transition, map) {
+ return transition.each(function() {
+ var x = map.apply(this, arguments), t = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_selection__["select"])(this).transition(transition);
+ for (var name in x) t.attr(name, x[name]);
+ });
}
-function copyNodesArray(nodesArray) {
- return nodesArray.map(node => JSON.parse(JSON.stringify(node)));
+function attrsObject(transition, map) {
+ for (var name in map) transition.attr(name, map[name]);
+ return transition;
}
-function spreadGenerations(tree, gen = 0) {
- tree.generation = gen;
- for (let child of tree.children) {
- spreadGenerations(child, gen + 1);
- }
-}
+/* harmony default export */ __webpack_exports__["a"] = function(map) {
+ return (typeof map === "function" ? attrsFunction : attrsObject)(this, map);
+};
-function roundOffFix(format, zeroThreshold=1e-10) {
- return d => {
- let str = d.toString();
- if (d < zeroThreshold && d > -zeroThreshold) d = 0;
- return format(str.length > 10 ? d.toPrecision(4) : d);
- }
-}
-function getNodeLabelBBox(d) {
- let {top, bottom, right, left, width, height} = this.getBoundingClientRect();
- d.bboxLabel = {top, bottom, right, left, width, height};
- d.bboxLabel.top += d.bboxLabel.height * 0.16;
- d.bboxLabel.bottom -= d.bboxLabel.height * 0.16;
+/***/ }),
+/* 231 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let xs = [d.bboxCircle.left, d.bboxCircle.right, d.bboxLabel.left, d.bboxLabel.right],
- ys = [d.bboxCircle.top, d.bboxCircle.bottom, d.bboxLabel.top, d.bboxLabel.bottom];
- left = Math.min(...xs); right = Math.max(...xs); top = Math.min(...ys); bottom = Math.max(...ys);
- height = bottom - top; width = right - left;
- d.bbox = {left, right, top, bottom, width, height};
-}
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(0);
-function getBBox(d) {
- let {top, bottom, right, left, width, height} = this.getBoundingClientRect();
- d.bbox = {top, bottom, right, left, width, height};
-}
-function getLinkLabelBBox(d) {
- let {top, bottom, right, left, width, height} = this.getBoundingClientRect();
- d.bboxLinkLabel = {top, bottom, right, left, width, height};
- d.bboxLinkLabel.top += d.bboxLinkLabel.height * 0.16;
- d.bboxLinkLabel.bottom -= d.bboxLinkLabel.height * 0.16;
+function stylesFunction(transition, map, priority) {
+ return transition.each(function() {
+ var x = map.apply(this, arguments), t = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_selection__["select"])(this).transition(transition);
+ for (var name in x) t.style(name, x[name], priority);
+ });
}
-function resetNodeLabelBBox(d) {
- d.bboxLabel = d.bboxCircle;
- d.bbox = d.bboxCircle;
+function stylesObject(transition, map, priority) {
+ for (var name in map) transition.style(name, map[name], priority);
+ return transition;
}
-function resetBBox(d) {
- d.bbox = {
- top: -100,
- bottom: -100,
- right: -100,
- left: -100,
- width: 0,
- height: 0
- };
-}
+/* harmony default export */ __webpack_exports__["a"] = function(map, priority) {
+ return (typeof map === "function" ? stylesFunction : stylesObject)(this, map, priority == null ? "" : priority);
+};
-class LabelCollisionDetection {
- constructor(levelFixed, levels, nodeLabelPositions, labelLayout, width, height, nodeSearchRadius, linkSearchRadius) {
- this.width = width;
- this.height = height;
- this.levels = levels;
- this.levelFixed = levelFixed;
- this.nodeLabelPositions = nodeLabelPositions;
- this.nodeSearchRadius = nodeSearchRadius;
- this.linkSearchRadius = linkSearchRadius;
- this.quadtree = null;
- }
- quadtreeSearchWithTransform(point, searchRadius, {x: tx, y: ty, k: k} = {x: 0, y: 0, k: 1}) {
- let foundNodes = [],
- rx = searchRadius.x, ry = searchRadius.y,
- px = point.x * k + tx, py = point.y * k + ty,
- x0 = px - rx, y0 = py - ry, x3 = px + rx, y3 = py + ry;
- this.quadtree.visit((node, x1, y1, x2, y2) => {
- let outside = x1 >= x3 || y1 >= y3 || x2 < x0 || y2 < y0;
- if (outside) return true;
- let p = node.data;
- if (p) {
- if((this.dist(px, py, p.x * k + tx, py) <= rx || this.dist(px, py, px, p.y * k + ty) <= ry) && p != point) {
- do {
- foundNodes.push(node.data)
- } while (node = node.next);
- }
- }
- return false;
- });
+/***/ }),
+/* 232 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- return foundNodes.sort((a, b) => b.x - a.x);
- }
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(x) {
+ return function() {
+ return x;
+ };
+};
- dist(x1, y1, x2, y2) {
- let dx = x2 - x1,
- dy = y2 - y1;
- return Math.pow(dx * dx + dy * dy, 0.5);
- }
- recalculateLabels(transform = {x: 0, y: 0, k: 1}) {
- let that = this;
- this.quadtree = __WEBPACK_IMPORTED_MODULE_0_d3__["quadtree"]().extent([[-1, -1], [this.width + 1, this.height + 1]])
- .x(d => d.x * transform.k + transform.x)
- .y(d => d.y * transform.k + transform.y);
- let isVisible = d => {
- let dx = d.x * transform.k + transform.x, dy = d.y * transform.k + transform.y;
- return dx >= -10 && dx <= this.width + 10 && dy >= -10 && dy <= this.height + 10;
- };
- for (let fixedSelection of this.levelFixed) {
- let filteredSelection = fixedSelection.filter(isVisible);
- filteredSelection.each(getBBox);
- this.quadtree.addAll(filteredSelection.data());
- }
- for (let level of this.levels) {
- if (!level.length) {
- continue;
- }
- let mergedSelection = level.length > 1 ? __WEBPACK_IMPORTED_MODULE_0_d3__["selectAll"]([].concat.apply([], level.map(d => d.nodes()))) : level[0];
- let filteredSelection = mergedSelection.filter(isVisible);
- filteredSelection.each(resetBBox);
- this.quadtree.addAll(filteredSelection.data());
- recalculateCollisions(filteredSelection);
- }
+/***/ }),
+/* 233 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- function recalculateCollisions(selection) {
- selection
- .sortNoInsert((a, b) => (b.x - a.x) + 0.01 * (b.y - a.y))
- .each(function(d) {
- let i = 0,
- collision = false,
- sel = __WEBPACK_IMPORTED_MODULE_0_d3__["select"](this),
- label_type = sel.attr("class");
+"use strict";
+/* harmony export (immutable) */ __webpack_exports__["a"] = local;
+var nextId = 0;
- if (label_type == 'node-label') {
- let neighbours = that.quadtreeSearchWithTransform(d, that.nodeSearchRadius, transform);
- do {
- // set next position from the position's list
- d.currentLabelPos = that.nodeLabelPositions[i++];
- d.scaledLabelPos = scaleProperties(d.currentLabelPos, transform.k);
- // apply the new position to DOM element
- //let scaledProps = scaleProperties(d.labelPos, transform.k);
+function local() {
+ return new Local;
+}
- sel.each(d => {
- d.x = d.node.x + d.scaledLabelPos.x;
- d.y = d.node.y + d.scaledLabelPos.y;
- })
- .attr("x", d => d.x)
- .attr("y", d => d.y)
- .attr("text-anchor", d => d.scaledLabelPos['text-anchor']);
- // recalculate label and node's new bounding boxes
- sel.each(getBBox);
- // check if the label collides with its neighbours
- collision = that.isColliding(d, neighbours);
- } while (collision && i < that.nodeLabelPositions.length);
- }
- else { /* label_type == 'link-label' */
- let neighbours = that.quadtreeSearchWithTransform(d, that.linkSearchRadius, transform);
- sel.each(getBBox);
- collision = that.isColliding(d, neighbours);
- }
- if(collision) { // reset bounding boxes if no non-colliding positions were found
- resetBBox(d);
- }
- // hide label if it collides
- d.isColliding = collision;
- sel.style("opacity", collision ? 1e-6 : 1);
- })
- }
- }
+function Local() {
+ this._ = "@" + (++nextId).toString(36);
+}
- checkCollision(rect1, rect2) {
- return (rect1.left <= rect2.right &&
- rect1.right >= rect2.left &&
- rect1.bottom >= rect2.top &&
- rect1.top <= rect2.bottom);
- }
+Local.prototype = local.prototype = {
+ constructor: Local,
+ get: function(node) {
+ var id = this._;
+ while (!(id in node)) if (!(node = node.parentNode)) return;
+ return node[id];
+ },
+ set: function(node, value) {
+ return node[this._] = value;
+ },
+ remove: function(node) {
+ return this._ in node && delete node[this._];
+ },
+ toString: function() {
+ return this._;
+ }
+};
- isColliding(object1, objects) {
- for(let object2 of objects) {
- if (this.checkCollision(object1.bbox, object2.bbox)) return true;
- }
- return false;
- }
-}
-/* harmony export (immutable) */ __webpack_exports__["o"] = LabelCollisionDetection;
+/***/ }),
+/* 234 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-let colourBarID = 0;
-function drawColourBar(selection, domain, heatmapOptions, defs, defsRoutePath) {
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sourceEvent__ = __webpack_require__(49);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__point__ = __webpack_require__(46);
- selection.selectAll("*").remove();
- let width = heatmapOptions.colourBar.width,
- height = heatmapOptions.colourBar.height,
- colourScale = heatmapOptions.colourScale,
- opacity = heatmapOptions.opacity,
- title = heatmapOptions.title,
- titleOffset = title ? 22 : 0;
- let gradient = defs.append("svg:linearGradient")
- .attr("id", `gradient${colourBarID}`)
- .attr("x1", "0%")
- .attr("y1", height > width ? "100%" : "0%")
- .attr("x2", height > width ? "0%" : "100%")
- .attr("y2", "0%")
- .attr("spreadMethod", "pad");
-
- gradient.append("svg:stop")
- .attr("offset", "0%")
- .attr("stop-color", colourScale[0][1])
- .attr("stop-opacity", 1);
-
- gradient.append("svg:stop")
- .attr("offset", "100%")
- .attr("stop-color", colourScale[1][1])
- .attr("stop-opacity", 1);
-
- selection.append("rect")
- .attr("x", titleOffset)
- .attr("y", 0)
- .attr("width", width)
- .attr("height", height)
- .style("fill", `url(${defsRoutePath}#gradient${colourBarID++})`)
- .attr("stroke-width", 2)
- .attr("stroke", "grey")
- .style("opacity", opacity);
+/* harmony default export */ __webpack_exports__["a"] = function(node) {
+ var event = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sourceEvent__["a" /* default */])();
+ if (event.changedTouches) event = event.changedTouches[0];
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__point__["a" /* default */])(node, event);
+};
- if (title) {
- selection.append("text")
- .attr("class", "axis-title")
- .attr("transform", "rotate(-90)")
- .attr("dy", 12)
- .attr("x",-(height / 2))
- .style("text-anchor", "middle")
- .text(title);
- }
- // Define x axis and grid
- let colourAxis = __WEBPACK_IMPORTED_MODULE_0_d3__["axisRight"]()
- .scale(__WEBPACK_IMPORTED_MODULE_0_d3__["scaleLinear"]().domain(domain).range([height, 0]));
+/***/ }),
+/* 235 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- selection.append("g")
- .attr("class", "axis")
- .attr("transform", `translate(${width + titleOffset}, 0)`)
- .call(colourAxis);
-}
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__selection_index__ = __webpack_require__(4);
-function calcColourBarSize(size, relativeSize) {
- if (typeof size === 'string' || size instanceof String) {
- if (size === "auto") return relativeSize;
- else if (size[size.length - 1] === "%") return relativeSize * parseInt(size) / 100;
- else return relativeSize;
- }
- else return size;
-}
-function testLabelLength(svg, name, _attrs) {
- let label = svg.append("text").text(name);
- multiAttr.call(label, _attrs);
- let length = label.node().getBoundingClientRect().width;
- label.remove();
- return length;
-}
+/* harmony default export */ __webpack_exports__["a"] = function(selector) {
+ return typeof selector === "string"
+ ? new __WEBPACK_IMPORTED_MODULE_0__selection_index__["b" /* Selection */]([[document.querySelector(selector)]], [document.documentElement])
+ : new __WEBPACK_IMPORTED_MODULE_0__selection_index__["b" /* Selection */]([[selector]], __WEBPACK_IMPORTED_MODULE_0__selection_index__["c" /* root */]);
+};
-function getExtraSpaceForLabel(scale, labelLength) {
- let d = scale.domain(), dd = d[1] - d[0],
- r = scale.range(), dr = r[1] - r[0];
- return labelLength * dd / (dr - 2 * labelLength);
-}
-function multiAttr(attrs) {
- for (let [attr, value] of Object.entries(attrs)) {
- this.attr(attr, value);
- }
- return this;
-}
+/***/ }),
+/* 236 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-function getTranslation(transform) {
- var g = document.createElementNS("http://www.w3.org/2000/svg", "g");
- g.setAttributeNS(null, "transform", transform);
- var matrix = g.transform.baseVal.consolidate().matrix;
- return [matrix.e, matrix.f];
-}
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__selection_index__ = __webpack_require__(4);
-function attachActionOnResize(window, action) {
- window = angular.element(window);
- let width = window[0].innerWidth;
- let lastUpdate = performance.now();
- let scheduleId = null;
- //let height = window[0].innerHeight;
- window.on('resize', (event) => {
- let newWidth = window[0].innerWidth,
- now = performance.now();
- //let newHeight = window[0].innerHeight;
- if (width != newWidth /*|| height != newHeight*/) {
- width = newWidth;
- if (now - lastUpdate < 500) {
- clearTimeout(scheduleId);
- }
- lastUpdate = now;
- scheduleId = setTimeout(action, 500);
- }
- });
-}
+/* harmony default export */ __webpack_exports__["a"] = function(selector) {
+ return typeof selector === "string"
+ ? new __WEBPACK_IMPORTED_MODULE_0__selection_index__["b" /* Selection */]([document.querySelectorAll(selector)], [document.documentElement])
+ : new __WEBPACK_IMPORTED_MODULE_0__selection_index__["b" /* Selection */]([selector == null ? [] : selector], __WEBPACK_IMPORTED_MODULE_0__selection_index__["c" /* root */]);
+};
-function filterSeries(nodes, activeSeries) {
- let filteredNodes = [],
- nodesDict = {},
- parent;
- for (let node of nodes) {
- nodesDict[node.name] = node;
- }
+/***/ }),
+/* 237 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- for (let node of nodes) {
- let currentNode = node;
- if (!activeSeries.has(currentNode.series)) continue;
- while (parent = currentNode.parent) {
- let parentNode = nodesDict[parent];
- if (activeSeries.has(parentNode.series)) {
- node.parent = parent;
- break;
- }
- currentNode = parentNode;
- }
- if (node.parent && !activeSeries.has(nodesDict[node.parent].series)) {
- node.parent = null;
- }
- filteredNodes.push(node);
- }
- return filteredNodes;
-}
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__creator__ = __webpack_require__(43);
+
+
+/* harmony default export */ __webpack_exports__["a"] = function(name) {
+ var create = typeof name === "function" ? name : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__creator__["a" /* default */])(name);
+ return this.select(function() {
+ return this.appendChild(create.apply(this, arguments));
+ });
+};
-function toggleSelectionDisplay(selectionInViewport, selectionNotInViewport) {
- selectionInViewport.style("display", "inline");
- selectionNotInViewport.style("display", "none");
-}
/***/ }),
-/* 3 */
+/* 238 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lineage_plot_css__ = __webpack_require__(10);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lineage_plot_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__lineage_plot_css__);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_angular__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_angular__);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_d3__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_d3___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_d3__);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__shared_features_js__ = __webpack_require__(2);
-
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__namespace__ = __webpack_require__(44);
+function attrRemove(name) {
+ return function() {
+ this.removeAttribute(name);
+ };
+}
+function attrRemoveNS(fullname) {
+ return function() {
+ this.removeAttributeNS(fullname.space, fullname.local);
+ };
+}
+function attrConstant(name, value) {
+ return function() {
+ this.setAttribute(name, value);
+ };
+}
-class LineagePlotController {
- constructor($element, $window, $scope) {
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["a" /* attachActionOnResize */])($window, () => this.render({}));
- $element.addClass("ancestry ancestry-lineage-plot");
+function attrConstantNS(fullname, value) {
+ return function() {
+ this.setAttributeNS(fullname.space, fullname.local, value);
+ };
+}
- this.svg = __WEBPACK_IMPORTED_MODULE_2_d3__["select"]($element[0])
- .style("position", "relative")
- .append("svg");
+function attrFunction(name, value) {
+ return function() {
+ var v = value.apply(this, arguments);
+ if (v == null) this.removeAttribute(name);
+ else this.setAttribute(name, v);
+ };
+}
- this.maxAllowedDepth = 180;
- this.mouseStart = null;
- this.colours = __WEBPACK_IMPORTED_MODULE_2_d3__["scaleOrdinal"](__WEBPACK_IMPORTED_MODULE_2_d3__["schemeCategory10"]);
- this.selectionRect = null;
- this.tooltip = new __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["b" /* d3tooltip */](__WEBPACK_IMPORTED_MODULE_2_d3__["select"]($element[0]));
- this.defaultNode = {
- r: 4,
- "stroke-width": 2
- };
- this.selectedNodesSet = new Set();
- this.activeControls = null;
- this.LCD = null; // label collision detection
- this.lastLCDUpdateTime = 0;
- this.LCDUpdateID = null;
- this.heatmapColourScale = null;
- this.heatmapCircle = null;
- this.visibleSeries = new Set();
- this._$window = $window;
- this._$element = $element;
- this._$scope = $scope;
- }
+function attrFunctionNS(fullname, value) {
+ return function() {
+ var v = value.apply(this, arguments);
+ if (v == null) this.removeAttributeNS(fullname.space, fullname.local);
+ else this.setAttributeNS(fullname.space, fullname.local, v);
+ };
+}
- $onChanges(changes) {
- if (changes.value && changes.value.currentValue) {
- this.render({isNewData: true});
- }
- }
+/* harmony default export */ __webpack_exports__["a"] = function(name, value) {
+ var fullname = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__namespace__["a" /* default */])(name);
- render(options) {
+ if (arguments.length < 2) {
+ var node = this.node();
+ return fullname.local
+ ? node.getAttributeNS(fullname.space, fullname.local)
+ : node.getAttribute(fullname);
+ }
- let that = this;
- // clean svg before rendering plot
- this.svg.selectAll('*').remove();
+ return this.each((value == null
+ ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function"
+ ? (fullname.local ? attrFunctionNS : attrFunction)
+ : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));
+};
- let defs = this.svg.append("defs");
- if (!this.value || !this.value.data.length) return;
+/***/ }),
+/* 239 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let copy = __WEBPACK_IMPORTED_MODULE_1_angular___default.a.copy(this.value),
- layout = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["c" /* mergeTemplateLayout */])(copy.layout, layoutTemplate),
- seriesNames = Array.from(new Set(copy.data.map(d => d.series)));
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var callback = arguments[0];
+ arguments[0] = this;
+ callback.apply(null, arguments);
+ return this;
+};
- if (options.isNewData) {
- if (layout.seriesColours == null) {
- this.colours.domain([]);
- }
- this.visibleSeries = new Set(seriesNames);
- this.selectedNodesSet.clear();
- for (let node of this.value.data.filter(d => d.selected === true)) {
- this.selectedNodesSet.add(node.name);
- }
- }
- let treeData = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["d" /* filterSeries */])(copy.data, this.visibleSeries),
- longestNodeName = treeData.length ? treeData.reduce((a, b) => a.name.length > b.name.length ? a : b).name : "",
- verticalExtraSpace = 40,
- pathname = this._$window.location.pathname,
- maxLabelLength = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["e" /* testLabelLength */])(this.svg, longestNodeName, layout.nodeLabel),
- maxLabelOffset = __WEBPACK_IMPORTED_MODULE_2_d3__["max"](layout.nodeLabelPositions, (pos) => Math.abs(pos.x)),
- legendHeight = 0, legendWidth = 0, colourbarHeight = 0, colourbarWidth = 0,
- legendOut = {top: false, right: false, bottom: false, left: false},
- lcdEnabled = layout.labelCollisionDetection.enabled != "never",
- lastTransform = __WEBPACK_IMPORTED_MODULE_2_d3__["zoomIdentity"],
- showAxisTitle = layout.axis.show && !layout.axis.gridOnly && layout.axis.title,
- showHeatmapTitle = layout.heatmap.enabled && layout.heatmap.title !== null,
- colourBarOrigWidth = layout.heatmap.colourBar.width, colourBarOrigHeight = layout.heatmap.colourBar.height,
- colourBarOffset = layout.heatmap.enabled && layout.heatmap.colourBar.show ? 15 : 0,
- colourbar = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](),
- legend = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](),
- xAxisOffset = 0,
- titleSVG = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](),
- axisSVG = __WEBPACK_IMPORTED_MODULE_2_d3__["select"]();
+/***/ }),
+/* 240 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (layout.legend.show) {
- if (layout.legend.anchor.x == "outside") legendOut[layout.legend.position.x] = true;
- if (layout.legend.anchor.y == "outside") legendOut[layout.legend.position.y] = true;
- }
+"use strict";
+function classArray(string) {
+ return string.trim().split(/^|\s+/);
+}
- if (maxLabelLength < 40) maxLabelLength = 40;
+function classList(node) {
+ return node.classList || new ClassList(node);
+}
- let initialLabelPosition = layout.nodeLabelPositions[0];
+function ClassList(node) {
+ this._node = node;
+ this._names = classArray(node.getAttribute("class") || "");
+}
- let virtualRootNode = {name: "virtualRoot", children: [], parent: null};
+ClassList.prototype = {
+ add: function(name) {
+ var i = this._names.indexOf(name);
+ if (i < 0) {
+ this._names.push(name);
+ this._node.setAttribute("class", this._names.join(" "));
+ }
+ },
+ remove: function(name) {
+ var i = this._names.indexOf(name);
+ if (i >= 0) {
+ this._names.splice(i, 1);
+ this._node.setAttribute("class", this._names.join(" "));
+ }
+ },
+ contains: function(name) {
+ return this._names.indexOf(name) >= 0;
+ }
+};
- let allTrees = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["f" /* createTreeLayout */])(treeData),
- root = virtualRootNode;
+function classedAdd(node, names) {
+ var list = classList(node), i = -1, n = names.length;
+ while (++i < n) list.add(names[i]);
+}
- virtualRootNode.children = allTrees.map(node => {
- node.parent = "virtualRoot";
- return node;
- });
+function classedRemove(node, names) {
+ var list = classList(node), i = -1, n = names.length;
+ while (++i < n) list.remove(names[i]);
+}
- if (layout.axis.valueProperty === "default") {
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["s" /* spreadGenerations */])(root);
- }
+function classedTrue(names) {
+ return function() {
+ classedAdd(this, names);
+ };
+}
- let types = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["j" /* createNodeTypes */])(treeData, layout.nodeTypes, this.defaultNode),
- nodeAttr = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["k" /* createDynamicNodeAttr */])(types, Object.keys(this.defaultNode));
+function classedFalse(names) {
+ return function() {
+ classedRemove(this, names);
+ };
+}
- // FIXME: time plotting not implemented / checked yet
- let isTimePlot = false;//trees[0].generation instanceof Date;
+function classedFunction(names, value) {
+ return function() {
+ (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);
+ };
+}
- let elementWidth = this._$element[0].offsetWidth,
- elementHeight = this._$element[0].offsetHeight;
+/* harmony default export */ __webpack_exports__["a"] = function(name, value) {
+ var names = classArray(name + "");
+ if (arguments.length < 2) {
+ var list = classList(this.node()), i = -1, n = names.length;
+ while (++i < n) if (!list.contains(names[i])) return false;
+ return true;
+ }
- let margin = layout.margin;
+ return this.each((typeof value === "function"
+ ? classedFunction : value
+ ? classedTrue
+ : classedFalse)(names, value));
+};
- if (layout.title) margin.top += legendOut.top ? 26 : 25;
- //if (!(layout.legend.position.y == "top" && layout.legend.anchor.y == "outside")) margin.top += 10;
- if (showAxisTitle) margin.bottom += legendOut.bottom ? 16 : 18;
- let width = layout.width || elementWidth,
- height = layout.height || elementHeight;
+/***/ }),
+/* 241 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- // render chart area
- this.svg.attr("width", width + margin.left + margin.right)
- .attr("height", height + margin.top + margin.bottom);
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(4);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__enter__ = __webpack_require__(92);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constant__ = __webpack_require__(232);
- this.svg.append("rect")
- .attr("x", 0)
- .attr("y", 0)
- .attr("width", width)
- .attr("height", height)
- .attr("fill", layout.backgroundColour);
- let chart = this.svg.append("g");
- if (layout.seriesColours != null) {
- this.colours = (series) => layout.seriesColours[series];
- }
- if (layout.heatmap.enabled) {
+var keyPrefix = "$"; // Protect against keys like “__proto__”.
- let domain = __WEBPACK_IMPORTED_MODULE_2_d3__["extent"](treeData, node => node.z);
+function bindIndex(parent, group, enter, update, exit, data) {
+ var i = 0,
+ node,
+ groupLength = group.length,
+ dataLength = data.length;
- if (domain[0] == domain[1]) {
- if (domain[0] === undefined) {
- domain[0] = domain[1] = 0;
- }
- domain[0] -= 0.5;
- domain[1] += 0.5;
- }
+ // Put any non-null nodes that fit into update.
+ // Put any null nodes into enter.
+ // Put any remaining data into enter.
+ for (; i < dataLength; ++i) {
+ if (node = group[i]) {
+ node.__data__ = data[i];
+ update[i] = node;
+ } else {
+ enter[i] = new __WEBPACK_IMPORTED_MODULE_1__enter__["b" /* EnterNode */](parent, data[i]);
+ }
+ }
- this.heatmapColourScale = __WEBPACK_IMPORTED_MODULE_2_d3__["scaleLinear"]()
- .domain(domain)
- .range(layout.heatmap.colourScale.map(v => v[1]));
+ // Put any non-null nodes that don’t fit into exit.
+ for (; i < groupLength; ++i) {
+ if (node = group[i]) {
+ exit[i] = node;
+ }
+ }
+}
- if (layout.heatmap.colourBar.show) {
- layout.heatmap.colourBar.height = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* calcColourBarSize */])(colourBarOrigHeight, height);
- layout.heatmap.colourBar.width = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* calcColourBarSize */])(colourBarOrigWidth, width);
+function bindKey(parent, group, enter, update, exit, data, key) {
+ var i,
+ node,
+ nodeByKeyValue = {},
+ groupLength = group.length,
+ dataLength = data.length,
+ keyValues = new Array(groupLength),
+ keyValue;
+
+ // Compute the key for each node.
+ // If multiple nodes have the same key, the duplicates are added to exit.
+ for (i = 0; i < groupLength; ++i) {
+ if (node = group[i]) {
+ keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);
+ if (keyValue in nodeByKeyValue) {
+ exit[i] = node;
+ } else {
+ nodeByKeyValue[keyValue] = node;
+ }
+ }
+ }
+
+ // Compute the key for each datum.
+ // If there a node associated with this key, join and add it to update.
+ // If there is not (or the key is a duplicate), add it to enter.
+ for (i = 0; i < dataLength; ++i) {
+ keyValue = keyPrefix + key.call(parent, data[i], i, data);
+ if (node = nodeByKeyValue[keyValue]) {
+ update[i] = node;
+ node.__data__ = data[i];
+ nodeByKeyValue[keyValue] = null;
+ } else {
+ enter[i] = new __WEBPACK_IMPORTED_MODULE_1__enter__["b" /* EnterNode */](parent, data[i]);
+ }
+ }
- colourbar = chart.append("g")
- .attr("class", "ancestry-colourbar");
+ // Add any remaining nodes that were not bound to data to exit.
+ for (i = 0; i < groupLength; ++i) {
+ if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {
+ exit[i] = node;
+ }
+ }
+}
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["h" /* drawColourBar */])(colourbar, this.heatmapColourScale.domain(), layout.heatmap, defs, pathname);
+/* harmony default export */ __webpack_exports__["a"] = function(value, key) {
+ if (!value) {
+ data = new Array(this.size()), j = -1;
+ this.each(function(d) { data[++j] = d; });
+ return data;
+ }
+
+ var bind = key ? bindKey : bindIndex,
+ parents = this._parents,
+ groups = this._groups;
+
+ if (typeof value !== "function") value = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__constant__["a" /* default */])(value);
+
+ for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {
+ var parent = parents[j],
+ group = groups[j],
+ groupLength = group.length,
+ data = value.call(parent, parent && parent.__data__, j, parents),
+ dataLength = data.length,
+ enterGroup = enter[j] = new Array(dataLength),
+ updateGroup = update[j] = new Array(dataLength),
+ exitGroup = exit[j] = new Array(groupLength);
+
+ bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);
+
+ // Now connect the enter nodes to their following update node, such that
+ // appendChild can insert the materialized enter node before this node,
+ // rather than at the end of the parent node.
+ for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {
+ if (previous = enterGroup[i0]) {
+ if (i0 >= i1) i1 = i0 + 1;
+ while (!(next = updateGroup[i1]) && ++i1 < dataLength);
+ previous._next = next || null;
+ }
+ }
+ }
- let bbox = colourbar.node().getBoundingClientRect(),
- pos = layout.heatmap.colourBar.position;
- colourbarWidth = bbox.width;
- colourbarHeight = bbox.height;
- if (pos === "right" || pos === "left")
- margin.right += colourbarWidth - (showHeatmapTitle ? 1 : 0) + colourBarOffset;
- //else if (pos === "top" || pos === "bottom")
- // margin.top += colourbarHeight;
- }
- }
+ update = new __WEBPACK_IMPORTED_MODULE_0__index__["b" /* Selection */](update, parents);
+ update._enter = enter;
+ update._exit = exit;
+ return update;
+};
- if (layout.legend.show) {
- let pos = layout.legend.position,
- anchor = layout.legend.anchor,
- orientation = layout.legend.orientation;
- let splitAfter = orientation === "horizontal" ? 0 : 1;
+/***/ }),
+/* 242 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let drawLegend = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["i" /* d3legend */])()
- .splitAfter(splitAfter)
- .position(pos)
- .anchor(anchor)
- .seriesNames(seriesNames)
- .colourScale(this.colours)
- .backgroundColour(layout.legend.backgroundColour || layout.backgroundColour)
- .maxSize({width, height})
- .onClick(legendClick)
- .selectedItems(this.visibleSeries);
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(value) {
+ return arguments.length
+ ? this.property("__data__", value)
+ : this.node().__data__;
+};
- legend = chart.append("g")
- .attr("class", "ancestry-legend")
- .call(drawLegend);
- let bbox = legend.node().getBoundingClientRect();
- legendHeight = bbox.height;
- legendWidth = bbox.width;
+/***/ }),
+/* 243 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (anchor.x === "outside" && pos.x !== "center") {
- margin[pos.x] += legendOut.right ? legendWidth - 10 : (legendOut.left ? legendWidth - 11 : legendWidth);
- }
- else if (anchor.y === "outside" && pos.y !== "center") {
- margin[pos.y] += legendOut.bottom ? (layout.axis.show && !layout.axis.gridOnly ? legendHeight - 9 : legendHeight - 12) :
- (legendOut.top ? legendHeight - 11 : legendHeight);
- }
- }
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__window__ = __webpack_require__(50);
- width = (layout.width || elementWidth) - margin.right - margin.left;
-
- function legendClick(label) {
- let clicked = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](this);
- if (that.visibleSeries.has(label))
- that.visibleSeries.delete(label);
- else
- that.visibleSeries.add(label);
- clicked.classed("legend-item-selected", that.visibleSeries.has(label));
- clicked.select("rect.shape").attr("fill", that.visibleSeries.has(label) ? that.colours(label) : "white");
- that.render({isNewData: false});
- }
-
- // diagonal generator
- function diagonal(d) {
- let c = Math.abs(d.parent.x - d.x) / 2;
-
- return "M" + d.x + "," + d.y
- + "C" + (d.parent.x + c) + "," + d.y
- + " " + (d.parent.x + c) + "," + d.parent.y
- + " " + d.parent.x + "," + d.parent.y;
- }
-
- let generationExtent = __WEBPACK_IMPORTED_MODULE_2_d3__["extent"](treeData, node => node.generation),
- originalExtent = __WEBPACK_IMPORTED_MODULE_1_angular___default.a.copy(generationExtent);
-
- generationExtent[1] += 1;
- generationExtent[0] -= 1;
- let depth = width / (generationExtent[1] - generationExtent[0]);
-
- let spaceRight = 1,
- treeWidth = width;
- //trim depth if exceeds maximum allowed depth
- if (depth > this.maxAllowedDepth) {
- depth = this.maxAllowedDepth;
- spaceRight = (width / depth) - originalExtent[1];
- generationExtent[1] = width / depth;
- } else if (depth < layout.minGenerationWidth) {
- depth = layout.minGenerationWidth;
- treeWidth = (generationExtent[1] - generationExtent[0]) * depth;
- }
-
- // define x scale
- let xScale = __WEBPACK_IMPORTED_MODULE_2_d3__["scaleLinear"]()
- .domain(generationExtent)
- .range([0, treeWidth]);
-
-
- let labelExtraSpace = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["l" /* getExtraSpaceForLabel */])(xScale, maxLabelLength + maxLabelOffset + 5),
- newDomain = __WEBPACK_IMPORTED_MODULE_1_angular___default.a.copy(xScale.domain());
-
- if (labelExtraSpace > 1) {
- newDomain[0] = originalExtent[0] - labelExtraSpace;
- }
- if (labelExtraSpace > spaceRight) {
- newDomain[1] = originalExtent[1] + labelExtraSpace;
- }
-
- xScale.domain(newDomain);
-
- let clipRectId = `lineage-clip-rect${__WEBPACK_IMPORTED_MODULE_2_d3__["selectAll"]("clipPath").size()}`,
- treesClipRect = defs.append("svg:clipPath")
- .attr("id", clipRectId)
- .append("svg:rect")
- .attr("x", 0)
- .attr("y", 0)
- .attr("width", width)
- .attr("height", height);
-
- let axisClipRectId = `lineage-clip-rect${__WEBPACK_IMPORTED_MODULE_2_d3__["selectAll"]("clipPath").size()}`,
- axisClipRect = defs.append("svg:clipPath")
- .attr("id", axisClipRectId)
- .append("svg:rect")
- .attr("x", 0)
- .attr("y", -100)
- .attr("width", width)
- .attr("height", height + 100);
-
- // Define x axis and grid
- let xAxis = __WEBPACK_IMPORTED_MODULE_2_d3__["axisBottom"]()
- .scale(xScale)
- .tickSizeInner(0)
- .tickSizeOuter(0);
-
- //render x axis
- if (layout.axis.show) {
- axisSVG = chart.append("g")
- .attr("clip-path", `url(${pathname}#${axisClipRectId})`)
- .append("g")
- .attr("class", "axis x-axis")
- .call(xAxis);
-
- if (!layout.axis.gridOnly) {
- xAxisOffset = axisSVG.node().getBBox().height;
- margin.bottom += xAxisOffset - 3;
- }
- xAxis.ticks(Math.ceil(xScale.domain().reduce((a, b) => b - a)));
- }
+function dispatchEvent(node, type, params) {
+ var window = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__window__["a" /* default */])(node),
+ event = window.CustomEvent;
- height = (layout.height || elementHeight) - margin.top - margin.bottom;
+ if (typeof event === "function") {
+ event = new event(type, params);
+ } else {
+ event = window.document.createEvent("Event");
+ if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;
+ else event.initEvent(type, false, false);
+ }
- treesClipRect.attr("height", height);
- treesClipRect.attr("height", height + 100);
+ node.dispatchEvent(event);
+}
- xAxis.tickSizeInner(-height);
- axisSVG.attr("transform", `translate(0, ${height})`).call(xAxis);
- axisSVG.selectAll(".tick line").attr("opacity", 0.2).style("shape-rendering", "crispEdges");
- axisSVG.selectAll("path.domain").style("shape-rendering", "crispEdges");
- this.svg.selectAll(".axis path, .axis line").attr("stroke", layout.axis.colour);
+function dispatchConstant(type, params) {
+ return function() {
+ return dispatchEvent(this, type, params);
+ };
+}
- chart.attr("transform", `translate(${margin.left}, ${margin.top})`);
+function dispatchFunction(type, params) {
+ return function() {
+ return dispatchEvent(this, type, params.apply(this, arguments));
+ };
+}
- let treeLayout = __WEBPACK_IMPORTED_MODULE_2_d3__["tree"]().size([height - verticalExtraSpace, treeWidth]),
- nodes = treeLayout(__WEBPACK_IMPORTED_MODULE_2_d3__["hierarchy"](root, d => d.children));
+/* harmony default export */ __webpack_exports__["a"] = function(type, params) {
+ return this.each((typeof params === "function"
+ ? dispatchFunction
+ : dispatchConstant)(type, params));
+};
- let descendants = nodes.descendants().filter(n => n.parent !== null);
- // Calculate depth positions.
- descendants.forEach(node => {
- node.y = node.x + verticalExtraSpace / 2;
- node.x = xScale(node.data.generation);
- });
- this.svg.attr("width", width + margin.left + margin.right)
- .attr("height", height + margin.top + margin.bottom);
+/***/ }),
+/* 244 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- // render chart title
- if (layout.title) {
- titleSVG = chart.append("text")
- .attr("x", (width / 2))
- .attr("y", legendOut.top ? -legendHeight : -10)
- .attr("text-anchor", "middle")
- .style("font-size", "20px")
- .text(layout.title);
- }
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function(callback) {
- // render x axis label if exists
- if (showAxisTitle) {
- chart.append("text") // text label for the x axis
- .attr("class", "axis-title")
- .style("text-anchor", "middle")
- .text(layout.axis.title)
- .attr("transform", `translate(${width / 2}, ${height + xAxisOffset + 15})`);
- }
+ for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
+ for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {
+ if (node = group[i]) callback.call(node, node.__data__, i, group);
+ }
+ }
- if (layout.axis.gridOnly) {
- chart.selectAll("g.x-axis path.domain, g.x-axis g.tick text").style("opacity", 1e-6);
- }
+ return this;
+};
- if (layout.legend.show) {
- let pos = layout.legend.position,
- anchor = layout.legend.anchor,
- titleOffset = showAxisTitle ? 16 : 0,
- posX = pos.x === "left" ? 0 : (pos.x === "right" ? width + (anchor.x === "outside" ? colourBarOffset + colourbarWidth : 0) : width / 2),
- posY = pos.y === "top" ? 0 : (pos.y === "bottom" ? height - 1 + (anchor.y === "outside" ? xAxisOffset + titleOffset : 0) : height / 2);
- legend.attr("transform", `translate(${posX},${posY})`);
- }
+/***/ }),
+/* 245 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (layout.heatmap.enabled && layout.heatmap.colourBar.show) {
- layout.heatmap.colourBar.height = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* calcColourBarSize */])(colourBarOrigHeight, height);
- layout.heatmap.colourBar.width = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* calcColourBarSize */])(colourBarOrigWidth, width);
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ return !this.node();
+};
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["h" /* drawColourBar */])(colourbar, this.heatmapColourScale.domain(), layout.heatmap, defs, pathname);
- colourbar.attr("transform", `translate(${width + colourBarOffset},${(height - layout.heatmap.colourBar.height)/2})`);
- }
- // for nicer png downloads
- this.svg.selectAll(".tick text").attr("font-size", 12);
- let mouseCaptureGroup = chart.append("g");
+/***/ }),
+/* 246 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let mouseRect = mouseCaptureGroup.append("rect")
- .attr("id", "mouse-capture")
- .attr("width", treeWidth)
- .attr("height", height)
- .style("fill", "transparent");
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sparse__ = __webpack_require__(93);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__index__ = __webpack_require__(4);
- let treesContainer = chart.append("g")
- .attr("clip-path", `url(${pathname}#${clipRectId})`)
- .append("g")
- .attr("id", "trees-containter");
- if (layout.heatmap.enabled) {
- this.heatmapCircle = treesContainer.append("g")
- .attr("class", "heatmap-layer")
- .selectAll("circle.heatmap-circle")
- .data(descendants.filter(n => !isNaN(parseFloat(n.data.z))))
- .enter()
- .append("circle")
- .attr("class", "heatmap-circle")
- .style("fill", d => this.heatmapColourScale(d.data.z))
- .style("opacity", layout.heatmap.opacity)
- .attr("transform", d => `translate(${d.x},${d.y})`);
-
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(this.heatmapCircle, layout.heatmap.circle);
- }
-
-
- // Declare the links
- let link = treesContainer.append("g")
- .attr("class", "link-layer")
- .selectAll("path.link")
- //.data(links.filter(l => l.source.name != "virtualRoot"));
- .data(descendants.filter(n => n.parent.data.name != "virtualRoot"))
- .enter()
- .insert("path", "g")
- .attr("class", "link")
- .attr("d", diagonal);
-
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(link, layout.link);
-
- let circle = treesContainer.append("g")
- .attr("class", "node-circle-layer")
- .selectAll("circle.node-circle")
- .data(descendants)
- .enter().append("circle")
- .attr("class", "node-circle")
- .classed("selected", d => this.selectedNodesSet.has(d.data.name))
- .attr("cx", d => d.x)
- .attr("cy", d => d.y)
- .style("fill", d => !this.selectedNodesSet.has(d.data.name) ? '#FFF' : this.colours(d.data.series))
- .style("stroke", d => this.colours(d.data.series));
-
- if (layout.tooltip.show) {
- circle.on("mouseover", function (d, i) {
- let {x: xPos, y: yPos} = __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["b" /* d3tooltip */].getRelativePosition(this, that._$element[0]),
- seriesBar = layout.tooltip.showSeriesBar ?
- `` : "",
- text = d.data.tooltip ? d.data.tooltip.map((line) => `${line}`).join("") :
- `${d.data.name}`;
- that.tooltip.html(seriesBar + text).position([xPos, yPos]).show();
- })
- .on("mouseout", (d) => {
- this.tooltip.hide();
- });
- }
- toggleNodeClickCallback(true);
-
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(circle, nodeAttr);
-
- // Add node labels
- let nodeLabel = treesContainer.append("g")
- .attr("class", "node-label-layer")
- .selectAll("text.node-label")
- .data(descendants.map(d => {
- return {node: d};
- }))
- .enter()
- .append("text")
- .attr("class", "node-label")
- .attr("dy", ".35em")
- .text(d => d.node.data.name)
- .style("opacity", 1)
- .each(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["n" /* getBBox */])
- .each(d => {
- d.currentLabelPos = initialLabelPosition;
- d.scaledLabelPos = initialLabelPosition;
- d.x = d.node.x + d.scaledLabelPos.x;
- d.y = d.node.y + d.scaledLabelPos.y;
- })
- .attr("x", d => d.x)
- .attr("y", d => d.y)
- .attr("text-anchor", d => d.scaledLabelPos['text-anchor']);
-
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(nodeLabel, layout.nodeLabel);
- this.svg.selectAll("text").attr("fill", layout.textColour);
-
- let linkLabel = treesContainer.append("g")
- .attr("class", "link-label-layer")
- .selectAll("text.link-label")
- .data(descendants
- .filter(d => d.parent.data.name != "virtualRoot" && d.data.inLinkLabel != null)
- .map(d => {
- return {nodeTo: d};
- }))
- .enter()
- .append("text")
- .attr("class", "link-label")
- .attr("text-anchor", "middle")
- .each(d => {
- d.x = (d.nodeTo.x + d.nodeTo.parent.x) / 2;
- d.y = (d.nodeTo.y + d.nodeTo.parent.y) / 2;
- })
- .attr("x", d => d.x)
- .attr("y", d => d.y)
- .attr("dy", ".35em")
- .text(d => d.nodeTo.data.inLinkLabel)
- .style("opacity", 1)
- .each(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["n" /* getBBox */]);
-
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(linkLabel, layout.linkLabel);
-
- let maxNodeLabelLength = __WEBPACK_IMPORTED_MODULE_2_d3__["max"](nodeLabel.data().map(d => d.bbox.width)),
- maxNodeLabelHeight = __WEBPACK_IMPORTED_MODULE_2_d3__["max"](nodeLabel.data().map(d => d.bbox.height)),
- maxLinkLabelHeight = __WEBPACK_IMPORTED_MODULE_2_d3__["max"](linkLabel.data().map(d => d.bbox.height)),
- maxLinkLabelLength = __WEBPACK_IMPORTED_MODULE_2_d3__["max"](linkLabel.data().map(d => d.bbox.width)),
- nodeSearchRadius = {x: 2 * maxNodeLabelLength + 10, y: 2 * maxNodeLabelHeight},
- linkSearchRadius = {x: maxLinkLabelLength + 10, y: 2 * maxLinkLabelHeight};
-
- if (layout.labelCollisionDetection.enabled === "onEveryChange" || layout.labelCollisionDetection.enabled === "onInit" ||
- layout.labelCollisionDetection.enabled === "onDelay") {
- let order = [[],[]];
- order[layout.labelCollisionDetection.order.nodeLabel - 1].push(nodeLabel);
- order[layout.labelCollisionDetection.order.linkLabel - 1].push(linkLabel);
- this.LCD = new __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["o" /* LabelCollisionDetection */]([circle], order, layout.nodeLabelPositions, layout.nodeLabel, width, height, nodeSearchRadius, linkSearchRadius);
- this.LCD.recalculateLabels(__WEBPACK_IMPORTED_MODULE_2_d3__["zoomIdentity"]);
- }
-
- legend.each(function () {
- this.parentNode.appendChild(this);
- });
- titleSVG.each(function () {
- this.parentNode.appendChild(this);
- });
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ return new __WEBPACK_IMPORTED_MODULE_1__index__["b" /* Selection */](this._exit || this._groups.map(__WEBPACK_IMPORTED_MODULE_0__sparse__["a" /* default */]), this._parents);
+};
- if (layout.groupSelection.enabled) {
- this.selectionRect = mouseCaptureGroup.append("rect")
- .attr("class", "selection-rect");
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(this.selectionRect, layout.groupSelection.selectionRectangle);
- }
+/***/ }),
+/* 247 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- function click() {
- __WEBPACK_IMPORTED_MODULE_2_d3__["event"].preventDefault();
- let n = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](this);
- if (!n.classed("selected")) {
- n.classed("selected", true);
- n.style("fill", d => that.colours(d.data.series));
- }
- else {
- n.classed("selected", false);
- n.style("fill", "#FFF");
- }
- updateSelection();
- }
- function mouseDown() {
- __WEBPACK_IMPORTED_MODULE_2_d3__["event"].preventDefault();
- that.mouseStart = __WEBPACK_IMPORTED_MODULE_2_d3__["mouse"](mouseRect.node());
- mouseRect.on("mousemove", mouseMove)
- .on("mouseup", finalizeSelection)
- .on("mouseout", finalizeSelection);
- circle.style("pointer-events", "none");
- }
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(4);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__matcher__ = __webpack_require__(91);
- function finalizeSelection() {
- that.selectionRect.attr("width", 0);
- updateSelection();
- circle.style("pointer-events", "all");
- mouseRect.on("mousemove", null)
- .on("mouseup", null)
- .on("mouseout", null);
- }
- function mouseMove() {
- let p = __WEBPACK_IMPORTED_MODULE_2_d3__["mouse"](mouseRect.node());
- let d = {
- x: (p[0] < that.mouseStart[0] ? p[0] : that.mouseStart[0]),
- y: (p[1] < that.mouseStart[1] ? p[1] : that.mouseStart[1]),
- height: Math.abs(p[1] - that.mouseStart[1]),
- width: Math.abs(p[0] - that.mouseStart[0])
- };
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(that.selectionRect, d);
- selectPoints(that.selectionRect);
- }
- function selectPoints(rect) {
- let rect_x1 = +rect.attr("x"),
- rect_y1 = +rect.attr("y"),
- rect_x2 = +rect.attr("width") + rect_x1,
- rect_y2 = +rect.attr("height") + rect_y1,
- any = false;
-
- circle.each(function (d, i) {
- let n = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](this);
- let tx = n.attr("cx"),
- ty = n.attr("cy");
-
- if (tx >= rect_x1 && tx <= rect_x2 && ty >= rect_y1 && ty <= rect_y2) {
- n.classed("selected", true);
- n.style("fill", d => that.colours(d.data.series));
- any = true;
- }
- else if (!that.selectedNodesSet.has(d.data.name)) {
- n.classed("selected", false);
- n.style("fill", "#FFF");
- }
- });
+/* harmony default export */ __webpack_exports__["a"] = function(match) {
+ if (typeof match !== "function") match = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__matcher__["a" /* default */])(match);
- return any;
- }
+ for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
+ if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
+ subgroup.push(node);
+ }
+ }
+ }
- function updateSelection() {
- let wasChange = false;
+ return new __WEBPACK_IMPORTED_MODULE_0__index__["b" /* Selection */](subgroups, this._parents);
+};
- that.svg.selectAll("circle.node-circle.selected").each(d => {
- if (!that.selectedNodesSet.has(d.data.name)) {
- that.selectedNodesSet.add(d.data.name);
- wasChange = true;
- }
- });
- that.svg.selectAll("circle.node-circle:not(.selected)").each(d => {
- if (that.selectedNodesSet.has(d.data.name)) {
- that.selectedNodesSet.delete(d.data.name);
- wasChange = true;
- }
- });
+/***/ }),
+/* 248 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (wasChange && that.selectedNodes) {
- that._$scope.$apply(() => {
- that.selectedNodes({ $nodes: Array.from(that.selectedNodesSet)});
- });
- }
- }
+"use strict";
+function htmlRemove() {
+ this.innerHTML = "";
+}
- function toggleNodeClickCallback(active) {
- if (that.nodeClick === undefined) return;
+function htmlConstant(value) {
+ return function() {
+ this.innerHTML = value;
+ };
+}
- function nodeClickCallback(d) {
- that._$scope.$apply(() => {
- that.nodeClick({ $event: __WEBPACK_IMPORTED_MODULE_2_d3__["event"], $node: d.data});
- });
- }
+function htmlFunction(value) {
+ return function() {
+ var v = value.apply(this, arguments);
+ this.innerHTML = v == null ? "" : v;
+ };
+}
- circle.on('click', active ? nodeClickCallback : null);
- }
+/* harmony default export */ __webpack_exports__["a"] = function(value) {
+ return arguments.length
+ ? this.each(value == null
+ ? htmlRemove : (typeof value === "function"
+ ? htmlFunction
+ : htmlConstant)(value))
+ : this.node().innerHTML;
+};
- let zoom = __WEBPACK_IMPORTED_MODULE_2_d3__["zoom"]()
- .scaleExtent([1, layout.maxZoom])
- .extent([[0, 0],[width, height]])
- .translateExtent([[0, 0],[treeWidth, height]])
- .on("zoom", onZoom);
- function onZoom() {
- applyZoom(__WEBPACK_IMPORTED_MODULE_2_d3__["event"].transform);
- lastTransform = __WEBPACK_IMPORTED_MODULE_2_d3__["event"].transform;
- if (lcdEnabled) {
- applyLCD(__WEBPACK_IMPORTED_MODULE_2_d3__["event"].transform);
- }
- }
+/***/ }),
+/* 249 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__creator__ = __webpack_require__(43);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__selector__ = __webpack_require__(48);
- function linkVisible(d) {
- let dx = d.x * lastTransform.k + lastTransform.x, dy = d.y * lastTransform.k + lastTransform.y,
- dxParent = d.parent.x * lastTransform.k + lastTransform.x;
- return dx >= 0 && dxParent <= width && dy >= 0 && dy <= height;
- }
- function isVisible(d) {
- let dx = d.x * lastTransform.k + lastTransform.x, dy = d.y * lastTransform.k + lastTransform.y;
- return dx >= 0 && dx <= width && dy >= 0 && dy <= height;
- }
- function applyZoom(zoomTransform) {
- let [nodeLabelInViewport, nodeLabelNotInViewport] = nodeLabel.partition(isVisible),
- [linkLabelInViewport, linkLabelNotInViewport] = linkLabel.partition(isVisible),
- [linkInViewport, linkNotInViewport] = link.partition(linkVisible),
- [circleInViewport, circleNotInViewport] = circle.partition(isVisible);
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["p" /* toggleSelectionDisplay */])(nodeLabelInViewport, nodeLabelNotInViewport);
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["p" /* toggleSelectionDisplay */])(linkLabelInViewport, linkLabelNotInViewport);
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["p" /* toggleSelectionDisplay */])(linkInViewport, linkNotInViewport);
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["p" /* toggleSelectionDisplay */])(circleInViewport, circleNotInViewport);
+function constantNull() {
+ return null;
+}
- let scale = zoomTransform.k;
- treesContainer.attr("transform", zoomTransform);
- mouseCaptureGroup.attr("transform", zoomTransform);
- xAxis.ticks(Math.ceil(xScale.domain().reduce((a, b) => b - a) / scale));
- axisSVG.call(xAxis.scale(zoomTransform.rescaleX(xScale)));
- axisSVG.selectAll(".tick line").style("shape-rendering", "crispEdges").attr("opacity", 0.2).attr("stroke", layout.axis.colour);
- that.svg.selectAll(".tick text").attr("font-size", 12).attr("fill", layout.textColour);
- if (layout.axis.gridOnly) {
- chart.selectAll("g.x-axis g.tick text").style("opacity", 1e-6);
- }
+/* harmony default export */ __webpack_exports__["a"] = function(name, before) {
+ var create = typeof name === "function" ? name : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__creator__["a" /* default */])(name),
+ select = before == null ? constantNull : typeof before === "function" ? before : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__selector__["a" /* default */])(before);
+ return this.select(function() {
+ return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);
+ });
+};
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(circleInViewport, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["q" /* scaleProperties */])(nodeAttr, scale, true));
- if (layout.heatmap.enabled) {
- let [heatmapCircleInViewport, heatmapCircleNotInViewport] = that.heatmapCircle.partition(isVisible);
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["p" /* toggleSelectionDisplay */])(heatmapCircleInViewport, heatmapCircleNotInViewport);
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(heatmapCircleInViewport, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["q" /* scaleProperties */])(layout.heatmap.circle, scale));
- }
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(linkInViewport, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["q" /* scaleProperties */])(layout.link, scale));
- nodeLabelInViewport.each(d => {
- d.scaledLabelPos = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["q" /* scaleProperties */])(d.currentLabelPos, scale);
- d.x = d.node.x + d.scaledLabelPos.x;
- d.y = d.node.y + d.scaledLabelPos.y;
- })
- .attr("x", d => d.x)
- .attr("y", d => d.y)
- .attr("text-anchor", d => d.scaledLabelPos['text-anchor']);
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(nodeLabelInViewport, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["q" /* scaleProperties */])(layout.nodeLabel, scale));
-
- linkLabelInViewport.each(d => {
- d.x = (d.nodeTo.x + d.nodeTo.parent.x) / 2;
- d.y = (d.nodeTo.y + d.nodeTo.parent.y) / 2;
- })
- .attr("x", d => d.x)
- .attr("y", d => d.y);
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(linkLabelInViewport, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["q" /* scaleProperties */])(layout.linkLabel, scale));
+/***/ }),
+/* 250 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (layout.groupSelection.enabled) {
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(that.selectionRect, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["q" /* scaleProperties */])(layout.groupSelection.selectionRectangle, scale));
- }
- }
+"use strict";
+function lower() {
+ if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);
+}
- function onDoubleClick() {
- zoom.scaleTo(chart, 1);
- lastTransform = __WEBPACK_IMPORTED_MODULE_2_d3__["zoomTransform"](chart.node());
- applyZoom(lastTransform);
- }
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ return this.each(lower);
+};
- function applyLCD(transform) {
- if (layout.labelCollisionDetection.enabled === "onEveryChange") {
- that.LCD.recalculateLabels(transform);
- }
- else if (layout.labelCollisionDetection.enabled === "onDelay") {
- window.clearTimeout(that.LCDUpdateID);
- that.LCDUpdateID = window.setTimeout(() => {
- that.LCD.recalculateLabels(transform);
- }, layout.labelCollisionDetection.updateDelay);
- that.lastLCDUpdateTime = performance.now();
- }
- }
- let controls = {
- 'download': function() {},
- 'zoom': toggleZoom,
- 'select': toggleSelect,
- 'label': toggleLabels
- };
- if (this.activeControls == null) {
- this.activeControls = new Set(layout.controlsEnabledOnStart);
- }
+/***/ }),
+/* 251 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["r" /* createPlotControls */])(this._$element[0], controls, this.activeControls);
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(4);
- function toggleZoom(toggle) {
- if (toggle) {
- chart.call(zoom)
- .on('dblclick.zoom', onDoubleClick);
- }
- else {
- chart.on("wheel.zoom", null)
- .on("mousedown.zoom", null)
- .on("dblclick.zoom", null)
- .on("touchstart.zoom", null)
- .on("touchmove.zoom", null)
- .on("touchend.zoom", null)
- .on("touchcancel.zoom", null);
- }
- }
- function toggleSelect(toggle) {
- if (layout.groupSelection.enabled) {
- mouseRect.on("mousedown", toggle ? mouseDown : null);
- }
- circle.on("click", toggle ? click : null);
- if (!toggle) {
- toggleNodeClickCallback(true);
- }
- }
+/* harmony default export */ __webpack_exports__["a"] = function(selection) {
- function toggleLabels(toggle) {
- if (layout.labelCollisionDetection.enabled != "never" && layout.labelCollisionDetection.enabled != "onInit") {
- lcdEnabled = toggle;
- if (lcdEnabled) {
- that.LCD.recalculateLabels(lastTransform);
- }
- }
- nodeLabel.style("opacity", d => toggle && !d.isColliding ? 1 : 1e-6);
- linkLabel.style("opacity", d => toggle && !d.isColliding ? 1 : 1e-6);
- }
+ 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) {
+ for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
+ if (node = group0[i] || group1[i]) {
+ merge[i] = node;
+ }
}
-}
+ }
-__WEBPACK_IMPORTED_MODULE_2_d3__["selection"].prototype.partition = function(filterCallback) {
- let matched = [], unmatched = [];
- this.each(function(d) {
- (filterCallback(d) ? matched : unmatched).push(this);
- });
- return [__WEBPACK_IMPORTED_MODULE_2_d3__["selectAll"](matched), __WEBPACK_IMPORTED_MODULE_2_d3__["selectAll"](unmatched)];
-};
+ for (; j < m0; ++j) {
+ merges[j] = groups0[j];
+ }
-Number.prototype.clamp = function (min, max) {
- return Math.min(Math.max(this, min), max);
+ return new __WEBPACK_IMPORTED_MODULE_0__index__["b" /* Selection */](merges, this._parents);
};
-let layoutTemplate = {
- title: null,
- width: null,
- height: 600,
- backgroundColour: "none",
- textColour: "black",
- margin: {
- right: 10,
- left: 10,
- top: 10,
- bottom: 10
- },
- axis: {
- title: "",
- colour: "gray",
- show: true,
- gridOnly: false,
- valueProperty: "default"
- },
- nodeTypes: {},
- seriesColours: null,
- nodeLabel: {
- "font-size": 12,
- "font-family": "Roboto,Helvetica Neue,sans-serif"
- },
- linkLabel: {
- "font-size": 12,
- "font-family": "Roboto,Helvetica Neue,sans-serif"
- },
- labelCollisionDetection: {
- enabled: "never",
- updateDelay: 500,
- order: {
- linkLabel: 1,
- nodeLabel: 1
- }
- },
- link: {
- fill: "none",
- stroke: "#ccc",
- "stroke-width": 1
- },
- minGenerationWidth: 50,
- groupSelection: {
- enabled: false,
- selectionRectangle: {
- "stroke-width": 1,
- "stroke-dasharray": 4,
- rx: 3,
- ry: 3,
- stroke: "steelblue"
- }
- },
- maxZoom: 10,
- heatmap: {
- enabled: false,
- title: null,
- colourScale: [
- [0, '#008ae5'],
- [1, 'yellow']
- ],
- colourBar: {
- show: true,
- height: "90%",
- width: 30,
- position: "right"
- },
- circle: {
- r: 16
- },
- opacity: 0.4
- },
- legend: {
- show: false,
- position: {
- x: "right",
- y: "center"
- },
- anchor: {
- x: "outside",
- y: "inside"
- },
- orientation: "vertical",
- backgroundColour: null
- },
- tooltip: {
- show: true,
- showSeriesBar: false,
- align: "left"
- },
- nodeLabelPositions: [
- {
- x: 10,
- y: 0,
- "text-anchor": "start"
- },
- {
- x: -10,
- y: 0,
- "text-anchor": "end"
- }
- ],
- controlsEnabledOnStart: ['label']
-};
+/***/ }),
+/* 252 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-const LineagePlotComponent = {
- template: '',
- controller: LineagePlotController,
- bindings: {
- value: '<',
- selectedNodes: '&',
- nodeClick: '&'
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function() {
+
+ for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
+ for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {
+ var node = group[i];
+ if (node) return node;
}
+ }
+
+ return null;
};
-LineagePlotController.$$ngIsClass = true; // temporary Firefox fix
-/* unused harmony default export */ var _unused_webpack_default_export = __WEBPACK_IMPORTED_MODULE_1_angular___default.a.module('ancestry.lineage', [])
- //.directive('lineagePlot', LineagePlotDirective);
- .component('lineagePlot', LineagePlotComponent);
/***/ }),
-/* 4 */
+/* 253 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lineage_scatter_plot_css__ = __webpack_require__(11);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lineage_scatter_plot_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__lineage_scatter_plot_css__);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_angular__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_angular__);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_d3__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_d3___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_d3__);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__shared_features_js__ = __webpack_require__(2);
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var nodes = new Array(this.size()), i = -1;
+ this.each(function() { nodes[++i] = this; });
+ return nodes;
+};
+/***/ }),
+/* 254 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function() {
+
+ for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {
+ for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {
+ if (node = group[i]) {
+ if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);
+ next = node;
+ }
+ }
+ }
+ return this;
+};
-class LineageScatterPlotController {
- constructor($element, $window, $scope) {
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["a" /* attachActionOnResize */])($window, () => this.render({}));
- $element.addClass("ancestry ancestry-lineage-scatter-plot");
+/***/ }),
+/* 255 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- this.svg = __WEBPACK_IMPORTED_MODULE_2_d3__["select"]($element[0])
- .style("position", "relative")
- .append("svg");
+"use strict";
+function propertyRemove(name) {
+ return function() {
+ delete this[name];
+ };
+}
- this.mouseStart = null;
- this.colours = __WEBPACK_IMPORTED_MODULE_2_d3__["scaleOrdinal"](__WEBPACK_IMPORTED_MODULE_2_d3__["schemeCategory10"]);
- this.selectionRect = null;
- this.tooltip = new __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["b" /* d3tooltip */](__WEBPACK_IMPORTED_MODULE_2_d3__["select"]($element[0]));
- this.defaultNode = {
- r: 4,
- "stroke-width": 2
- };
- this.selectedNodesSet = new Set();
- this.activeControls = null;
- this.LCD = null; // label collision detection
- this.lastLCDUpdateTime = 0;
- this.LCDUpdateID = null;
- this.heatmapColourScale = null;
- this.heatmapCircle = null;
- this.visibleSeries = new Set();
- this._$window = $window;
- this._$element = $element;
- this.defaultTimeFormat = "%d %b %y";
- this.defaultScalarFormat = "g";
- this._$scope = $scope;
- //this.isDrag = false;
- //this.scale = 1;
- //this.translate = [0, 0];
- }
+function propertyConstant(name, value) {
+ return function() {
+ this[name] = value;
+ };
+}
- $onChanges(changes) {
- if (changes.value && changes.value.currentValue) {
- this.render({isNewData: true});
- }
- }
+function propertyFunction(name, value) {
+ return function() {
+ var v = value.apply(this, arguments);
+ if (v == null) delete this[name];
+ else this[name] = v;
+ };
+}
- render(options) {
+/* harmony default export */ __webpack_exports__["a"] = function(name, value) {
+ return arguments.length > 1
+ ? this.each((value == null
+ ? propertyRemove : typeof value === "function"
+ ? propertyFunction
+ : propertyConstant)(name, value))
+ : this.node()[name];
+};
- let that = this;
- // clean svg before rendering plot
- this.svg.selectAll('*').remove();
- let elementWidth = this._$element[0].offsetWidth,
- elementHeight = this._$element[0].offsetHeight;
+/***/ }),
+/* 256 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+function raise() {
+ if (this.nextSibling) this.parentNode.appendChild(this);
+}
- let marginRatio = {axisX: 0.15, axisY: 0.1};
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ return this.each(raise);
+};
- // don't continue rendering if there is no data
- if (!this.value || !this.value.data.length) return;
- let copy = __WEBPACK_IMPORTED_MODULE_1_angular___default.a.copy(this.value),
- layout = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["c" /* mergeTemplateLayout */])(copy.layout, layoutTemplate),
- seriesNames = Array.from(new Set(this.value.data.map(d => d.series)));
+/***/ }),
+/* 257 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (options.isNewData) {
- if (layout.seriesColours == null) {
- this.colours.domain([]);
- }
- this.visibleSeries = new Set(seriesNames);
- this.selectedNodesSet.clear();
- for (let node of this.value.data.filter(d => d.selected === true)) {
- this.selectedNodesSet.add(node.name);
- }
- }
+"use strict";
+function remove() {
+ var parent = this.parentNode;
+ if (parent) parent.removeChild(this);
+}
- let treeData = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["d" /* filterSeries */])(copy.data, this.visibleSeries),
- longestNodeName = treeData.length ? treeData.reduce((a, b) => a.name.length > b.name.length ? a : b).name : "",
- pathname = this._$window.location.pathname,
- maxLabelLength = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["e" /* testLabelLength */])(this.svg, longestNodeName, layout.nodeLabel),
- maxLabelOffset = __WEBPACK_IMPORTED_MODULE_2_d3__["max"](labelPositions, (pos) => Math.abs(pos.x)),
- legendHeight = 0, legendWidth = 0, colourbarHeight = 0, colourbarWidth = 0,
- colourBarOffset = layout.heatmap.enabled && layout.heatmap.colourBar.show ? 15 : 0,
- legendOut = {top:false, right: false, bottom:false, left:false},
- lcdEnabled = layout.labelCollisionDetection.enabled != "never",
- lastTransform = __WEBPACK_IMPORTED_MODULE_2_d3__["zoomIdentity"],
- showHeatmapTitle = layout.heatmap.enabled && layout.heatmap.title !== null,
- colourBarOrigWidth = layout.heatmap.colourBar.width, colourBarOrigHeight = layout.heatmap.colourBar.height,
- colourbar = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](),
- legend = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](),
- xAxisLabelSVG = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](),
- yAxisLabelSVG = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](),
- titleSVG = __WEBPACK_IMPORTED_MODULE_2_d3__["select"]();
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ return this.each(remove);
+};
- if (layout.legend.show) {
- if (layout.legend.anchor.x == "outside") legendOut[layout.legend.position.x] = true;
- if (layout.legend.anchor.y == "outside") legendOut[layout.legend.position.y] = true;
- }
- if (maxLabelLength < 40) maxLabelLength = 40;
+/***/ }),
+/* 258 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let virtualRootNode = {name: "virtualRoot", children: [], parent: null};
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(4);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__selector__ = __webpack_require__(48);
- let allTrees = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["f" /* createTreeLayout */])(treeData),
- root = virtualRootNode;
- virtualRootNode.children = allTrees.map(node => {
- node.parent = "virtualRoot";
- return node;
- });
- let margin = layout.margin,
- width = layout.width || elementWidth,
- height = layout.height || elementHeight;
+/* harmony default export */ __webpack_exports__["a"] = function(select) {
+ if (typeof select !== "function") select = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__selector__["a" /* default */])(select);
- this.svg.append("rect")
- .attr("x", 0)
- .attr("y", 0)
- .attr("width", width)
- .attr("height", height)
- .attr("fill", layout.backgroundColour);
+ for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
+ if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
+ if ("__data__" in node) subnode.__data__ = node.__data__;
+ subgroup[i] = subnode;
+ }
+ }
+ }
- if (layout.title) margin.top += legendOut.top ? 26 : 25;
- if (layout.xAxis.title) margin.bottom += legendOut.bottom ? 15 : 18;
- if (layout.yAxis.title) margin.left += 21;
+ return new __WEBPACK_IMPORTED_MODULE_0__index__["b" /* Selection */](subgroups, this._parents);
+};
- let chart = this.svg.append("g");
- let defs = chart.append("svg:defs");
- if (layout.seriesColours != null) {
- this.colours = (series) => layout.seriesColours[series];
- }
+/***/ }),
+/* 259 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (layout.heatmap.enabled) {
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(4);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__selectorAll__ = __webpack_require__(95);
- let domain = __WEBPACK_IMPORTED_MODULE_2_d3__["extent"](treeData, node => node.z);
- if (domain[0] == domain[1]) {
- if (domain[0] === undefined) {
- domain[0] = domain[1] = 0;
- }
- domain[0] -= 0.5;
- domain[1] += 0.5;
- }
- this.heatmapColourScale = __WEBPACK_IMPORTED_MODULE_2_d3__["scaleLinear"]()
- .domain(domain)
- .range(layout.heatmap.colourScale.map(v => v[1]));
+/* harmony default export */ __webpack_exports__["a"] = function(select) {
+ if (typeof select !== "function") select = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__selectorAll__["a" /* default */])(select);
- if (layout.heatmap.colourBar.show) {
- layout.heatmap.colourBar.height = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* calcColourBarSize */])(colourBarOrigHeight, height);
- layout.heatmap.colourBar.width = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* calcColourBarSize */])(colourBarOrigWidth, width);
+ for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
+ if (node = group[i]) {
+ subgroups.push(select.call(node, node.__data__, i, group));
+ parents.push(node);
+ }
+ }
+ }
- colourbar = chart.append("g")
- .attr("class", "ancestry-colourbar");
+ return new __WEBPACK_IMPORTED_MODULE_0__index__["b" /* Selection */](subgroups, parents);
+};
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["h" /* drawColourBar */])(colourbar, this.heatmapColourScale.domain(), layout.heatmap, defs, pathname);
- let bbox = colourbar.node().getBoundingClientRect(),
- pos = layout.heatmap.colourBar.position;
- colourbarWidth = bbox.width;
- colourbarHeight = bbox.height;
- if (pos === "right" || pos === "left")
- margin.right += colourbarWidth - (showHeatmapTitle ? 1 : 0) + colourBarOffset;
- //else if (pos === "top" || pos === "bottom")
- // margin.top += colourbarHeight;
- }
- }
+/***/ }),
+/* 260 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (layout.legend.show) {
- let pos = layout.legend.position,
- anchor = layout.legend.anchor,
- orientation = layout.legend.orientation;
-
- let splitAfter = orientation === "horizontal" ? 0 : 1;
-
- let drawLegend = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["i" /* d3legend */])()
- .splitAfter(splitAfter)
- .position(pos)
- .anchor(anchor)
- .seriesNames(seriesNames)
- .colourScale(this.colours)
- .backgroundColour(layout.legend.backgroundColour || layout.backgroundColour)
- .maxSize({width, height})
- .onClick(legendClick)
- .selectedItems(this.visibleSeries);
-
- legend = chart.append("g")
- .attr("class", "ancestry-legend")
- .call(drawLegend);
-
- let bbox = legend.node().getBoundingClientRect();
- legendHeight = bbox.height; legendWidth = bbox.width;
- if (anchor.x === "outside" && pos.x !== "center") {
- margin[pos.x] += legendOut.right ? legendWidth - 10 : (legendOut.left ? legendWidth - 11 : legendWidth);
- }
- else if(anchor.y === "outside" && pos.y !== "center") {
- margin[pos.y] += legendOut.bottom ? legendHeight - 8 : (legendOut.top ? legendHeight - 11 : legendHeight);
- }
- }
+"use strict";
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var size = 0;
+ this.each(function() { ++size; });
+ return size;
+};
- function legendClick(label) {
- let clicked = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](this);
- if (that.visibleSeries.has(label))
- that.visibleSeries.delete(label);
- else
- that.visibleSeries.add(label);
- clicked.classed("legend-item-selected", that.visibleSeries.has(label));
- clicked.select("rect.shape").attr("fill", that.visibleSeries.has(label) ? that.colours(label) : "white");
- that.render({isNewData: false})
- }
- let initialLabelPosition = labelPositions[0];
+/***/ }),
+/* 261 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let types = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["j" /* createNodeTypes */])(treeData, layout.nodeTypes, this.defaultNode),
- nodeAttr = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["k" /* createDynamicNodeAttr */])(types, Object.keys(this.defaultNode));
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(4);
- // check if x axis data is time data
- //let isTimePlot = nodesData[0].x instanceof Date;
- let isTimePlot = false;
- // define x and y axes formats
- let xAxisFormat = isTimePlot ? __WEBPACK_IMPORTED_MODULE_2_d3__["time"].format(layout.xAxis.format || this.defaultTimeFormat) :
- __WEBPACK_IMPORTED_MODULE_2_d3__["format"](layout.xAxis.format || this.defaultScalarFormat),
- yAxisFormat = __WEBPACK_IMPORTED_MODULE_2_d3__["format"](layout.yAxis.format || this.defaultScalarFormat);
+/* harmony default export */ __webpack_exports__["a"] = function(compare) {
+ if (!compare) compare = ascending;
- // find extent of input data and calculate margins
- let xExtent = __WEBPACK_IMPORTED_MODULE_2_d3__["extent"](treeData, node => node.x),
- yExtent = __WEBPACK_IMPORTED_MODULE_2_d3__["extent"](treeData, node => node.y);
+ function compareNode(a, b) {
+ return a && b ? compare(a.__data__, b.__data__) : !a - !b;
+ }
- if (xExtent[0] === undefined || yExtent[0] === undefined) {
- xExtent[0] = xExtent[1] = 0;
- yExtent[0] = yExtent[1] = 0;
- }
+ for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {
+ if (node = group[i]) {
+ sortgroup[i] = node;
+ }
+ }
+ sortgroup.sort(compareNode);
+ }
- let xMargin = xExtent[1] != xExtent[0] ? marginRatio.axisX * (xExtent[1] - xExtent[0]) / 2 : 0.5,
- yMargin = yExtent[1] != yExtent[0] ? marginRatio.axisY * (yExtent[1] - yExtent[0]) / 2 : 0.5;
+ return new __WEBPACK_IMPORTED_MODULE_0__index__["b" /* Selection */](sortgroups, this._parents).order();
+};
- // add margins to vertical axis data
- yExtent[0] -= yMargin; yExtent[1] += yMargin;
- // and horizontal
- xExtent[0] -= xMargin;xExtent[1] += xMargin;
+function ascending(a, b) {
+ return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
+}
- height = (layout.height || elementHeight) - margin.top - margin.bottom;
- // define x scale
- let xScale = __WEBPACK_IMPORTED_MODULE_2_d3__["scaleLinear"]() //(isTimePlot ? d3.time.scale() : d3.scaleLinear())
- .domain(xExtent)
- .range([0, width]);
+/***/ }),
+/* 262 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- // define x axis
- let xAxis = __WEBPACK_IMPORTED_MODULE_2_d3__["axisBottom"]()
- .scale(xScale)
- .tickSizeInner(0)
- .tickSizeOuter(0)
- .tickFormat(xAxisFormat);
+"use strict";
+function textRemove() {
+ this.textContent = "";
+}
- // define y scale
- let yScale = __WEBPACK_IMPORTED_MODULE_2_d3__["scaleLinear"]()
- .domain(yExtent)
- .range([height, 0]);
+function textConstant(value) {
+ return function() {
+ this.textContent = value;
+ };
+}
- // define y axis
- let yAxis = __WEBPACK_IMPORTED_MODULE_2_d3__["axisLeft"]()
- .scale(yScale)
- .tickSizeInner(0)
- .tickSizeOuter(0)
- .tickFormat(yAxisFormat);
+function textFunction(value) {
+ return function() {
+ var v = value.apply(this, arguments);
+ this.textContent = v == null ? "" : v;
+ };
+}
- // read x and y axes labels
- let xAxisLabel = layout.xAxis.title;
- let yAxisLabel = layout.yAxis.title;
+/* harmony default export */ __webpack_exports__["a"] = function(value) {
+ return arguments.length
+ ? this.each(value == null
+ ? textRemove : (typeof value === "function"
+ ? textFunction
+ : textConstant)(value))
+ : this.node().textContent;
+};
- let mouseCaptureGroup = chart.append("g");
- // render x axis
- let xAxisSVG = chart.append("g")
- .attr("class", "axis x-axis")
- .call(xAxis);
+/***/ }),
+/* 263 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- // rotate tick labels if time plot
- if (isTimePlot) {
- xAxisSVG.selectAll("text")
- .style("text-anchor", "end")
- .attr("dx", "-.8em")
- .attr("dy", ".15em")
- .attr("transform", "rotate(-65)");
- }
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sourceEvent__ = __webpack_require__(49);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__point__ = __webpack_require__(46);
- // render x axis label if exists
- let xAxisOffset = chart.selectAll("g.x-axis").node().getBBox().height;
- margin.bottom += xAxisOffset - 3;
- height = layout.height - margin.top - margin.bottom;
- if (xAxisLabel) {
- xAxisLabelSVG = chart.append("text") // text label for the x axis
- .attr("class", "axis-title")
- .style("text-anchor", "middle")
- .text(xAxisLabel);
- }
-
-
- // render y axis
- let yAxisSVG = chart.append("g")
- .attr("class", "axis y-axis")
- .call(yAxis);
- let yAxisOffset = chart.selectAll("g.y-axis").node().getBBox().width;
- margin.left += yAxisOffset;
- width = (layout.width || elementWidth) - margin.right - margin.left;
- //yAxisLabelSVG.attr("y", yAxisOffset - 25);
- xAxisLabelSVG.attr("transform", `translate(${width/2}, ${height + xAxisOffset + 15})`);
-
- // define node link function
- let nodeLink = function(d) {
- return `M ${d.parent.x} ${d.parent.y} L ${d.x} ${d.y}`;
- };
+/* harmony default export */ __webpack_exports__["a"] = function(node, touches, identifier) {
+ if (arguments.length < 3) identifier = touches, touches = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sourceEvent__["a" /* default */])().changedTouches;
- colourbar.attr("transform", `translate(${width + colourBarOffset},${(height - layout.heatmap.colourBar.height)/2})`);
- if (layout.legend.show) {
- let pos = layout.legend.position,
- anchor = layout.legend.anchor,
- xOffset = anchor.x === "outside" ? -yAxisOffset - (layout.yAxis.title ? 25 : 0) : 1,
- yOffset = 15 + (layout.xAxis.title ? 15 : 0),
- posX = pos.x === "left" ? xOffset : (pos.x === "right" ? width + (anchor.x === "outside" ? colourBarOffset + colourbarWidth : 0) : width / 2),
- posY = pos.y === "top" ? 0 : (pos.y === "bottom" ? height - 1 + (anchor.y === "outside" ? yOffset : 0): height / 2);
+ for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {
+ if ((touch = touches[i]).identifier === identifier) {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__point__["a" /* default */])(node, touch);
+ }
+ }
- legend.attr("transform", `translate(${posX},${posY})`);
- }
+ return null;
+};
- // render chart title
- if (layout.title) {
- titleSVG = chart.append("text")
- .attr("x", (width / 2))
- .attr("y", legendOut.top ? -legendHeight : -10)
- .attr("text-anchor", "middle")
- .style("font-size", "20px")
- .text(layout.title);
- }
- this.svg.attr("width", width + margin.left + margin.right)
- .attr("height", height + margin.top + margin.bottom);
+/***/ }),
+/* 264 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- yScale.range([height, 0]);
- xScale.range([0, width]);
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sourceEvent__ = __webpack_require__(49);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__point__ = __webpack_require__(46);
- let labelExtraSpace = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["l" /* getExtraSpaceForLabel */])(xScale, maxLabelLength + maxLabelOffset + 5),
- currentDomain = xScale.domain();
- if (labelExtraSpace > 0) {
- xScale.domain([currentDomain[0] - labelExtraSpace, currentDomain[1] + labelExtraSpace]);
- }
- let xScale0 = xScale.copy(),
- yScale0 = yScale.copy();
+/* harmony default export */ __webpack_exports__["a"] = function(node, touches) {
+ if (touches == null) touches = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__sourceEvent__["a" /* default */])().touches;
- xAxis.tickSizeInner(-height);
- yAxis.tickSizeInner(-width);
+ for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {
+ points[i] = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__point__["a" /* default */])(node, touches[i]);
+ }
- xAxisSVG.attr("transform", `translate(0, ${height})`).call(xAxis);
- yAxisSVG.call(yAxis);
+ return points;
+};
- // render y axis label if exists
- if (yAxisLabel) {
- yAxisLabelSVG = chart.append("text") // text label for the y axis
- .attr("class", "axis-title")
- .attr("transform", "rotate(-90)")
- .attr("y", -yAxisOffset - 10)
- .attr("x",-(height / 2))
- .style("text-anchor", "middle")
- .text(yAxisLabel);
- }
+/***/ }),
+/* 265 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (layout.heatmap.enabled && layout.heatmap.colourBar.show) {
- layout.heatmap.colourBar.height = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* calcColourBarSize */])(colourBarOrigHeight, height);
- layout.heatmap.colourBar.width = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* calcColourBarSize */])(colourBarOrigWidth, width);
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isoFormat__ = __webpack_require__(97);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__defaultLocale__ = __webpack_require__(51);
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["h" /* drawColourBar */])(colourbar, this.heatmapColourScale.domain(), layout.heatmap, defs, pathname);
- colourbar.attr("transform", `translate(${width + colourBarOffset},${(height - layout.heatmap.colourBar.height)/2})`);
- }
- // apply styles and attributes for png download purposes
- this.svg.selectAll(".tick line").attr("opacity", 0.2).style("shape-rendering", "crispEdges");
- this.svg.selectAll(".tick text").attr("font-size", 12);
- this.svg.selectAll("path.domain").style("shape-rendering", "crispEdges");
- this.svg.selectAll(".axis path, .axis line").attr("stroke", layout.axisColour);
- let mouseRect = mouseCaptureGroup.append("rect")
- .attr("id", "mouse-capture")
- .attr("x", -margin.left)
- .attr("y", -margin.top)
- .attr("width", width + margin.left + margin.right)
- .attr("height", height + margin.top + margin.bottom)
- .style("fill", "transparent");
+function parseIsoNative(string) {
+ var date = new Date(string);
+ return isNaN(date) ? null : date;
+}
- // render chart area
- chart.attr("transform", `translate(${margin.left}, ${margin.top})`);
+var parseIso = +new Date("2000-01-01T00:00:00.000Z")
+ ? parseIsoNative
+ : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__defaultLocale__["b" /* utcParse */])(__WEBPACK_IMPORTED_MODULE_0__isoFormat__["a" /* isoSpecifier */]);
- // define arrowhead
- let marker = defs.append("marker"),
- markerAttrs = {
- "id":"marker-arrowhead",
- "viewBox":"0 -5 10 10",
- "refX":15,
- "refY":0,
- "markerWidth":8,
- "markerHeight":8,
- "orient":"auto"
- };
+/* unused harmony default export */ var _unused_webpack_default_export = parseIso;
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(marker, markerAttrs);
- marker.append("path")
- .attr("d", "M0,-4L10,0L0,4")
- .attr("fill", layout.link.stroke)
- .attr("class","arrowHead");
+/***/ }),
+/* 266 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let clipRectId = `lineage-scatter-clip-rect${__WEBPACK_IMPORTED_MODULE_2_d3__["selectAll"]("clipPath").size()}`;
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interval__ = __webpack_require__(2);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__duration__ = __webpack_require__(7);
+/* unused harmony export days */
- defs.append("svg:clipPath")
- .attr("id", clipRectId)
- .append("svg:rect")
- .attr("x", 0)
- .attr("y", 0)
- .attr("width", width)
- .attr("height", height);
- let nodes = __WEBPACK_IMPORTED_MODULE_2_d3__["tree"]()(__WEBPACK_IMPORTED_MODULE_2_d3__["hierarchy"](root, d => d.children));
- let descendants = nodes.descendants().filter(n => n.parent !== null);
- // Calculate depth positions.
- descendants.forEach(node => {
- node.y = yScale(node.data.y);
- node.x = xScale(node.data.x);
- });
+var day = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function(date) {
+ date.setHours(0, 0, 0, 0);
+}, function(date, step) {
+ date.setDate(date.getDate() + step);
+}, function(start, end) {
+ return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * __WEBPACK_IMPORTED_MODULE_1__duration__["d" /* durationMinute */]) / __WEBPACK_IMPORTED_MODULE_1__duration__["b" /* durationDay */];
+}, function(date) {
+ return date.getDate() - 1;
+});
- // render links
- let plotArea = chart.append("g")
- .attr("id", "scatter-plot-area")
- .attr("clip-path", `url(${pathname}#${clipRectId})`)
- .append("g");
-
- if (layout.heatmap.enabled) {
- this.heatmapCircle = plotArea.append("g")
- .attr("class", "heatmap-layer")
- .selectAll("circle.heatmap-circle")
- .data(descendants.filter(n => !isNaN(parseFloat(n.data.z))))
- .enter()
- .append("circle")
- .attr("class", "heatmap-circle")
- .style("fill", d => this.heatmapColourScale(d.z))
- .style("opacity", layout.heatmap.opacity)
- .attr("transform", d => `translate(${xScale(d.x)},${yScale(d.y)})`);
-
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(this.heatmapCircle, layout.heatmap.circle);
- }
-
- let link = plotArea.append("g")
- .attr("class", "link-layer")
- .selectAll(".link")
- .data(descendants.filter(n => n.parent.data.name != "virtualRoot"))
- .enter()
- .append("svg:path")
- .attr("stroke-dasharray", ("3, 3"))
- .attr("d", conn => {
- return nodeLink(conn);
- })
- .attr("class", "link")
- .attr("marker-end", `url(${pathname}#marker-arrowhead)`);
-
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(link, layout.link);
-
- let nodeSvgData = treeData.map(d => {return {data: d};});
- // create node groups
- let circle = plotArea.append("g")
- .attr("class", "node-circle-layer")
- .selectAll("circle.node-circle")
- .data(descendants)
- .enter()
- .append("circle")
- .attr("class", "node-circle")
- .classed("selected", d => this.selectedNodesSet.has(d.data.name))
- .attr("cx", d => d.x)
- .attr("cy", d => d.y)
- .style("stroke", d => this.colours(d.data.series))
- .style("fill", d => !this.selectedNodesSet.has(d.data.name) ? '#FFF' : this.colours(d.data.series));
-
-
- if (layout.tooltip.show) {
- circle.on("mouseover", function (d, i) {
- let {x: xPos, y: yPos} = __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["b" /* d3tooltip */].getRelativePosition(this, that._$element[0]),
- seriesBar = layout.tooltip.showSeriesBar ?
- `` : "",
- text = d.data.tooltip ? d.data.tooltip.map((line) => `${line}`).join("") :
- `${d.data.name}`;
- that.tooltip.html(seriesBar + text).position([xPos, yPos]).show();
- })
- .on("mouseout", (d) => {
- this.tooltip.hide();
- });
- }
+/* harmony default export */ __webpack_exports__["a"] = day;
+var days = day.range;
- toggleNodeClickCallback(true);
-
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(circle, nodeAttr);
-
- // render node labels
- let nodeLabel = plotArea.append("g")
- .attr("class", "node-label-layer")
- .selectAll("text.node-label")
- .data(descendants.map(d => {
- return {node: d};
- }))
- .enter()
- .append("text")
- .attr("dy", ".35em")
- .attr("class", "node-label")
- .text(d => d.node.data.name)
- .style("opacity", 1)
- .each(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["n" /* getBBox */])
- .each(d => {
- d.currentLabelPos = initialLabelPosition;
- d.scaledLabelPos = initialLabelPosition;
- d.x = d.node.x + d.scaledLabelPos.x;
- d.y = d.node.y + d.scaledLabelPos.y;
- })
- .attr("x", d => d.x)
- .attr("y", d => d.y)
- .attr("text-anchor", d => d.scaledLabelPos['text-anchor']);
-
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(nodeLabel, layout.nodeLabel);
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(nodeLabel, initialLabelPosition);
-
- let linkLabel = plotArea.append("g")
- .attr("class", "link-label-layer")
- .selectAll("text")
- .data(descendants
- .filter(d => d.parent.data.name != "virtualRoot" && d.data.inLinkLabel != null)
- .map(d => {
- return {nodeTo: d};
- }))
- .enter()
- .append("text")
- .attr("class", "link-label")
- .attr("text-anchor", "middle")
- .each(d => {
- d.x = (d.nodeTo.x + d.nodeTo.parent.x) / 2;
- d.y = (d.nodeTo.y + d.nodeTo.parent.y) / 2;
- })
- .attr("x", d => d.x)
- .attr("y", d => d.y)
- .attr("dy", ".35em")
- .text(d => d.nodeTo.data.inLinkLabel)
- .style("opacity", 1)
- .each(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["n" /* getBBox */]);
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(linkLabel, layout.linkLabel);
+/***/ }),
+/* 267 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- this.svg.selectAll("text").attr("fill", layout.textColour);
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interval__ = __webpack_require__(2);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__duration__ = __webpack_require__(7);
+/* unused harmony export hours */
- let maxNodeLabelLength = __WEBPACK_IMPORTED_MODULE_2_d3__["max"](nodeLabel.data().map(d => d.bbox.width)),
- maxNodeLabelHeight = __WEBPACK_IMPORTED_MODULE_2_d3__["max"](nodeLabel.data().map(d => d.bbox.height)),
- maxLinkLabelHeight = __WEBPACK_IMPORTED_MODULE_2_d3__["max"](linkLabel.data().map(d => d.bbox.height)),
- maxLinkLabelLength = __WEBPACK_IMPORTED_MODULE_2_d3__["max"](linkLabel.data().map(d => d.bbox.width)),
- nodeSearchRadius = {x: 2 * maxNodeLabelLength + 10, y: 2 * maxNodeLabelHeight},
- linkSearchRadius = {x: maxLinkLabelLength + 10, y: 2 * maxLinkLabelHeight};
- if (layout.labelCollisionDetection.enabled === "onEveryChange" || layout.labelCollisionDetection.enabled === "onInit" ||
- layout.labelCollisionDetection.enabled === "onDelay") {
- let order = [[], []];
- order[layout.labelCollisionDetection.order.nodeLabel - 1].push(nodeLabel);
- order[layout.labelCollisionDetection.order.linkLabel - 1].push(linkLabel);
- this.LCD = new __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["o" /* LabelCollisionDetection */]([circle], order, layout.nodeLabelPositions, layout.nodeLabel, width, height, nodeSearchRadius, linkSearchRadius);
- this.LCD.recalculateLabels(__WEBPACK_IMPORTED_MODULE_2_d3__["zoomIdentity"]);
- }
- legend.each(function() { this.parentNode.appendChild(this);});
- titleSVG.each(function() { this.parentNode.appendChild(this);});
+var hour = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function(date) {
+ var offset = date.getTimezoneOffset() * __WEBPACK_IMPORTED_MODULE_1__duration__["d" /* durationMinute */] % __WEBPACK_IMPORTED_MODULE_1__duration__["c" /* durationHour */];
+ if (offset < 0) offset += __WEBPACK_IMPORTED_MODULE_1__duration__["c" /* durationHour */];
+ date.setTime(Math.floor((+date - offset) / __WEBPACK_IMPORTED_MODULE_1__duration__["c" /* durationHour */]) * __WEBPACK_IMPORTED_MODULE_1__duration__["c" /* durationHour */] + offset);
+}, function(date, step) {
+ date.setTime(+date + step * __WEBPACK_IMPORTED_MODULE_1__duration__["c" /* durationHour */]);
+}, function(start, end) {
+ return (end - start) / __WEBPACK_IMPORTED_MODULE_1__duration__["c" /* durationHour */];
+}, function(date) {
+ return date.getHours();
+});
- if (layout.groupSelection.enabled) {
- this.selectionRect = mouseCaptureGroup.append("rect")
- .attr("class", "selection-rect");
+/* harmony default export */ __webpack_exports__["a"] = hour;
+var hours = hour.range;
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(this.selectionRect, layout.groupSelection.selectionRectangle);
- }
- function mouseDown() {
- __WEBPACK_IMPORTED_MODULE_2_d3__["event"].preventDefault();
- that.mouseStart = __WEBPACK_IMPORTED_MODULE_2_d3__["mouse"](mouseRect.node());
- mouseRect.on("mousemove", mouseMove)
- .on("mouseup", finalizeSelection)
- .on("mouseout", finalizeSelection);
- circle.style("pointer-events", "none");
- }
+/***/ }),
+/* 268 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- function finalizeSelection() {
- that.selectionRect.attr("width", 0);
- updateSelection();
- circle.style("pointer-events", "all");
- mouseRect.on("mousemove", null)
- .on("mouseup", null)
- .on("mouseout", null);
- }
-
- function click(d) {
- __WEBPACK_IMPORTED_MODULE_2_d3__["event"].preventDefault();
- let n = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](this);
- if (!n.classed("selected")) {
- n.classed("selected", true);
- n.style("fill", d => that.colours(d.data.series));
- }
- else {
- n.classed("selected", false);
- n.style("fill", "#FFF");
- }
- updateSelection();
- }
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interval__ = __webpack_require__(2);
+/* unused harmony export milliseconds */
+
+
+var millisecond = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function() {
+ // noop
+}, function(date, step) {
+ date.setTime(+date + step);
+}, function(start, end) {
+ return end - start;
+});
+
+// An optimized implementation for this simple case.
+millisecond.every = function(k) {
+ k = Math.floor(k);
+ if (!isFinite(k) || !(k > 0)) return null;
+ if (!(k > 1)) return millisecond;
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function(date) {
+ date.setTime(Math.floor(date / k) * k);
+ }, function(date, step) {
+ date.setTime(+date + step * k);
+ }, function(start, end) {
+ return (end - start) / k;
+ });
+};
- function mouseMove() {
- let p = __WEBPACK_IMPORTED_MODULE_2_d3__["mouse"](mouseRect.node());
- let d = {
- x: (p[0] < that.mouseStart[0] ? p[0] : that.mouseStart[0]),
- y: (p[1] < that.mouseStart[1] ? p[1] : that.mouseStart[1]),
- height: Math.abs(p[1] - that.mouseStart[1]),
- width: Math.abs(p[0] - that.mouseStart[0])
- };
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(that.selectionRect, d);
- selectPoints(that.selectionRect);
- }
+/* harmony default export */ __webpack_exports__["a"] = millisecond;
+var milliseconds = millisecond.range;
- function selectPoints(rect) {
- let rect_x1 = +rect.attr("x"),
- rect_y1 = +rect.attr("y"),
- rect_x2 = +rect.attr("width") + rect_x1,
- rect_y2 = +rect.attr("height") + rect_y1,
- any = false;
-
- circle.each(function(d, i, j) {
- let n = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](this);
- let tx = n.attr("cx"),
- ty = n.attr("cy");
-
- if (tx >= rect_x1 && tx <= rect_x2 && ty >= rect_y1 && ty <= rect_y2) {
- n.classed("selected", true);
- n.style("fill", d => that.colours(d.data.series));
- any = true;
- }
- else if(!that.selectedNodesSet.has(d.data.name)) {
- n.classed("selected", false);
- n.style("fill", "#FFF");
- }
- });
- return any;
- }
+/***/ }),
+/* 269 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- function updateSelection() {
- let wasChange = false;
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interval__ = __webpack_require__(2);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__duration__ = __webpack_require__(7);
+/* unused harmony export minutes */
- that.svg.selectAll("circle.node-circle.selected").each(d => {
- if(!that.selectedNodesSet.has(d.data.name)) {
- that.selectedNodesSet.add(d.data.name);
- wasChange = true;
- }
- });
- that.svg.selectAll("circle.node-circle:not(.selected)").each(d => {
- if(that.selectedNodesSet.has(d.data.name)) {
- that.selectedNodesSet.delete(d.data.name);
- wasChange = true;
- }
- });
- if (wasChange && that.selectedNodes) {
- that._$scope.$apply(() => {
- that.selectedNodes({ $nodes: Array.from(that.selectedNodesSet)});
- });
- }
- }
+var minute = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function(date) {
+ date.setTime(Math.floor(date / __WEBPACK_IMPORTED_MODULE_1__duration__["d" /* durationMinute */]) * __WEBPACK_IMPORTED_MODULE_1__duration__["d" /* durationMinute */]);
+}, function(date, step) {
+ date.setTime(+date + step * __WEBPACK_IMPORTED_MODULE_1__duration__["d" /* durationMinute */]);
+}, function(start, end) {
+ return (end - start) / __WEBPACK_IMPORTED_MODULE_1__duration__["d" /* durationMinute */];
+}, function(date) {
+ return date.getMinutes();
+});
- function toggleNodeClickCallback(active) {
- if (that.nodeClick === undefined) return;
+/* harmony default export */ __webpack_exports__["a"] = minute;
+var minutes = minute.range;
- function nodeClickCallback(d) {
- that._$scope.$apply(() => {
- that.nodeClick({ $event: __WEBPACK_IMPORTED_MODULE_2_d3__["event"], $node: d.data});
- });
- }
- circle.on('click', active ? nodeClickCallback : null);
- }
- let zoom = __WEBPACK_IMPORTED_MODULE_2_d3__["zoom"]()
- .scaleExtent([1, layout.maxZoom])
- .extent([[0, 0],[width, height]])
- .translateExtent([[0, 0],[width, height]])
- .on("zoom", onZoom);
+/***/ }),
+/* 270 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- function onZoom() {
- applyZoom(__WEBPACK_IMPORTED_MODULE_2_d3__["event"].transform);
- lastTransform = __WEBPACK_IMPORTED_MODULE_2_d3__["event"].transform;
- if (lcdEnabled) {
- applyLCD(__WEBPACK_IMPORTED_MODULE_2_d3__["event"].transform);
- }
- }
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interval__ = __webpack_require__(2);
+/* unused harmony export months */
- function linkVisible(d) {
- let dx = d.x * lastTransform.k + lastTransform.x, dy = d.y * lastTransform.k + lastTransform.y,
- dxParent = d.parent.x * lastTransform.k + lastTransform.x;
- return dx >= 0 && dxParent <= width && dy >= 0 && dy <= height;
- }
- function isVisible(d) {
- let dx = d.x * lastTransform.k + lastTransform.x, dy = d.y * lastTransform.k + lastTransform.y;
- return dx >= 0 && dx <= width && dy >= 0 && dy <= height;
- }
+var month = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function(date) {
+ date.setDate(1);
+ date.setHours(0, 0, 0, 0);
+}, function(date, step) {
+ date.setMonth(date.getMonth() + step);
+}, function(start, end) {
+ return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;
+}, function(date) {
+ return date.getMonth();
+});
- function applyZoom(zoomTransform) {
- let [nodeLabelInViewport, nodeLabelNotInViewport] = nodeLabel.partition(isVisible),
- [linkLabelInViewport, linkLabelNotInViewport] = linkLabel.partition(isVisible),
- [linkInViewport, linkNotInViewport] = link.partition(linkVisible),
- [circleInViewport, circleNotInViewport] = circle.partition(isVisible);
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["p" /* toggleSelectionDisplay */])(nodeLabelInViewport, nodeLabelNotInViewport);
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["p" /* toggleSelectionDisplay */])(linkLabelInViewport, linkLabelNotInViewport);
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["p" /* toggleSelectionDisplay */])(linkInViewport, linkNotInViewport);
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["p" /* toggleSelectionDisplay */])(circleInViewport, circleNotInViewport);
+/* harmony default export */ __webpack_exports__["a"] = month;
+var months = month.range;
- let scale = zoomTransform.k;
- plotArea.attr("transform", zoomTransform);
- mouseCaptureGroup.attr("transform", zoomTransform);
- xAxisSVG.call(xAxis.scale(zoomTransform.rescaleX(xScale)));
- yAxisSVG.call(yAxis.scale(zoomTransform.rescaleY(yScale)));
- that.svg.selectAll(".tick line").attr("opacity", 0.2).style("shape-rendering", "crispEdges");
- that.svg.selectAll(".tick text").attr("font-size", 12).attr("fill", layout.textColour);
- that.svg.selectAll("path.domain").style("shape-rendering", "crispEdges");
- that.svg.selectAll(".axis line").attr("stroke", layout.axisColour);
+/***/ }),
+/* 271 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(circleInViewport, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["q" /* scaleProperties */])(nodeAttr, scale, true));
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interval__ = __webpack_require__(2);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__duration__ = __webpack_require__(7);
+/* unused harmony export seconds */
- if (layout.heatmap.enabled) {
- let [heatmapCircleInViewport, heatmapCircleNotInViewport] = that.heatmapCircle.partition(isVisible);
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["p" /* toggleSelectionDisplay */])(heatmapCircleInViewport, heatmapCircleNotInViewport);
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(heatmapCircleInViewport, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["q" /* scaleProperties */])(layout.heatmap.circle, scale));
- }
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(linkInViewport, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["q" /* scaleProperties */])(layout.link, scale));
- nodeLabelInViewport.each(d => {
- d.scaledLabelPos = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["q" /* scaleProperties */])(d.currentLabelPos, scale);
- d.x = d.node.x + d.scaledLabelPos.x;
- d.y = d.node.y + d.scaledLabelPos.y;
- })
- .attr("x", d => d.x)
- .attr("y", d => d.y)
- .attr("text-anchor", d => d.scaledLabelPos['text-anchor']);
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(nodeLabelInViewport, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["q" /* scaleProperties */])(layout.nodeLabel, scale));
-
- linkLabelInViewport.each(d => {
- d.x = (d.nodeTo.x + d.nodeTo.parent.x) / 2;
- d.y = (d.nodeTo.y + d.nodeTo.parent.y) / 2;
- })
- .attr("x", d => d.x)
- .attr("y", d => d.y);
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(linkLabelInViewport, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["q" /* scaleProperties */])(layout.linkLabel, scale));
- if (layout.groupSelection.enabled) {
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(that.selectionRect, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["q" /* scaleProperties */])(layout.groupSelection.selectionRectangle, scale));
- }
- }
- function onDoubleClick() {
- let I = __WEBPACK_IMPORTED_MODULE_2_d3__["zoomIdentity"];
- chart.call(zoom.transform, I);
- applyZoom(I);
- if (lcdEnabled) {
- applyLCD(I);
- }
- lastTransform = I;
- }
+var second = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function(date) {
+ date.setTime(Math.floor(date / __WEBPACK_IMPORTED_MODULE_1__duration__["e" /* durationSecond */]) * __WEBPACK_IMPORTED_MODULE_1__duration__["e" /* durationSecond */]);
+}, function(date, step) {
+ date.setTime(+date + step * __WEBPACK_IMPORTED_MODULE_1__duration__["e" /* durationSecond */]);
+}, function(start, end) {
+ return (end - start) / __WEBPACK_IMPORTED_MODULE_1__duration__["e" /* durationSecond */];
+}, function(date) {
+ return date.getUTCSeconds();
+});
- function applyLCD(transform) {
- if (layout.labelCollisionDetection.enabled === "onEveryChange") {
- that.LCD.recalculateLabels(transform);
- }
- else if (layout.labelCollisionDetection.enabled === "onDelay") {
- that._$window.clearTimeout(that.LCDUpdateID);
- that.LCDUpdateID = that._$window.setTimeout(() => {
- that.LCD.recalculateLabels(transform);
- }, layout.labelCollisionDetection.updateDelay);
- that.lastLCDUpdateTime = performance.now();
- }
- }
+/* harmony default export */ __webpack_exports__["a"] = second;
+var seconds = second.range;
- let controls = {
- 'download': function() {},
- 'zoom': toggleZoom,
- 'select': toggleSelect,
- 'label': toggleLabels
- };
- if (this.activeControls == null) {
- this.activeControls = new Set(layout.controlsEnabledOnStart);
- }
+/***/ }),
+/* 272 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["r" /* createPlotControls */])(this._$element[0], controls, this.activeControls);
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interval__ = __webpack_require__(2);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__duration__ = __webpack_require__(7);
+/* unused harmony export utcDays */
- function toggleZoom(toggle) {
- if (toggle) {
- chart.call(zoom)
- .on('dblclick.zoom', onDoubleClick);
- }
- else {
- chart.on("wheel.zoom", null)
- .on("mousedown.zoom", null)
- .on("dblclick.zoom", null)
- .on("touchstart.zoom", null)
- .on("touchmove.zoom", null)
- .on("touchend.zoom", null)
- .on("touchcancel.zoom", null);
- }
- }
- function toggleSelect(toggle) {
- if (layout.groupSelection.enabled) {
- mouseRect.on("mousedown", toggle ? mouseDown : null);
- }
- circle.on("click", toggle ? click : null);
- if (!toggle) {
- toggleNodeClickCallback(true);
- }
- }
- function toggleLabels(toggle) {
- if (layout.labelCollisionDetection.enabled != "never" && layout.labelCollisionDetection.enabled != "onInit") {
- lcdEnabled = toggle;
- if (lcdEnabled) {
- that.LCD.recalculateLabels(lastTransform);
- }
- }
- nodeLabel.style("opacity", d => toggle && !d.isColliding ? 1 : 1e-6);
- linkLabel.style("opacity", d => toggle && !d.isColliding ? 1 : 1e-6);
- }
+var utcDay = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function(date) {
+ date.setUTCHours(0, 0, 0, 0);
+}, function(date, step) {
+ date.setUTCDate(date.getUTCDate() + step);
+}, function(start, end) {
+ return (end - start) / __WEBPACK_IMPORTED_MODULE_1__duration__["b" /* durationDay */];
+}, function(date) {
+ return date.getUTCDate() - 1;
+});
- }
-}
+/* harmony default export */ __webpack_exports__["a"] = utcDay;
+var utcDays = utcDay.range;
-let layoutTemplate = {
- title: null,
- width: null,
- height: 600,
- backgroundColour: "none",
- textColour: "black",
- margin: {
- right: 10,
- left: 10,
- top: 10,
- bottom: 10
- },
- xAxis: {
- title: null,
- format: null
- },
- yAxis: {
- title: null,
- format: null
- },
- axisColour: "gray",
- nodeTypes: {},
- seriesColours: null,
- nodeLabel: {
- "font-size": 12,
- "font-family": "Roboto,Helvetica Neue,sans-serif"
- },
- linkLabel: {
- "font-size": 12,
- "font-family": "Roboto,Helvetica Neue,sans-serif"
- },
- labelCollisionDetection: {
- enabled: "never",
- updateDelay: 500,
- order: {
- linkLabel: 1,
- nodeLabel: 1
- }
- },
- link: {
- stroke: "#838383",
- "stroke-width": 1,
- "stroke-dasharray": 4
- },
- groupSelection: {
- enabled: false,
- selectionRectangle: {
- "stroke-width": 1,
- "stroke-dasharray": 4,
- rx: 3,
- ry: 3,
- stroke: "steelblue"
- }
- },
- maxZoom: 10,
- heatmap: {
- enabled: false,
- title: null,
- colourScale: [
- [0, '#008ae5'],
- [1, 'yellow']
- ],
- colourBar: {
- show: true,
- height: "90%",
- width: 30,
- position: "right"
- },
- circle: {
- r: 16
- },
- opacity: 0.4
- },
- legend: {
- show: false,
- position: {
- x: "right",
- y: "center"
- },
- anchor: {
- x: "outside",
- y: "inside"
- },
- orientation: "vertical",
- backgroundColour: null
- },
- tooltip: {
- show: true,
- showSeriesBar: false,
- align: "left"
- },
- nodeLabelPositions: [
- {
- x: 10,
- y: 0,
- "text-anchor": "start"
- },
- {
- x: -10,
- y: 0,
- "text-anchor": "end"
- }
- ],
- controlsEnabledOnStart: ['label']
-};
-let labelPositions = [
- {
- x: 13,
- y: 0,
- "text-anchor": "start"
- },
- {
- x: -13,
- y: 0,
- "text-anchor": "end"
- }
-];
+/***/ }),
+/* 273 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-function createLinks(nodes, activeSeries) {
- let filteredNodes = [],
- nodesDict = {},
- parent,
- links = [];
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interval__ = __webpack_require__(2);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__duration__ = __webpack_require__(7);
+/* unused harmony export utcHours */
- for (let node of nodes) {
- nodesDict[node.name] = node;
- }
- for (let node of nodes) {
- let currentNode = node;
- if (!activeSeries.has(currentNode.series)) continue;
- while(parent = currentNode.parent) {
- let parentNode = nodesDict[parent];
- if (activeSeries.has(parentNode.series)) {
- node.parent = parent;
- links.push([parentNode, node]);
- break;
- }
- currentNode = parentNode;
- }
- if (node.parent && !activeSeries.has(nodesDict[node.parent].series)) {
- node.parent = null;
- }
- filteredNodes.push(node);
- }
- return {nodesData: filteredNodes, links: links};
-}
+var utcHour = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function(date) {
+ date.setUTCMinutes(0, 0, 0);
+}, function(date, step) {
+ date.setTime(+date + step * __WEBPACK_IMPORTED_MODULE_1__duration__["c" /* durationHour */]);
+}, function(start, end) {
+ return (end - start) / __WEBPACK_IMPORTED_MODULE_1__duration__["c" /* durationHour */];
+}, function(date) {
+ return date.getUTCHours();
+});
-const LineageScatterPlotComponent = {
- template: '',
- controller: LineageScatterPlotController,
- bindings: {
- value: '<',
- selectedNodes: '&',
- nodeClick: '&'
- }
-};
+/* harmony default export */ __webpack_exports__["a"] = utcHour;
+var utcHours = utcHour.range;
-LineageScatterPlotController.$$ngIsClass = true; // temporary Firefox fix
-/* unused harmony default export */ var _unused_webpack_default_export = __WEBPACK_IMPORTED_MODULE_1_angular___default.a.module('ancestry.lineage-scatter', [])
- //.directive('lineagePlot', LineagePlotDirective);
- .component('lineageScatterPlot', LineageScatterPlotComponent);
/***/ }),
-/* 5 */
+/* 274 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__radial_lineage_plot_css__ = __webpack_require__(12);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__radial_lineage_plot_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__radial_lineage_plot_css__);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_angular__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_angular__);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_d3__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_d3___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_d3__);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__shared_features_js__ = __webpack_require__(2);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interval__ = __webpack_require__(2);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__duration__ = __webpack_require__(7);
+/* unused harmony export utcMinutes */
+var utcMinute = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function(date) {
+ date.setUTCSeconds(0, 0);
+}, function(date, step) {
+ date.setTime(+date + step * __WEBPACK_IMPORTED_MODULE_1__duration__["d" /* durationMinute */]);
+}, function(start, end) {
+ return (end - start) / __WEBPACK_IMPORTED_MODULE_1__duration__["d" /* durationMinute */];
+}, function(date) {
+ return date.getUTCMinutes();
+});
+/* harmony default export */ __webpack_exports__["a"] = utcMinute;
+var utcMinutes = utcMinute.range;
-class RadialLineagePlotController {
- constructor($element, $window, $scope) {
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["a" /* attachActionOnResize */])($window, () => this.render({}));
- $element.addClass("ancestry ancestry-radial-lineage-plot");
- this.svg = __WEBPACK_IMPORTED_MODULE_2_d3__["select"]($element[0])
- .style("position", "relative")
- .append("svg");
+/***/ }),
+/* 275 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- this.colours = __WEBPACK_IMPORTED_MODULE_2_d3__["scaleOrdinal"](__WEBPACK_IMPORTED_MODULE_2_d3__["schemeCategory10"]);
- this.defaultNode = {
- r: 4,
- "stroke-width": 2
- };
- this.activeControls = null;
- this.labelOffset = 20;
- this.hovering = false;
- this.visibleSeries = new Set();
- this.virtualRoot = null;
- this.virtualRootName = "virtual_root";
- this._$element = $element;
- this._$window = $window;
- this._$scope = $scope;
- }
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interval__ = __webpack_require__(2);
+/* unused harmony export utcMonths */
- $onChanges(changes) {
- if (changes.value && changes.value.currentValue) {
- this.render({isNewData: true});
- }
- }
- render(options) {
- let that = this;
- // clean svg before rendering plot
- this.svg.selectAll('*').remove();
+var utcMonth = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function(date) {
+ date.setUTCDate(1);
+ date.setUTCHours(0, 0, 0, 0);
+}, function(date, step) {
+ date.setUTCMonth(date.getUTCMonth() + step);
+}, function(start, end) {
+ return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;
+}, function(date) {
+ return date.getUTCMonth();
+});
- let defs = this.svg.append("defs");
+/* harmony default export */ __webpack_exports__["a"] = utcMonth;
+var utcMonths = utcMonth.range;
- // do not continue rendering if there is no data
- if (!this.value || !this.value.data.length) return;
- let copy = __WEBPACK_IMPORTED_MODULE_1_angular___default.a.copy(this.value),
- layout = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["c" /* mergeTemplateLayout */])(copy.layout, layoutTemplate),
- seriesNames = Array.from(new Set(this.value.data.map(d => d.series)));
+/***/ }),
+/* 276 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (options.isNewData) {
- if (layout.seriesColours == null) {
- this.colours.domain([]);
- }
- this.visibleSeries = new Set(seriesNames);
- }
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interval__ = __webpack_require__(2);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__duration__ = __webpack_require__(7);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return utcSunday; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return utcMonday; });
+/* unused harmony export utcTuesday */
+/* unused harmony export utcWednesday */
+/* unused harmony export utcThursday */
+/* unused harmony export utcFriday */
+/* unused harmony export utcSaturday */
+/* unused harmony export utcSundays */
+/* unused harmony export utcMondays */
+/* unused harmony export utcTuesdays */
+/* unused harmony export utcWednesdays */
+/* unused harmony export utcThursdays */
+/* unused harmony export utcFridays */
+/* unused harmony export utcSaturdays */
+
+
+
+function utcWeekday(i) {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function(date) {
+ date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);
+ date.setUTCHours(0, 0, 0, 0);
+ }, function(date, step) {
+ date.setUTCDate(date.getUTCDate() + step * 7);
+ }, function(start, end) {
+ return (end - start) / __WEBPACK_IMPORTED_MODULE_1__duration__["a" /* durationWeek */];
+ });
+}
- let pathname = this._$window.location.pathname;
+var utcSunday = utcWeekday(0);
+var utcMonday = utcWeekday(1);
+var utcTuesday = utcWeekday(2);
+var utcWednesday = utcWeekday(3);
+var utcThursday = utcWeekday(4);
+var utcFriday = utcWeekday(5);
+var utcSaturday = utcWeekday(6);
- let treeData = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["f" /* createTreeLayout */])(filterSeries(copy.data, this.visibleSeries)),
- longestNodeName = copy.data.length ? copy.data.reduce((a, b) => a.name.length > b.name.length ? a : b).name : "";
+var utcSundays = utcSunday.range;
+var utcMondays = utcMonday.range;
+var utcTuesdays = utcTuesday.range;
+var utcWednesdays = utcWednesday.range;
+var utcThursdays = utcThursday.range;
+var utcFridays = utcFriday.range;
+var utcSaturdays = utcSaturday.range;
- let elementWidth = this._$element[0].offsetWidth,
- elementHeight = this._$element[0].offsetHeight;
- let isMultipleTree = treeData.length > 1,
- multipleTreeOffset = isMultipleTree ? 30 : 0,
- maxLabelLength = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["e" /* testLabelLength */])(this.svg, longestNodeName, layout.outerNodeLabel),
- colourBarOffset = 20,
- start = null,
- rotate = 0,
- rotateOld = 0,
- rotationDifference,
- transitionScale = __WEBPACK_IMPORTED_MODULE_2_d3__["scaleLog"]().domain([1, 181]).range([0, 1500]),
- reorgDuration = 1000,
- prevX = 0,
- heatmapColourScale = null,
- heatmapCircle = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](),
- legendHeight = 0, legendWidth = 0, colourbarHeight = 0, colourbarWidth = 0,
- legendOut = {top:false, right: false, bottom:false, left:false},
- showHeatmapTitle = layout.heatmap.enabled && layout.heatmap.title !== null,
- colourBarOrigWidth = layout.heatmap.colourBar.width, colourBarOrigHeight = layout.heatmap.colourBar.height,
- legend = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](),
- colourbar = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](),
- titleSVG = __WEBPACK_IMPORTED_MODULE_2_d3__["select"]();
-
- let width = layout.width || elementWidth,
- height = layout.height || elementHeight;
-
- this.svg.append("rect")
- .attr("x", 0)
- .attr("y", 0)
- .attr("width", width)
- .attr("height", height)
- .attr("fill", layout.backgroundColour);
-
- if (layout.legend.show) {
- if (layout.legend.anchor.x == "outside") legendOut[layout.legend.position.x] = true;
- if (layout.legend.anchor.y == "outside") legendOut[layout.legend.position.y] = true;
- }
-
- let margin = layout.margin;
- if (layout.title) margin.top += legendOut.top ? 26 : 25;
-
- let chart = this.svg.append("g")
- .attr("transform", `translate(${margin.left},${margin.top})`);
-
- if (layout.seriesColours != null) {
- this.colours = (series) => layout.seriesColours[series];
- }
-
- if (layout.heatmap.enabled) {
-
- let domain = __WEBPACK_IMPORTED_MODULE_2_d3__["extent"](copy.data, node => node.z);
-
- if (domain[0] == domain[1]) {
- if (domain[0] === undefined) {
- domain[0] = domain[1] = 0;
- }
- domain[0] -= 0.5;
- domain[1] += 0.5;
- }
+/***/ }),
+/* 277 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- heatmapColourScale = __WEBPACK_IMPORTED_MODULE_2_d3__["scaleLinear"]()
- .domain(domain)
- .range(layout.heatmap.colourScale.map(v => v[1]));
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interval__ = __webpack_require__(2);
+/* unused harmony export utcYears */
+
+
+var utcYear = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function(date) {
+ date.setUTCMonth(0, 1);
+ date.setUTCHours(0, 0, 0, 0);
+}, function(date, step) {
+ date.setUTCFullYear(date.getUTCFullYear() + step);
+}, function(start, end) {
+ return end.getUTCFullYear() - start.getUTCFullYear();
+}, function(date) {
+ return date.getUTCFullYear();
+});
+
+// An optimized implementation for this simple case.
+utcYear.every = function(k) {
+ return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function(date) {
+ date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);
+ date.setUTCMonth(0, 1);
+ date.setUTCHours(0, 0, 0, 0);
+ }, function(date, step) {
+ date.setUTCFullYear(date.getUTCFullYear() + step * k);
+ });
+};
- if (layout.heatmap.colourBar.show) {
- layout.heatmap.colourBar.height = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* calcColourBarSize */])(layout.heatmap.colourBar.height, height);
- layout.heatmap.colourBar.width = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* calcColourBarSize */])(layout.heatmap.colourBar.width, width);
+/* harmony default export */ __webpack_exports__["a"] = utcYear;
+var utcYears = utcYear.range;
- colourbar = chart.append("g")
- .attr("class", "ancestry-colourbar").attr("transform", "translate(0,0)");
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["h" /* drawColourBar */])(colourbar, heatmapColourScale.domain(), layout.heatmap, defs, pathname);
+/***/ }),
+/* 278 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let bbox = colourbar.node().getBoundingClientRect();
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interval__ = __webpack_require__(2);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__duration__ = __webpack_require__(7);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return sunday; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return monday; });
+/* unused harmony export tuesday */
+/* unused harmony export wednesday */
+/* unused harmony export thursday */
+/* unused harmony export friday */
+/* unused harmony export saturday */
+/* unused harmony export sundays */
+/* unused harmony export mondays */
+/* unused harmony export tuesdays */
+/* unused harmony export wednesdays */
+/* unused harmony export thursdays */
+/* unused harmony export fridays */
+/* unused harmony export saturdays */
+
+
+
+function weekday(i) {
+ return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function(date) {
+ date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);
+ date.setHours(0, 0, 0, 0);
+ }, function(date, step) {
+ date.setDate(date.getDate() + step * 7);
+ }, function(start, end) {
+ return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * __WEBPACK_IMPORTED_MODULE_1__duration__["d" /* durationMinute */]) / __WEBPACK_IMPORTED_MODULE_1__duration__["a" /* durationWeek */];
+ });
+}
- colourbarWidth = bbox.width;
- margin.right += colourbarWidth - (showHeatmapTitle ? 1 : 0) + colourBarOffset;
- colourbarHeight = bbox.height;
- }
- }
+var sunday = weekday(0);
+var monday = weekday(1);
+var tuesday = weekday(2);
+var wednesday = weekday(3);
+var thursday = weekday(4);
+var friday = weekday(5);
+var saturday = weekday(6);
- if (layout.legend.show) {
- let pos = layout.legend.position,
- anchor = layout.legend.anchor,
- orientation = layout.legend.orientation;
-
- let splitAfter = orientation === "horizontal" ? 0 : 1;
-
- let drawLegend = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["i" /* d3legend */])()
- .splitAfter(splitAfter)
- .position(pos)
- .anchor(anchor)
- .seriesNames(seriesNames)
- .colourScale(this.colours)
- .backgroundColour(layout.legend.backgroundColour || layout.backgroundColour)
- .onClick(legendClick)
- .maxSize({width, height})
- .selectedItems(this.visibleSeries);
-
- legend = chart.append("g")
- .attr("class", "ancestry-legend")
- .call(drawLegend);
-
- let bbox = legend.node().getBoundingClientRect();
- legendHeight = bbox.height; legendWidth = bbox.width;
- if (anchor.x === "outside" && pos.x !== "center") {
- margin[pos.x] += legendOut.right ? legendWidth - 10 : (legendOut.left ? legendWidth - 11 : legendWidth);
- }
- else if(anchor.y === "outside" && pos.y !== "center") {
- margin[pos.y] += legendOut.bottom ? legendHeight - 11 : (legendOut.top ? legendHeight - 11 : legendHeight);
- }
- }
+var sundays = sunday.range;
+var mondays = monday.range;
+var tuesdays = tuesday.range;
+var wednesdays = wednesday.range;
+var thursdays = thursday.range;
+var fridays = friday.range;
+var saturdays = saturday.range;
- function legendClick(label) {
- let clicked = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](this);
- if (that.visibleSeries.has(label))
- that.visibleSeries.delete(label);
- else
- that.visibleSeries.add(label);
- clicked.classed("legend-item-selected", that.visibleSeries.has(label));
- clicked.select("rect.shape").attr("fill", that.visibleSeries.has(label) ? that.colours(label) : "white");
- that.render({isNewData: false})
- }
- width = (layout.width || elementWidth) - margin.right - margin.left;
- height = (layout.height || elementHeight) - margin.top - margin.bottom;
+/***/ }),
+/* 279 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let r = Math.min(height, width) / 2,
- totalTreeLength = r - maxLabelLength - this.labelOffset - multipleTreeOffset;
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interval__ = __webpack_require__(2);
+/* unused harmony export years */
+
+
+var year = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function(date) {
+ date.setMonth(0, 1);
+ date.setHours(0, 0, 0, 0);
+}, function(date, step) {
+ date.setFullYear(date.getFullYear() + step);
+}, function(start, end) {
+ return end.getFullYear() - start.getFullYear();
+}, function(date) {
+ return date.getFullYear();
+});
+
+// An optimized implementation for this simple case.
+year.every = function(k) {
+ return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interval__["a" /* default */])(function(date) {
+ date.setFullYear(Math.floor(date.getFullYear() / k) * k);
+ date.setMonth(0, 1);
+ date.setHours(0, 0, 0, 0);
+ }, function(date, step) {
+ date.setFullYear(date.getFullYear() + step * k);
+ });
+};
- chart.attr("transform", `translate(${margin.left},${margin.top})`);
+/* harmony default export */ __webpack_exports__["a"] = year;
+var years = year.range;
- if (layout.legend.show) {
- let pos = layout.legend.position,
- anchor = layout.legend.anchor,
- posX = pos.x === "left" ? width / 2 - r : (pos.x === "right" ? width / 2 + r + (anchor.x === "outside" ? colourBarOffset + colourbarWidth : 0) : width / 2),
- posY = pos.y === "top" ? height / 2 - r : (pos.y === "bottom" ? height / 2 + r: height / 2);
- legend.attr("transform", `translate(${posX},${posY})`);
- }
+/***/ }),
+/* 280 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__timer__ = __webpack_require__(53);
+
+
+/* unused harmony default export */ var _unused_webpack_default_export = function(callback, delay, time) {
+ var t = new __WEBPACK_IMPORTED_MODULE_0__timer__["b" /* Timer */], total = delay;
+ if (delay == null) return t.restart(callback, delay, time), t;
+ delay = +delay, time = time == null ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__timer__["c" /* now */])() : +time;
+ t.restart(function tick(elapsed) {
+ elapsed += total;
+ t.restart(tick, total += delay, time);
+ callback(elapsed);
+ }, delay, time);
+ return t;
+};
- this.virtualRoot = {
- name: that.virtualRootName,
- parent: null,
- children: [],
- treeId: 0,
- _depth: 0,
- type: undefined
- };
- for(let tree of treeData) {
- spreadNodes(tree);
- tree.parent = this.virtualRootName;
- this.virtualRoot.children.push(tree);
- }
- treeData = this.virtualRoot;
+/***/ }),
+/* 281 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let types = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["j" /* createNodeTypes */])(copy.data, layout.nodeTypes, this.defaultNode),
- nodeAttr = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["k" /* createDynamicNodeAttr */])(types, Object.keys(this.defaultNode));
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__timer__ = __webpack_require__(53);
- let treeLayout = __WEBPACK_IMPORTED_MODULE_2_d3__["cluster"]().size([360, 1]).separation(() => 1),
- treeRoot = __WEBPACK_IMPORTED_MODULE_2_d3__["hierarchy"](treeData, d => d.children).sort((a,b) => b.depth - a.depth),
- nodes = treeLayout(treeRoot),
- descendants = nodes.descendants().filter(n => n.parent != null );
+/* harmony default export */ __webpack_exports__["a"] = function(callback, delay, time) {
+ var t = new __WEBPACK_IMPORTED_MODULE_0__timer__["b" /* Timer */];
+ delay = delay == null ? 0 : +delay;
+ t.restart(function(elapsed) {
+ t.stop();
+ callback(elapsed + delay);
+ }, delay, time);
+ return t;
+};
- this.svg.attr("width", width + margin.left + margin.right)
- .attr("height", height + margin.top + margin.bottom)
- .style("-webkit-backface-visibility", "hidden");
- // Catch mouse events in Safari.
- this.svg.append("rect")
- .attr("width", width + margin.left + margin.right)
- .attr("height", height + margin.top + margin.bottom)
- .attr("fill", "none");
+/***/ }),
+/* 282 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let visTranslate = [width / 2, height / 2],
- vis = chart.append("g")
- .attr("transform", `translate(${visTranslate[0]},${visTranslate[1]})`);
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__transition_index__ = __webpack_require__(8);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__transition_schedule__ = __webpack_require__(5);
- vis.append("rect")
- .attr("x", -r)
- .attr("y", -r)
- .attr("width", 2 * r)
- .attr("height", 2 * r)
- .style("opacity", 1e-6);
- descendants.forEach(d => {
- d.x0 = d.x; // remember initial position
- d.y = d.name === that.virtualRootName ? 0 :multipleTreeOffset + d.data._depth * (totalTreeLength);
- });
- // render chart title
- if (layout.title) {
- titleSVG = chart.append("text")
- .attr("x", (width / 2))
- .attr("y", height / 2 - r - (layout.legend.position.y == "top" && layout.legend.anchor.y == "outside" ? legendHeight : 10))
- .attr("text-anchor", "middle")
- .style("font-size", "20px")
- .text(layout.title);
- }
+var root = [null];
- // TODO: implement equidistant generations
- //let maxGen = 15;//d3.max(treeData.trees[0].map(d => d.generation));
- //nodes.forEach(function(d){d.y = d.generation / maxGen * 300});
+/* harmony default export */ __webpack_exports__["a"] = function(node, name) {
+ var schedules = node.__transition,
+ schedule,
+ i;
- if (layout.heatmap.enabled && layout.heatmap.colourBar.show) {
- layout.heatmap.colourBar.height = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* calcColourBarSize */])(colourBarOrigHeight, 2 * r);
- layout.heatmap.colourBar.width = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* calcColourBarSize */])(colourBarOrigWidth, width);
+ if (schedules) {
+ name = name == null ? null : name + "";
+ for (i in schedules) {
+ if ((schedule = schedules[i]).state > __WEBPACK_IMPORTED_MODULE_1__transition_schedule__["d" /* SCHEDULED */] && schedule.name === name) {
+ return new __WEBPACK_IMPORTED_MODULE_0__transition_index__["a" /* Transition */]([[node]], root, name, +i);
+ }
+ }
+ }
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["h" /* drawColourBar */])(colourbar, heatmapColourScale.domain(), layout.heatmap, defs, pathname);
- colourbar.attr("transform", `translate(${width / 2 + r + colourBarOffset},${(height - layout.heatmap.colourBar.height)/2})`);
- }
+ return null;
+};
- if (layout.heatmap.enabled) {
- heatmapCircle = vis.append("g")
- .attr("class", "heatmap-layer")
- .selectAll("circle.heatmap-circle")
- .data(descendants.filter(n => !isNaN(parseFloat(n.data.z))))
- .enter()
- .append("circle")
- .attr("class", "heatmap-circle")
- .style("fill", d => heatmapColourScale(d.data.z))
- .style("opacity", layout.heatmap.opacity)
- .attr("transform", d => `rotate(${d.x - 90})translate(${d.y})`);
-
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(heatmapCircle, layout.heatmap.circle);
- }
-
- let link = vis.selectAll("path.link")
- .data(descendants.filter(n => n.parent.data.name != that.virtualRootName))
- .enter().append("path")
- .attr("class", "link")
- .attr("fill", "none")
- .attr("d", step)
- .each(function(d) {
- d.inLinkNode = this;
- if(d.parent.outLinkNodes) d.parent.outLinkNodes.push(this);
- else d.parent.outLinkNodes = [this];
- });
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(link, layout.link);
-
- let node = vis.selectAll("g.node")
- .data(descendants)
- .enter().append("g")
- .attr("id", d => d.name)
- .attr("class", "node")
- .attr("transform", d => `rotate(${d.x - 90})translate(${d.y})`)
- .on("mouseover", mouseovered(true))
- .on("mouseout", mouseovered(false))
- .each(function(d) { d.nodeGroupNode = this; });
-
- let nodeLabel = node.append("text")
- .attr("class", "mouseover-label")
- .attr("transform", "rotate(90)")
- .attr("dy", ".25em")
- .attr("dx", ".6em")
- .style("opacity", 1e-6)
- .text(d => d.data.name);
-
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(nodeLabel, layout.nodeLabel);
- nodeLabel.call(getBB);
-
- node.insert("rect","text")
- .attr("x", d => d.bbox.x - 3)
- .attr("y", d => d.bbox.y)
- .attr("width", d => d.bbox.width + 6)
- .attr("height", d => d.bbox.height + 3)
- .attr("transform", "rotate(90)")
- .style("fill", "white")
- .style("opacity", 1e-6);
-
- let circle = node.append("circle")
- .attr("fill", "white")
- .style("stroke", d => this.colours(d.data.series));
-
-
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(circle, nodeAttr);
- toggleNodeClickCallback(true);
-
- let maxLabelHeight = 2 * Math.PI * (multipleTreeOffset + totalTreeLength + this.labelOffset) /
- descendants.filter(d => !d.children || !d.children.length).length;
-
- layout.outerNodeLabel["font-size"] = __WEBPACK_IMPORTED_MODULE_2_d3__["min"]([layout.outerNodeLabel["font-size"], maxLabelHeight]);
-
- let label = vis.selectAll("text.outer-label")
- .data(descendants.filter(d => d.x !== undefined && !d.children))
- .enter().append("text")
- .attr("class", "outer-label")
- .attr("dy", ".31em")
- .attr("text-anchor", d => d.x < 180 ? "start" : "end")
- .attr("transform", d => `rotate(${d.x - 90})
- translate(${totalTreeLength + this.labelOffset + multipleTreeOffset})
- rotate(${d.x < 180 ? 0 : 180})`)
- .text(d => d.data.name);
-
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(label, layout.outerNodeLabel);
-
- this.svg.selectAll("text").attr("fill", layout.textColour);
-
- legend.each(moveToFront);
- titleSVG.each(moveToFront);
-
-
- function mouseovered(active) {
- return function(d) {
-
- that.hovering = active;
- let hoveredNode = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](d.nodeGroupNode);
-
- hoveredNode.select("text.mouseover-label")
- .style("opacity", active ? 1 : 1e-6)
- .attr("transform", active ? `rotate(${-rotate -d.x + 90})` : "rotate(90)");
- hoveredNode.select("rect")
- .style("opacity", active ? 0.9 : 1e-6)
- .attr("transform", active ? `rotate(${-rotate -d.x + 90})` : "rotate(90)");
-
- do {
- __WEBPACK_IMPORTED_MODULE_2_d3__["select"](d.inLinkNode)
- .classed("link-active", active)
- .each(moveToFront);
- if (d.outLinkNodes) {
- d.outLinkNodes.forEach(node => __WEBPACK_IMPORTED_MODULE_2_d3__["select"](node).classed("link-affected", active));
- }
- __WEBPACK_IMPORTED_MODULE_2_d3__["select"](d.nodeGroupNode)
- .classed("node-active", active)
- .each(moveToFront)
- .selectAll("circle")
- .attr("stroke-width", d => {
- let strokeWidth = nodeAttr["stroke-width"](d);
- return active ? strokeWidth + 1: strokeWidth;
- });
- } while (d = d.parent);
+/***/ }),
+/* 283 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- hoveredNode.each(moveToFront);
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(0);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__interrupt__ = __webpack_require__(284);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__transition__ = __webpack_require__(285);
- if (hoveredNode.classed("node-aligned")) {
- __WEBPACK_IMPORTED_MODULE_2_d3__["selectAll"]("g.node-aligned text.mouseover-label").style("opacity", active ? 1 : 1e-6);
- __WEBPACK_IMPORTED_MODULE_2_d3__["selectAll"]("g.node-aligned rect").style("opacity", active ? 0.9 : 1e-6);
- }
- };
- }
- function clicked(selectedNode) {
- rotationDifference = selectedNode.x < prevX ? 360 - prevX + selectedNode.x : selectedNode.x - prevX;
- if(rotationDifference > 180) rotationDifference = 360 - rotationDifference;
- prevX = selectedNode.x;
- rotate = 360 - selectedNode.x;
- if (rotate > 360) rotate %= 360;
- else if (rotate < 0) rotate = (360 + rotate) % 360;
- __WEBPACK_IMPORTED_MODULE_2_d3__["selectAll"]("g.node text.mouseover-label").attr("transform", "rotate(90)").style("opacity", 1e-6);
- __WEBPACK_IMPORTED_MODULE_2_d3__["selectAll"]("g.node rect").attr("transform", "rotate(90)").style("opacity", 1e-6);
+__WEBPACK_IMPORTED_MODULE_0_d3_selection__["selection"].prototype.interrupt = __WEBPACK_IMPORTED_MODULE_1__interrupt__["a" /* default */];
+__WEBPACK_IMPORTED_MODULE_0_d3_selection__["selection"].prototype.transition = __WEBPACK_IMPORTED_MODULE_2__transition__["a" /* default */];
- let alignedNotActive = __WEBPACK_IMPORTED_MODULE_2_d3__["selectAll"]("g.node-aligned:not(.node-active)"),
- duration = alignedNotActive.size() || !rotateOld ? reorgDuration : 0;
- alignedNotActive.classed("node-aligned", false)
- .each((d) => {
- d._x = d.x;
- d.x = d.x0;
- })
- .transition()
- .duration(duration)
- .attrTween("transform", tweenNodeGroup)
- .on("end", d => d._x = undefined);
-
- heatmapCircle.transition()
- .duration(duration)
- .attrTween("transform", tweenNodeGroup);
-
- __WEBPACK_IMPORTED_MODULE_2_d3__["selectAll"]("g.node-active")
- .classed("node-aligned", true)
- .each((d) => {
- d._x = d.x;
- d.x = selectedNode.x;
- })
- .transition()
- .duration(duration)
- .attrTween("transform", tweenNodeGroup);
-
- __WEBPACK_IMPORTED_MODULE_2_d3__["selectAll"]("path.link-affected, path.link-displaced")
- .classed("link-displaced", true)
- .transition()
- .duration(duration)
- .attrTween("d", tweenPath);
-
- __WEBPACK_IMPORTED_MODULE_2_d3__["selectAll"]("path.link-displaced:not(.link-affected)")
- .classed("link-displaced", false);
-
- __WEBPACK_IMPORTED_MODULE_2_d3__["selectAll"]("g.node-aligned text.mouseover-label")
- .transition().style("opacity", 1);
-
- __WEBPACK_IMPORTED_MODULE_2_d3__["selectAll"]("g.node-aligned rect").style("opacity", 0.9);
-
- if(rotationDifference > 0) {
- vis.transition()
- .delay(duration)
- .duration(transitionScale(rotationDifference + 1))
- .attr("transform", `translate(${visTranslate[0]},${visTranslate[1]})rotate(${rotate})`)
- .on("end", function () {
- __WEBPACK_IMPORTED_MODULE_2_d3__["select"](this).selectAll("text.outer-label")
- .attr("text-anchor", d => (d.x + rotate) % 360 < 180 ? "start" : "end")
- .attr("transform", d => `rotate(${d.x - 90})
- translate(${totalTreeLength + that.labelOffset + multipleTreeOffset})
- rotate(${(d.x + rotate) % 360 < 180 ? 0 : 180})`);
- });
- }
+/***/ }),
+/* 284 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- rotateOld = rotate;
- }
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__interrupt__ = __webpack_require__(100);
- function toggleNodeClickCallback(active) {
- if (that.nodeClick === undefined) return;
- function nodeClickCallback(d) {
- that._$scope.$apply(() => {
- that.nodeClick({ $event: __WEBPACK_IMPORTED_MODULE_2_d3__["event"], $node: d.data});
- });
- }
+/* harmony default export */ __webpack_exports__["a"] = function(name) {
+ return this.each(function() {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__interrupt__["a" /* default */])(this, name);
+ });
+};
- node.on('click', active ? nodeClickCallback : null);
- }
- function mouse(element) { return __WEBPACK_IMPORTED_MODULE_2_d3__["mouse"](element).map((d, i) => d - visTranslate[i]); }
+/***/ }),
+/* 285 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- function getBB(selection) {
- selection.each(function(d){d.bbox = this.getBBox();})
- }
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__transition_index__ = __webpack_require__(8);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__transition_schedule__ = __webpack_require__(5);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_d3_ease__ = __webpack_require__(144);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_d3_timer__ = __webpack_require__(99);
- function moveToFront() {
- this.parentNode.appendChild(this);
- }
- function project(d) {
- let r = d.y, a = (d.x - 90) / 180 * Math.PI;
- return [r * Math.cos(a), r * Math.sin(a)];
- }
- function cross(a, b) { return a[0] * b[1] - a[1] * b[0]; }
- function dot(a, b) { return a[0] * b[0] + a[1] * b[1]; }
- function step(d) {
- let s = project(d.parent),
- m = project({x: d.x, y: d.parent.y}),
- t = project(d),
- r = d.parent.y,
- sweep = d.x > d.parent.x ? 1 : 0,
- largeArc = Math.abs(d.x - d.parent.x) % 360 > 180 ? 1 : 0;
+var defaultTiming = {
+ time: null, // Set on use.
+ delay: 0,
+ duration: 250,
+ ease: __WEBPACK_IMPORTED_MODULE_2_d3_ease__["a" /* easeCubicInOut */]
+};
- return `M${s[0]},${s[1]}A${r},${r} 0 ${largeArc},${sweep} ${m[0]},${m[1]}L${t[0]},${t[1]}`;
- }
+function inherit(node, id) {
+ var timing;
+ while (!(timing = node.__transition) || !(timing = timing[id])) {
+ if (!(node = node.parentNode)) {
+ return defaultTiming.time = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_d3_timer__["c" /* now */])(), defaultTiming;
+ }
+ }
+ return timing;
+}
- function tweenPath(d) {
- let midSourceX = d.parent._x !== undefined ? __WEBPACK_IMPORTED_MODULE_2_d3__["interpolateNumber"](d.parent._x, d.parent.x) : () => d.parent.x,
- midTargetX = d._x !== undefined ? __WEBPACK_IMPORTED_MODULE_2_d3__["interpolateNumber"](d._x, d.x) : () => d.x,
- midpoints = {x: 0, y: d.y, parent: {x: 0, y: d.parent.y}};
+/* harmony default export */ __webpack_exports__["a"] = function(name) {
+ var id,
+ timing;
+
+ if (name instanceof __WEBPACK_IMPORTED_MODULE_0__transition_index__["a" /* Transition */]) {
+ id = name._id, name = name._name;
+ } else {
+ id = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__transition_index__["b" /* newId */])(), (timing = defaultTiming).time = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_d3_timer__["c" /* now */])(), name = name == null ? null : name + "";
+ }
+
+ for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
+ if (node = group[i]) {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__transition_schedule__["h" /* default */])(node, name, id, i, group, timing || inherit(node, id));
+ }
+ }
+ }
- return function(t) {
- midpoints.parent.x = midSourceX(t);
- midpoints.x = midTargetX(t);
- return step(midpoints);
- };
- }
+ return new __WEBPACK_IMPORTED_MODULE_0__transition_index__["a" /* Transition */](groups, this._parents, name, id);
+};
- function tweenNodeGroup(d) {
- let midpointX = d._x !== undefined ? __WEBPACK_IMPORTED_MODULE_2_d3__["interpolateNumber"](d._x, d.x) : () => d.x;
- return function(t) {
- let x = midpointX(t);
- return `rotate(${(x - 90)})translate(${d.y})`;
- }
- }
+/***/ }),
+/* 286 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let controls = {
- 'download': function() {},
- 'zoom': toggleMove
- };
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_interpolate__ = __webpack_require__(3);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_d3_selection__ = __webpack_require__(0);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__tween__ = __webpack_require__(26);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__interpolate__ = __webpack_require__(101);
- if (this.activeControls == null) {
- this.activeControls = new Set(layout.controlsEnabledOnStart);
- }
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["r" /* createPlotControls */])(this._$element[0], controls, this.activeControls);
- function toggleMove(toggle) {
- if (toggle) {
- node.on("click", clicked);
- chart.on("mousedown", function () {
- if (!that.hovering) {
- that.svg.style("cursor", "move");
- start = mouse(that.svg.node());
- __WEBPACK_IMPORTED_MODULE_2_d3__["event"].preventDefault();
- }
- })
- .on("mouseup", function () {
- if (start && !that.hovering) {
- that.svg.style("cursor", "auto");
- let m = mouse(that.svg.node());
- rotate += Math.atan2(cross(start, m), dot(start, m)) * 180 / Math.PI;
- if (rotate > 360) rotate %= 360;
- else if (rotate < 0) rotate = (360 + rotate) % 360;
- start = null;
- vis.attr("transform", `translate(${visTranslate[0]},${visTranslate[1]})rotate(${rotate})`)
- .selectAll("text.outer-label")
- .attr("text-anchor", d=> (d.x + rotate) % 360 < 180 ? "start" : "end")
- .attr("transform", d => `rotate(${d.x - 90})
- translate(${totalTreeLength + that.labelOffset + multipleTreeOffset})
- rotate(${(d.x + rotate) % 360 < 180 ? 0 : 180})`);
- }
- })
- .on("mousemove", function () {
- if (start) {
- let m = mouse(that.svg.node());
- let delta = Math.atan2(cross(start, m), dot(start, m)) * 180 / Math.PI;
- vis.attr("transform", `translate(${visTranslate[0]},${visTranslate[1]})rotate(${rotate + delta})`);
- }
- });
- }
- else {
- node.on("click", null);
- toggleNodeClickCallback(true);
- chart.on("mousedown", null)
- .on("mouseup", null)
- .on("mousemove", null);
- }
- }
- }
-}
-function spreadNodes(node, level=0) {
- if (!node.children || !node.children.length) {
- node._depth = 1;
- return level;
- }
- let max = 1, childMax;
- for (let child of node.children) {
- childMax = spreadNodes(child, level + 1);
- if (childMax > max) {
- max = childMax;
- }
- }
- node._depth = level / max;
- return max;
+
+function attrRemove(name) {
+ return function() {
+ this.removeAttribute(name);
+ };
}
-function filterSeries(nodes, activeSeries) {
- let filteredNodes = [],
- nodesDict = {},
- parent;
+function attrRemoveNS(fullname) {
+ return function() {
+ this.removeAttributeNS(fullname.space, fullname.local);
+ };
+}
- for (let node of nodes) {
- nodesDict[node.name] = node;
- }
+function attrConstant(name, interpolate, value1) {
+ var value00,
+ interpolate0;
+ return function() {
+ var value0 = this.getAttribute(name);
+ return value0 === value1 ? null
+ : value0 === value00 ? interpolate0
+ : interpolate0 = interpolate(value00 = value0, value1);
+ };
+}
- for (let node of nodes) {
- let currentNode = node;
- if (!activeSeries.has(currentNode.series)) continue;
- while(parent = currentNode.parent) {
- let parentNode = nodesDict[parent];
- if (activeSeries.has(parentNode.series)) {
- node.parent = parent;
- break;
- }
- currentNode = parentNode;
- }
- if (node.parent && !activeSeries.has(nodesDict[node.parent].series)) {
- node.parent = null;
- }
- filteredNodes.push(node);
- }
- return filteredNodes;
+function attrConstantNS(fullname, interpolate, value1) {
+ var value00,
+ interpolate0;
+ return function() {
+ var value0 = this.getAttributeNS(fullname.space, fullname.local);
+ return value0 === value1 ? null
+ : value0 === value00 ? interpolate0
+ : interpolate0 = interpolate(value00 = value0, value1);
+ };
}
-let layoutTemplate = {
- title: null,
- width: null,
- height: 600,
- backgroundColour: "none",
- textColour: "black",
- margin: {
- top: 10,
- bottom: 10,
- right: 10,
- left: 10
- },
- nodeTypes: {},
- seriesColours: null,
- nodeLabel: {
- "font-size": 12,
- "font-family": "Roboto,Helvetica Neue,sans-serif"
- },
- outerNodeLabel: {
- "font-size": 14,
- "font-family": "Roboto,Helvetica Neue,sans-serif"
- },
- link: {
- stroke: "#ccc",
- "stroke-width": 1
- },
- heatmap: {
- enabled: false,
- colourScale: [
- [0, '#008ae5'],
- [1, 'yellow']
- ],
- colourBar: {
- show: true,
- height: "90%",
- width: 30
- },
- circle: {
- r: 16
- },
- opacity: 0.4
- },
- legend: {
- show: false,
- position: {
- x: "right",
- y: "center"
- },
- anchor: {
- x: "outside",
- y: "inside"
- },
- orientation: "vertical",
- backgroundColour: null
- },
- controlsEnabledOnStart: []
-};
+function attrFunction(name, interpolate, value) {
+ var value00,
+ value10,
+ interpolate0;
+ return function() {
+ var value0, value1 = value(this);
+ if (value1 == null) return void this.removeAttribute(name);
+ value0 = this.getAttribute(name);
+ return value0 === value1 ? null
+ : value0 === value00 && value1 === value10 ? interpolate0
+ : interpolate0 = interpolate(value00 = value0, value10 = value1);
+ };
+}
+function attrFunctionNS(fullname, interpolate, value) {
+ var value00,
+ value10,
+ interpolate0;
+ return function() {
+ var value0, value1 = value(this);
+ if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);
+ value0 = this.getAttributeNS(fullname.space, fullname.local);
+ return value0 === value1 ? null
+ : value0 === value00 && value1 === value10 ? interpolate0
+ : interpolate0 = interpolate(value00 = value0, value10 = value1);
+ };
+}
-const RadialLineagePlotComponent = {
- template: '',
- controller: RadialLineagePlotController,
- bindings: {
- value: '<',
- nodeClick: '&'
- }
+/* harmony default export */ __webpack_exports__["a"] = function(name, value) {
+ var fullname = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_selection__["namespace"])(name), i = fullname === "transform" ? __WEBPACK_IMPORTED_MODULE_0_d3_interpolate__["interpolateTransformSvg"] : __WEBPACK_IMPORTED_MODULE_3__interpolate__["a" /* default */];
+ return this.attrTween(name, typeof value === "function"
+ ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__tween__["b" /* tweenValue */])(this, "attr." + name, value))
+ : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)
+ : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));
};
-RadialLineagePlotController.$$ngIsClass = true; // temporary Firefox fix
-/* unused harmony default export */ var _unused_webpack_default_export = __WEBPACK_IMPORTED_MODULE_1_angular___default.a.module('ancestry.radial-lineage', [])
- .component('radialLineagePlot', RadialLineagePlotComponent);
-
/***/ }),
-/* 6 */
+/* 287 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__radial_phylogenetic_tree_css__ = __webpack_require__(13);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__radial_phylogenetic_tree_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__radial_phylogenetic_tree_css__);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_angular__ = __webpack_require__(0);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_angular___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_angular__);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_d3__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_d3___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_d3__);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__shared_features_js__ = __webpack_require__(2);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(0);
+
+
+function attrTweenNS(fullname, value) {
+ function tween() {
+ var node = this, i = value.apply(node, arguments);
+ return i && function(t) {
+ node.setAttributeNS(fullname.space, fullname.local, i(t));
+ };
+ }
+ tween._value = value;
+ return tween;
+}
+
+function attrTween(name, value) {
+ function tween() {
+ var node = this, i = value.apply(node, arguments);
+ return i && function(t) {
+ node.setAttribute(name, i(t));
+ };
+ }
+ tween._value = value;
+ return tween;
+}
+/* harmony default export */ __webpack_exports__["a"] = function(name, value) {
+ var key = "attr." + name;
+ if (arguments.length < 2) return (key = this.tween(key)) && key._value;
+ if (value == null) return this.tween(key, null);
+ if (typeof value !== "function") throw new Error;
+ var fullname = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_selection__["namespace"])(name);
+ return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));
+};
+/***/ }),
+/* 288 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__schedule__ = __webpack_require__(5);
-class RadialPhylogeneticTreeController {
- constructor($element, $window, $scope) {
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["a" /* attachActionOnResize */])($window, () => this.render({}));
- $element.addClass("ancestry ancestry-radial-phylogenetic-tree");
+function delayFunction(id, value) {
+ return function() {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__schedule__["g" /* init */])(this, id).delay = +value.apply(this, arguments);
+ };
+}
- this.svg = __WEBPACK_IMPORTED_MODULE_2_d3__["select"]($element[0])
- .style("position", "relative")
- .append("svg");
+function delayConstant(id, value) {
+ return value = +value, function() {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__schedule__["g" /* init */])(this, id).delay = value;
+ };
+}
- this.colours = __WEBPACK_IMPORTED_MODULE_2_d3__["scaleOrdinal"](__WEBPACK_IMPORTED_MODULE_2_d3__["schemeCategory10"]);
- this.defaultNode = {
- r: 4,
- "stroke-width": 2
- };
- this.labelOffset = 20;
- this.hovering = false;
- this.visibleSeries = new Set();
- this.virtualRoot = null;
- this.virtualRootName = "virtual_root";
- this.link = null;
- this.node = null;
- this.linkExtension = null;
- this.totalTreeLength = null;
- this.multipleTreeOffset = 0;
- this._$element = $element;
- this._$window = $window;
- this._$scope = $scope;
- }
+/* harmony default export */ __webpack_exports__["a"] = function(value) {
+ var id = this._id;
- $onChanges(changes) {
- if (changes.value && changes.value.currentValue) {
- this.render({isNewData: true});
- }
- if (changes.branchlength) {
- let that = this;
- let show = changes.branchlength.currentValue;
- if (!this.linkExtension || !this.link || !this.totalTreeLength) return;
- __WEBPACK_IMPORTED_MODULE_2_d3__["transition"]().duration(750).each(function() {
- that.linkExtension.transition().attr("d", d => step2(d.x, show ? d.data.radius : d.y, d.x, that.totalTreeLength + that.multipleTreeOffset));
- that.link.transition().attr("d", d => step2(d.parent.x, show ? d.parent.data.radius : d.parent.y, d.x, show ? d.data.radius : d.y));
- });
- }
- }
+ return arguments.length
+ ? this.each((typeof value === "function"
+ ? delayFunction
+ : delayConstant)(id, value))
+ : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__schedule__["f" /* get */])(this.node(), id).delay;
+};
- render(options) {
- let that = this;
- // clean svg before rendering plot
- this.svg.selectAll('*').remove();
- let defs = this.svg.append("defs");
+/***/ }),
+/* 289 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__schedule__ = __webpack_require__(5);
- // do not continue rendering if there is no data
- if (!this.value || !this.value.data.length) return;
- let copy = __WEBPACK_IMPORTED_MODULE_1_angular___default.a.copy(this.value),
- layout = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["c" /* mergeTemplateLayout */])(copy.layout, layoutTemplate),
- seriesNames = Array.from(new Set(extractProp(this.value.data, "series")));
+function durationFunction(id, value) {
+ return function() {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__schedule__["e" /* set */])(this, id).duration = +value.apply(this, arguments);
+ };
+}
- if (options.isNewData) {
- if (layout.seriesColours == null) {
- this.colours.domain([]);
- }
- this.visibleSeries = new Set(seriesNames);
- }
+function durationConstant(id, value) {
+ return value = +value, function() {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__schedule__["e" /* set */])(this, id).duration = value;
+ };
+}
- let treeData = copy.data,
- pathname = this._$window.location.pathname;
+/* harmony default export */ __webpack_exports__["a"] = function(value) {
+ var id = this._id;
- let elementWidth = this._$element[0].offsetWidth,
- elementHeight = this._$element[0].offsetHeight;
+ return arguments.length
+ ? this.each((typeof value === "function"
+ ? durationFunction
+ : durationConstant)(id, value))
+ : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__schedule__["f" /* get */])(this.node(), id).duration;
+};
- treeData = treeData.map(t => collapseSeries(t, this.visibleSeries)).filter(t => t !== null);
- let isMultipleTree = treeData.length > 1,
- longestNodeName = treeData.length ? extractProp(treeData, "name")
- .reduce((a, b) => a.length > b.length ? a : b) : "",
- maxLabelLength = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["e" /* testLabelLength */])(this.svg, longestNodeName, layout.outerNodeLabel),
- colourBarOffset = 20,
- start = null,
- rotate = 0,
- heatmapColourScale = null,
- heatmapCircle = null,
- nodeCircle = null,
- trees = null,
- legendHeight = 0, legendWidth = 0, colourbarHeight = 0, colourbarWidth = 0,
- legendOut = {top: false, right: false, bottom: false, left: false},
- colourBarOrigWidth = layout.heatmap.colourBar.width, colourBarOrigHeight = layout.heatmap.colourBar.height,
- showHeatmapTitle = layout.heatmap.enabled && layout.heatmap.title !== null,
- legend = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](),
- colourbar = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](),
- titleSVG = __WEBPACK_IMPORTED_MODULE_2_d3__["select"]();
+/***/ }),
+/* 290 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let width = layout.width || elementWidth,
- height = layout.height || elementHeight;
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__schedule__ = __webpack_require__(5);
- this.svg.append("rect")
- .attr("x", 0)
- .attr("y", 0)
- .attr("width", width)
- .attr("height", height)
- .attr("fill", layout.backgroundColour);
- if (layout.legend.show) {
- if (layout.legend.anchor.x == "outside") legendOut[layout.legend.position.x] = true;
- if (layout.legend.anchor.y == "outside") legendOut[layout.legend.position.y] = true;
- }
+function easeConstant(id, value) {
+ if (typeof value !== "function") throw new Error;
+ return function() {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__schedule__["e" /* set */])(this, id).ease = value;
+ };
+}
- let margin = layout.margin;
- if (layout.title) margin.top += legendOut.top ? 26 : 25;
+/* harmony default export */ __webpack_exports__["a"] = function(value) {
+ var id = this._id;
- let chart = this.svg.append("g");
+ return arguments.length
+ ? this.each(easeConstant(id, value))
+ : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__schedule__["f" /* get */])(this.node(), id).ease;
+};
- this.multipleTreeOffset = isMultipleTree ? 30 : 0;
- if (layout.seriesColours != null) {
- this.colours = (series) => layout.seriesColours[series];
- }
+/***/ }),
+/* 291 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- if (layout.heatmap.enabled) {
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(0);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__index__ = __webpack_require__(8);
- let domain = __WEBPACK_IMPORTED_MODULE_2_d3__["extent"](extractProp(treeData, "z").filter(d => !!d));
- if (domain[0] == domain[1]) {
- if (domain[0] === undefined) {
- domain[0] = domain[1] = 0;
- }
- domain[0] -= 0.5;
- domain[1] += 0.5;
- }
- heatmapColourScale = __WEBPACK_IMPORTED_MODULE_2_d3__["scaleLinear"]()
- .domain(domain)
- .range(layout.heatmap.colourScale.map(v => v[1]));
+/* harmony default export */ __webpack_exports__["a"] = function(match) {
+ if (typeof match !== "function") match = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_selection__["matcher"])(match);
- if (layout.heatmap.colourBar.show) {
- layout.heatmap.colourBar.height = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* calcColourBarSize */])(layout.heatmap.colourBar.height, height);
- layout.heatmap.colourBar.width = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* calcColourBarSize */])(layout.heatmap.colourBar.width, width);
+ for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
+ if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
+ subgroup.push(node);
+ }
+ }
+ }
- colourbar = chart.append("g")
- .attr("class", "ancestry-colourbar").attr("transform", "translate(0,0)");
+ return new __WEBPACK_IMPORTED_MODULE_1__index__["a" /* Transition */](subgroups, this._parents, this._name, this._id);
+};
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["h" /* drawColourBar */])(colourbar, heatmapColourScale.domain(), layout.heatmap, defs, pathname);
- let bbox = colourbar.node().getBoundingClientRect();
+/***/ }),
+/* 292 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- colourbarWidth = bbox.width;
- margin.right += colourbarWidth - (showHeatmapTitle ? 1 : 0) + colourBarOffset;
- colourbarHeight = bbox.height;
- }
- }
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(8);
- if (layout.legend.show) {
- let pos = layout.legend.position,
- anchor = layout.legend.anchor,
- orientation = layout.legend.orientation;
+/* harmony default export */ __webpack_exports__["a"] = function(transition) {
+ if (transition._id !== this._id) throw new Error;
- let splitAfter = orientation === "horizontal" ? 0 : 1;
+ 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) {
+ for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
+ if (node = group0[i] || group1[i]) {
+ merge[i] = node;
+ }
+ }
+ }
- let drawLegend = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["i" /* d3legend */])()
- .splitAfter(splitAfter)
- .position(pos)
- .anchor(anchor)
- .seriesNames(seriesNames)
- .colourScale(this.colours)
- .backgroundColour(layout.legend.backgroundColour || layout.backgroundColour)
- .onClick(legendClick)
- .maxSize({width, height})
- .selectedItems(this.visibleSeries);
+ for (; j < m0; ++j) {
+ merges[j] = groups0[j];
+ }
- legend = chart.append("g")
- .attr("class", "ancestry-legend")
- .call(drawLegend);
+ return new __WEBPACK_IMPORTED_MODULE_0__index__["a" /* Transition */](merges, this._parents, this._name, this._id);
+};
- let bbox = legend.node().getBoundingClientRect();
- legendHeight = bbox.height;
- legendWidth = bbox.width;
- if (anchor.x === "outside" && pos.x !== "center") {
- margin[pos.x] += legendOut.right ? legendWidth - 10 : (legendOut.left ? legendWidth - 11 : legendWidth);
- }
- else if (anchor.y === "outside" && pos.y !== "center") {
- margin[pos.y] += legendOut.bottom ? legendHeight - 11 : (legendOut.top ? legendHeight - 11 : legendHeight);
- }
- }
- function legendClick(label) {
- let clicked = __WEBPACK_IMPORTED_MODULE_2_d3__["select"](this);
- if (that.visibleSeries.has(label))
- that.visibleSeries.delete(label);
- else
- that.visibleSeries.add(label);
- clicked.classed("legend-item-selected", that.visibleSeries.has(label));
- clicked.select("rect.shape").attr("fill", that.visibleSeries.has(label) ? that.colours(label) : "white");
- that.render({isNewData: false})
- }
+/***/ }),
+/* 293 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- width = (layout.width || elementWidth) - margin.right - margin.left;
- height = (layout.height || elementHeight) - margin.top - margin.bottom;
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__schedule__ = __webpack_require__(5);
- let r = Math.min(height, width) / 2;
- this.totalTreeLength = r - maxLabelLength - this.labelOffset - this.multipleTreeOffset;
+function start(name) {
+ return (name + "").trim().split(/^|\s+/).every(function(t) {
+ var i = t.indexOf(".");
+ if (i >= 0) t = t.slice(0, i);
+ return !t || t === "start";
+ });
+}
- chart.attr("transform", `translate(${margin.left},${margin.top})`);
+function onFunction(id, name, listener) {
+ var on0, on1, sit = start(name) ? __WEBPACK_IMPORTED_MODULE_0__schedule__["g" /* init */] : __WEBPACK_IMPORTED_MODULE_0__schedule__["e" /* set */];
+ return function() {
+ var schedule = sit(this, id),
+ on = schedule.on;
- if (layout.legend.show) {
- let pos = layout.legend.position,
- anchor = layout.legend.anchor,
- posX = pos.x === "left" ? width / 2 - r : (pos.x === "right" ? width / 2 + r + (anchor.x === "outside" ? colourBarOffset + colourbarWidth : 0) : width / 2),
- posY = pos.y === "top" ? height / 2 - r : (pos.y === "bottom" ? height / 2 + r : height / 2);
+ // If this node shared a dispatch with the previous node,
+ // just assign the updated shared dispatch and we’re done!
+ // Otherwise, copy-on-write.
+ if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);
- legend.attr("transform", `translate(${posX},${posY})`);
- }
+ schedule.on = on1;
+ };
+}
- if (isMultipleTree) {
- this.virtualRoot = {
- name: that.virtualRootName,
- parent: null,
- children: [],
- series: 0,
- _depth: 0,
- length: 0,
- type: undefined
- };
+/* harmony default export */ __webpack_exports__["a"] = function(name, listener) {
+ var id = this._id;
- for (let tree of treeData) {
- spreadNodes(tree);
- tree.parent = this.virtualRootName;
- this.virtualRoot.children.push(tree);
- }
- trees = this.virtualRoot;
- }
- else if (treeData.length) {
- trees = treeData[0];
- spreadNodes(trees);
- }
+ return arguments.length < 2
+ ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__schedule__["f" /* get */])(this.node(), id).on.on(name)
+ : this.each(onFunction(id, name, listener));
+};
- let types = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["j" /* createNodeTypes */])(treeData, layout.nodeTypes, this.defaultNode),
- nodeAttr = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["k" /* createDynamicNodeAttr */])(types, Object.keys(this.defaultNode));
+/***/ }),
+/* 294 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let treeLayout = __WEBPACK_IMPORTED_MODULE_2_d3__["cluster"]().size([360, 1]).separation(() => 1),
- treeRoot = __WEBPACK_IMPORTED_MODULE_2_d3__["hierarchy"](trees, d => d.children).sort((a, b) => b.depth - a.depth),
- nodes = treeLayout(treeRoot),
- descendants = nodes.descendants().filter(n => n.parent != null);
+"use strict";
+function removeFunction(id) {
+ return function() {
+ var parent = this.parentNode;
+ for (var i in this.__transition) if (+i !== id) return;
+ if (parent) parent.removeChild(this);
+ };
+}
- this.svg.attr("width", width + margin.left + margin.right)
- .attr("height", height + margin.top + margin.bottom)
- .style("-webkit-backface-visibility", "hidden");
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ return this.on("end.remove", removeFunction(this._id));
+};
- // Catch mouse events in Safari.
- this.svg.append("rect")
- .attr("width", width + margin.left + margin.right)
- .attr("height", height + margin.top + margin.bottom)
- .attr("fill", "none");
- let visTranslate = [width / 2, height / 2],
- vis = chart.append("g")
- .attr("transform", `translate(${visTranslate[0]},${visTranslate[1]})`);
+/***/ }),
+/* 295 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- vis.append("rect")
- .attr("x", -r)
- .attr("y", -r)
- .attr("width", 2 * r)
- .attr("height", 2 * r)
- .style("opacity", 1e-6);
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(0);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__index__ = __webpack_require__(8);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__schedule__ = __webpack_require__(5);
- descendants.forEach(d => {
- d.y = d.name === that.virtualRootName ? 0 : that.multipleTreeOffset + d.data._depth * (that.totalTreeLength);
- });
- // render chart title
- if (layout.title) {
- titleSVG = chart.append("text")
- .attr("x", (width / 2))
- .attr("y", height / 2 - r - (layout.legend.position.y == "top" && layout.legend.anchor.y == "outside" ? legendHeight : 10))
- .attr("text-anchor", "middle")
- .style("font-size", "20px")
- .text(layout.title);
- }
- if (layout.heatmap.enabled && layout.heatmap.colourBar.show) {
- layout.heatmap.colourBar.height = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* calcColourBarSize */])(colourBarOrigHeight, 2 * r);
- layout.heatmap.colourBar.width = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["g" /* calcColourBarSize */])(colourBarOrigWidth, width);
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["h" /* drawColourBar */])(colourbar, heatmapColourScale.domain(), layout.heatmap, defs, pathname);
- colourbar.attr("transform", `translate(${width / 2 + r + colourBarOffset},${(height - layout.heatmap.colourBar.height) / 2})`);
- }
+/* harmony default export */ __webpack_exports__["a"] = function(select) {
+ var name = this._name,
+ id = this._id;
- if (layout.heatmap.enabled) {
- heatmapCircle = vis.append("g")
- .attr("class", "heatmap-layer")
- .selectAll("circle.heatmap-circle")
- .data(descendants.filter(n => n.data.taxon && n.data.taxon.name !== null && !isNaN(parseFloat(n.data.taxon.z))))
- .enter()
- .append("circle")
- .attr("class", "heatmap-circle")
- .style("fill", d => heatmapColourScale(d.data.taxon.z))
- .style("opacity", layout.heatmap.opacity)
- .attr("transform", d => `rotate(${d.x - 90})translate(${d.y})`);
-
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(heatmapCircle, layout.heatmap.circle);
- }
-
- if (treeData.length) {
- removeNegativeLengths(trees);
- setRadius(trees, trees.length = 0, this.totalTreeLength / maxLength(trees));
- }
-
- let show = this.branchlength !== undefined ? this.branchlength : true;
- this.linkExtension = vis.append("g")
- .selectAll("path")
- .data(descendants.filter(d => !d.children))
- .enter().append("path")
- .attr("stroke", "black")
- .style("opacity", 0.2)
- .attr("class", "link-extension")
- .each(function (d) {
- d.linkExtensionNode = this;
- })
- .attr("d", d => step2(d.x, show ? d.data.radius : d.y, d.x, this.totalTreeLength + this.multipleTreeOffset));
-
- this.link = vis.append("g")
- .selectAll("path")
- .data(descendants.filter(n => n.parent.data.name != this.virtualRootName))
- .enter().append("path")
- .attr("class", "link")
- .attr("fill", "none")
- .each(function (d) {
- d.linkNode = this;
- })
- .attr("d", d => step2(d.parent.x, show ? d.parent.data.radius : d.parent.y, d.x, show ? d.data.radius : d.y))
- .style("stroke", "black");
-
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(this.link, layout.link);
-
- if (isMultipleTree) {
- this.link.filter(d => d.parent.name === this.virtualRootName).style("opacity", 0);
- }
-
- if (layout.showLeafNodes) {
- this.node = vis.selectAll("g.node")
- .data(descendants.filter(d => !d.children || !d.children.length))
- .enter().append("g")
- //.attr("id", d => d.name)
- .attr("class", "node")
- .attr("transform", d => `rotate(${d.x - 90})translate(${d.y})`)
- .on("mouseover", mouseovered(true))
- .on("mouseout", mouseovered(false))
- .each(function (d) {
- d.nodeGroupNode = this;
- });
+ if (typeof select !== "function") select = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_selection__["selector"])(select);
- this.node.filter(d => !d.data.taxon)
- .style("opacity", 0);
+ for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
+ if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
+ if ("__data__" in node) subnode.__data__ = node.__data__;
+ subgroup[i] = subnode;
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__schedule__["h" /* default */])(subgroup[i], name, id, i, subgroup, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__schedule__["f" /* get */])(node, id));
+ }
+ }
+ }
- nodeCircle = this.node.append("circle")
- .attr("fill", "white")
- .style("stroke", d => d.data.taxon && d.data.name !== this.virtualRootName ? this.colours(d.data.taxon.series) : "none");
+ return new __WEBPACK_IMPORTED_MODULE_1__index__["a" /* Transition */](subgroups, this._parents, name, id);
+};
- toggleNodeClickCallback(true);
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(nodeCircle, nodeAttr);
- }
+/***/ }),
+/* 296 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let maxLabelHeight = 2 * Math.PI * (this.multipleTreeOffset + this.totalTreeLength + this.labelOffset) /
- descendants.filter(d => !d.children || !d.children.length).length;
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(0);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__index__ = __webpack_require__(8);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__schedule__ = __webpack_require__(5);
- layout.outerNodeLabel["font-size"] = __WEBPACK_IMPORTED_MODULE_2_d3__["min"]([layout.outerNodeLabel["font-size"], maxLabelHeight]);
- let label = vis.selectAll("text.outer-label")
- .data(descendants.filter(d => !!d.data.taxon))
- .enter().append("text")
- .attr("class", "outer-label")
- .attr("dy", ".31em")
- .attr("text-anchor", d => d.x < 180 ? "start" : "end")
- .attr("transform", d => `rotate(${d.x - 90})
- translate(${this.totalTreeLength + this.labelOffset + this.multipleTreeOffset})
- rotate(${d.x < 180 ? 0 : 180})`)
- .text(d => d.data.taxon.name)
- .on("mouseover", mouseovered(true))
- .on("mouseout", mouseovered(false));
- __WEBPACK_IMPORTED_MODULE_3__shared_features_js__["m" /* multiAttr */].call(label, layout.outerNodeLabel);
- this.svg.selectAll("text").attr("fill", layout.textColour);
+/* harmony default export */ __webpack_exports__["a"] = function(select) {
+ var name = this._name,
+ id = this._id;
- legend.each(moveToFront);
- titleSVG.each(moveToFront);
+ if (typeof select !== "function") select = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_selection__["selectorAll"])(select);
- function mouseovered(active) {
- return function (d) {
- __WEBPACK_IMPORTED_MODULE_2_d3__["select"](this).classed("label-active", active);
- __WEBPACK_IMPORTED_MODULE_2_d3__["select"](d.linkExtensionNode).classed("link-extension-active", active).each(moveToFront);
- do __WEBPACK_IMPORTED_MODULE_2_d3__["select"](d.linkNode).classed("link-active", active).each(moveToFront); while (d = d.parent);
- };
+ for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
+ if (node = group[i]) {
+ for (var children = select.call(node, node.__data__, i, group), child, inherit = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__schedule__["f" /* get */])(node, id), k = 0, l = children.length; k < l; ++k) {
+ if (child = children[k]) {
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__schedule__["h" /* default */])(child, name, id, k, children, inherit);
+ }
}
+ subgroups.push(children);
+ parents.push(node);
+ }
+ }
+ }
- function toggleNodeClickCallback(active) {
- if (that.nodeClick === undefined || nodeCircle == null) return;
+ return new __WEBPACK_IMPORTED_MODULE_1__index__["a" /* Transition */](subgroups, parents, name, id);
+};
- function nodeClickCallback(d) {
- that._$scope.$apply(() => {
- that.nodeClick({ $event: __WEBPACK_IMPORTED_MODULE_2_d3__["event"], $node: d.data});
- });
- }
- nodeCircle.on('click', active ? nodeClickCallback : null);
- }
+/***/ }),
+/* 297 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- let controls = {
- 'download': function () {},
- 'zoom': toggleMove
- };
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(0);
- if (this.activeControls == null) {
- this.activeControls = new Set(layout.controlsEnabledOnStart);
- }
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__shared_features_js__["r" /* createPlotControls */])(this._$element[0], controls, this.activeControls);
+var Selection = __WEBPACK_IMPORTED_MODULE_0_d3_selection__["selection"].prototype.constructor;
- function toggleMove(toggle) {
- if (toggle) {
- chart.on("mousedown", function () {
- if (!that.hovering) {
- that.svg.style("cursor", "move");
- start = mouse(that.svg.node());
- __WEBPACK_IMPORTED_MODULE_2_d3__["event"].preventDefault();
- }
- })
- .on("mouseup", function () {
- if (start && !that.hovering) {
- that.svg.style("cursor", "auto");
- let m = mouse(that.svg.node());
- rotate += Math.atan2(cross(start, m), dot(start, m)) * 180 / Math.PI;
- if (rotate > 360) rotate %= 360;
- else if (rotate < 0) rotate = (360 + rotate) % 360;
- start = null;
- vis.attr("transform", `translate(${visTranslate[0]},${visTranslate[1]})rotate(${rotate})`)
- .selectAll("text.outer-label")
- .attr("text-anchor", d=> (d.x + rotate) % 360 < 180 ? "start" : "end")
- .attr("transform", d => `rotate(${d.x - 90})
- translate(${that.totalTreeLength + that.labelOffset + that.multipleTreeOffset})
- rotate(${(d.x + rotate) % 360 < 180 ? 0 : 180})`);
- }
- })
- .on("mousemove", function () {
- if (start) {
- let m = mouse(that.svg.node());
- let delta = Math.atan2(cross(start, m), dot(start, m)) * 180 / Math.PI;
- vis.attr("transform", `translate(${visTranslate[0]},${visTranslate[1]})rotate(${rotate + delta})`);
- }
- });
- }
- else {
- chart.on("mousedown", null)
- .on("mouseup", null)
- .on("mousemove", null);
- }
- }
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ return new Selection(this._groups, this._parents);
+};
- function mouse(element) {
- return __WEBPACK_IMPORTED_MODULE_2_d3__["mouse"](element).map((d, i) => d - visTranslate[i]);
- }
- function moveToFront() {
- this.parentNode.appendChild(this);
- }
+/***/ }),
+/* 298 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
- function cross(a, b) {
- return a[0] * b[1] - a[1] * b[0];
- }
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_interpolate__ = __webpack_require__(3);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_d3_selection__ = __webpack_require__(0);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__tween__ = __webpack_require__(26);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__interpolate__ = __webpack_require__(101);
- function dot(a, b) {
- return a[0] * b[0] + a[1] * b[1];
- }
- function setRadius(d, y0, k) {
- d.radius = (y0 += d.length) * k + that.multipleTreeOffset;
- if (d.children && d.children.length > 0) d.children.forEach(d => setRadius(d, y0, k));
- }
- function removeNegativeLengths(d) {
- if (d.length < 0) d.length = 0;
- if (d.children && d.children.length > 0) d.children.forEach(removeNegativeLengths);
- }
- function maxLength(d) {
- return d.length + (d.children && d.children.length > 0 ? __WEBPACK_IMPORTED_MODULE_2_d3__["max"](d.children, maxLength) : 0);
- }
- function extractProp(trees, prop) {
- let values = [];
- for (let tree of trees) {
- extract(tree);
- }
- function extract(tree) {
- if (tree.taxon !== null) values.push(tree.taxon[prop]);
- else {
- extract(tree.children[0]);
- extract(tree.children[1]);
- }
- }
+function styleRemove(name, interpolate) {
+ var value00,
+ value10,
+ interpolate0;
+ return function() {
+ var style = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_selection__["window"])(this).getComputedStyle(this, null),
+ value0 = style.getPropertyValue(name),
+ value1 = (this.style.removeProperty(name), style.getPropertyValue(name));
+ return value0 === value1 ? null
+ : value0 === value00 && value1 === value10 ? interpolate0
+ : interpolate0 = interpolate(value00 = value0, value10 = value1);
+ };
+}
- return values;
- }
- }
+function styleRemoveEnd(name) {
+ return function() {
+ this.style.removeProperty(name);
+ };
}
-function step2(startAngle, startRadius, endAngle, endRadius) {
- var c0 = Math.cos(startAngle = (startAngle - 90) / 180 * Math.PI),
- s0 = Math.sin(startAngle),
- c1 = Math.cos(endAngle = (endAngle - 90) / 180 * Math.PI),
- s1 = Math.sin(endAngle);
- return "M" + startRadius * c0 + "," + startRadius * s0
- + (endAngle === startAngle ? "" : "A" + startRadius + "," + startRadius + " 0 0 "
- + (endAngle > startAngle ? 1 : 0) + " " + startRadius * c1 + "," + startRadius * s1)
- + "L" + endRadius * c1 + "," + endRadius * s1;
+function styleConstant(name, interpolate, value1) {
+ var value00,
+ interpolate0;
+ return function() {
+ var value0 = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_selection__["window"])(this).getComputedStyle(this, null).getPropertyValue(name);
+ return value0 === value1 ? null
+ : value0 === value00 ? interpolate0
+ : interpolate0 = interpolate(value00 = value0, value1);
+ };
}
-function spreadNodes(node, level=0) {
- if (!node.children || !node.children.length) {
- node._depth = 1;
- return level;
- }
- let max = 1, childMax;
- for (let child of node.children) {
- childMax = spreadNodes(child, level + 1);
- if (childMax > max) {
- max = childMax;
- }
- }
- node._depth = level / max;
- return max;
+function styleFunction(name, interpolate, value) {
+ var value00,
+ value10,
+ interpolate0;
+ return function() {
+ var style = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_selection__["window"])(this).getComputedStyle(this, null),
+ value0 = style.getPropertyValue(name),
+ value1 = value(this);
+ if (value1 == null) value1 = (this.style.removeProperty(name), style.getPropertyValue(name));
+ return value0 === value1 ? null
+ : value0 === value00 && value1 === value10 ? interpolate0
+ : interpolate0 = interpolate(value00 = value0, value10 = value1);
+ };
}
-function collapseSeries(tree, visibleSeries) {
+/* harmony default export */ __webpack_exports__["a"] = function(name, value, priority) {
+ var i = (name += "") === "transform" ? __WEBPACK_IMPORTED_MODULE_0_d3_interpolate__["interpolateTransformCss"] : __WEBPACK_IMPORTED_MODULE_3__interpolate__["a" /* default */];
+ return value == null ? this
+ .styleTween(name, styleRemove(name, i))
+ .on("end.style." + name, styleRemoveEnd(name))
+ : this.styleTween(name, typeof value === "function"
+ ? styleFunction(name, i, __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__tween__["b" /* tweenValue */])(this, "style." + name, value))
+ : styleConstant(name, i, value), priority);
+};
- let leaves = [];
- (function findLeaves(t) {
- if (t.taxon !== null) {
- leaves.push(t);
- return;
- }
- findLeaves(t.children[0]);
- findLeaves(t.children[1]);
- })(tree);
- (function addParents(t, parent) {
- if (parent) {
- t.parent = parent;
- }
- if (t.taxon !== null) {
- return;
- }
- addParents(t.children[0], t);
- addParents(t.children[1], t);
- })(tree, null);
- let leavesOut = leaves.filter(l => !visibleSeries.has(l.taxon.series));
- for (let leaf of leavesOut) {
- let parent = leaf.parent;
- if (!parent && leaf.taxon) {
- return null;
- }
- let sibling = parent.children[parent.children.indexOf(leaf) ^ 1];
- let parent2 = parent.parent;
- if (!parent2) {
- sibling.parent = null;
- tree = sibling;
- continue;
- }
- parent2.children[parent2.children.indexOf(parent)] = sibling;
- sibling.length += parent.length;
- sibling.parent = parent2;
- }
- return !tree.children.length ? null : tree;
+/***/ }),
+/* 299 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+function styleTween(name, value, priority) {
+ function tween() {
+ var node = this, i = value.apply(node, arguments);
+ return i && function(t) {
+ node.style.setProperty(name, i(t), priority);
+ };
+ }
+ tween._value = value;
+ return tween;
}
-let layoutTemplate = {
- title: null,
- width: null,
- height: 600,
- backgroundColour: "none",
- textColour: "black",
- margin: {
- top: 10,
- bottom: 10,
- right: 10,
- left: 10
- },
- nodeTypes: {},
- seriesColours: null,
- showLeafNodes: true,
- outerNodeLabel: {
- "font-size": 14,
- "font-family": "Roboto,Helvetica Neue,sans-serif"
- },
- link: {
- "stroke-width": 1
- },
- heatmap: {
- enabled: false,
- colourScale: [
- [0, '#008ae5'],
- [1, 'yellow']
- ],
- colourBar: {
- show: true,
- height: "90%",
- width: 30
- },
- circle: {
- r: 16
- },
- opacity: 0.4
- },
- legend: {
- show: false,
- position: {
- x: "right",
- y: "center"
- },
- anchor: {
- x: "outside",
- y: "inside"
- },
- orientation: "vertical",
- backgroundColour: null
- },
- controlsEnabledOnStart: []
+/* harmony default export */ __webpack_exports__["a"] = function(name, value, priority) {
+ var key = "style." + (name += "");
+ if (arguments.length < 2) return (key = this.tween(key)) && key._value;
+ if (value == null) return this.tween(key, null);
+ if (typeof value !== "function") throw new Error;
+ return this.tween(key, styleTween(name, value, priority == null ? "" : priority));
};
-const RadialPhylogeneticTreeComponent = {
- template: '',
- controller: RadialPhylogeneticTreeController,
- bindings: {
- branchlength: '<',
- value: '<',
- nodeClick: '&'
- }
-};
+/***/ }),
+/* 300 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
-RadialPhylogeneticTreeController.$$ngIsClass = true; // temporary Firefox fix
-/* unused harmony default export */ var _unused_webpack_default_export = __WEBPACK_IMPORTED_MODULE_1_angular___default.a.module('ancestry.radial-phylogenetic-tree', [])
- .component('radialPhylogeneticTree', RadialPhylogeneticTreeComponent);
+"use strict";
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tween__ = __webpack_require__(26);
+function textConstant(value) {
+ return function() {
+ this.textContent = value;
+ };
+}
-/***/ }),
-/* 7 */
-/***/ (function(module, exports) {
+function textFunction(value) {
+ return function() {
+ var value1 = value(this);
+ this.textContent = value1 == null ? "" : value1;
+ };
+}
+
+/* harmony default export */ __webpack_exports__["a"] = function(value) {
+ return this.tween("text", typeof value === "function"
+ ? textFunction(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__tween__["b" /* tweenValue */])(this, "text", value))
+ : textConstant(value == null ? "" : value + ""));
+};
-// removed by extract-text-webpack-plugin
/***/ }),
-/* 8 */
+/* 301 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-/* harmony export (immutable) */ __webpack_exports__["a"] = SVG2Bitmap;
-/*
-SVG2Bitmap
-The MIT License (MIT)
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(8);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__schedule__ = __webpack_require__(5);
+
-Copyright (c) 2016 Kaiido
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
+/* harmony default export */ __webpack_exports__["a"] = function() {
+ var name = this._name,
+ id0 = this._id,
+ id1 = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__index__["b" /* newId */])();
- The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+ for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {
+ for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
+ if (node = group[i]) {
+ var inherit = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__schedule__["f" /* get */])(node, id0);
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__schedule__["h" /* default */])(node, name, id1, i, group, {
+ time: inherit.time + inherit.delay + inherit.duration,
+ delay: 0,
+ duration: inherit.duration,
+ ease: inherit.ease
+ });
+ }
+ }
+ }
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-function SVG2Bitmap(svg, receiver, params) {
+ return new __WEBPACK_IMPORTED_MODULE_0__index__["a" /* Transition */](groups, this._parents, name, id1);
+};
- "use strict";
- // check-in
- if (!params) {
- params = {};
+/***/ }),
+/* 302 */
+/***/ (function(module, exports, __webpack_require__) {
+
+(function (global, factory) {
+ true ? factory(exports, __webpack_require__(15), __webpack_require__(33), __webpack_require__(3), __webpack_require__(0), __webpack_require__(25)) :
+ typeof define === 'function' && define.amd ? define(['exports', 'd3-dispatch', 'd3-drag', 'd3-interpolate', 'd3-selection', 'd3-transition'], factory) :
+ (factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3));
+}(this, function (exports,d3Dispatch,d3Drag,d3Interpolate,d3Selection,d3Transition) { 'use strict';
+
+ function constant(x) {
+ return function() {
+ return x;
+ };
+ }
+
+ function ZoomEvent(target, type, transform) {
+ this.target = target;
+ this.type = type;
+ this.transform = transform;
+ }
+
+ function Transform(x, y, kx, ky) {
+ this.kx = kx;
+ this.ky = ky || kx;
+ this.x = x;
+ this.y = y;
+ }
+
+ Transform.prototype = {
+ constructor: Transform,
+ scale: function(kx, ky) {
+ ky = ky === undefined ? kx : ky;
+ return kx === 1 && (!ky || ky === 1) ? this : new Transform(this.x, this.y, this.kx * kx, this.ky * ky);
+ },
+ translate: function(x, y) {
+ return x === 0 & y === 0 ? this : new Transform(this.x + this.kx * x, this.y + this.ky * y, this.kx, this.ky);
+ },
+ apply: function(point) {
+ return [point[0] * this.kx + this.x, point[1] * this.ky + this.y];
+ },
+ applyX: function(x) {
+ return x * this.kx + this.x;
+ },
+ applyY: function(y) {
+ return y * this.ky + this.y;
+ },
+ invert: function(location) {
+ return [(location[0] - this.x) / this.kx, (location[1] - this.y) / this.ky];
+ },
+ invertX: function(x) {
+ return (x - this.x) / this.kx;
+ },
+ invertY: function(y) {
+ return (y - this.y) / this.ky;
+ },
+ rescaleX: function(x) {
+ return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));
+ },
+ rescaleY: function(y) {
+ return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));
+ },
+ toString: function() {
+ return "translate(" + this.x + "," + this.y + ") scale(" + this.kx + "," + this.ky + ")";
}
- if (!params.scale || params.scale < 0) {
- params.scale = 1;
+ };
+
+ var identity = new Transform(0, 0, 1, 1);
+
+ transform.prototype = Transform.prototype;
+
+ function transform(node) {
+ return node.__zoom || identity;
+ }
+
+ function nopropagation() {
+ d3Selection.event.stopImmediatePropagation();
+ }
+
+ function noevent() {
+ d3Selection.event.preventDefault();
+ d3Selection.event.stopImmediatePropagation();
+ }
+
+ // Ignore right-click, since that should open the context menu.
+ function defaultFilter() {
+ return !d3Selection.event.button;
+ }
+
+ function defaultExtent() {
+ var e = this, w, h;
+ if (e instanceof SVGElement) {
+ e = e.ownerSVGElement || e;
+ w = e.width.baseVal.value;
+ h = e.height.baseVal.value;
+ } else {
+ if (e && e.clientWidth && e.clientHeight) {
+ w = e.clientWidth;
+ h = e.clientHeight;
+ } else {
+ throw 'd3-xyzoom failed to constrain scales because extent is undefined.';
+ }
}
-
- if (!svg || !svg.nodeName) {
- console.error('Wrong arguments : should be \n SVG2Bitmap(SVGElement, function([canvasElement],[dataURL]) || IMGElement || CanvasElement [, {parameters})');
- return;
+ return [[0, 0], [w, h]];
+ }
+
+ function defaultTransform() {
+ return this.__zoom || identity;
+ }
+
+ function zoom() {
+ var filter = defaultFilter,
+ extent = defaultExtent,
+ kx0 = 0,
+ ky0 = 0,
+ kx0u = 0, // Min scale extent defined by user, can be overridden by kx0 and ky0 defined in constrainScaleExtent
+ ky0u = 0,
+ kx1 = Infinity,
+ ky1 = Infinity,
+ rx = 1,
+ ry = 1,
+ x0 = -Infinity,
+ x1 = Infinity,
+ y0 = -Infinity,
+ y1 = Infinity,
+ duration = 250,
+ interpolate = d3Interpolate.interpolateNumber,
+ gestures = [],
+ listeners = d3Dispatch.dispatch("start", "zoom", "end"),
+ touchstarting,
+ touchending,
+ touchDelay = 500,
+ wheelDelay = 150;
+
+ function zoom(selection) {
+ selection
+ .on("wheel.zoom", wheeled)
+ .on("mousedown.zoom", mousedowned)
+ .on("dblclick.zoom", dblclicked)
+ .on("touchstart.zoom", touchstarted)
+ .on("touchmove.zoom", touchmoved)
+ .on("touchend.zoom touchcancel.zoom", touchended)
+ .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)")
+ .property("__zoom", defaultTransform);
}
- // in case user passed a framed svg
- var frame;
- // for both