ui-widget-toolkit
Version:
UI widgets built on top of D3, Pixi.js and ag-grid-community
2,615 lines • 714 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("d3"), require("d3-sankey"), require("dagre"), require("es6-promise"), require("pixi.js"));
else if(typeof define === 'function' && define.amd)
define("UWT", ["d3", "d3-sankey", "dagre", "es6-promise", "pixi.js"], factory);
else if(typeof exports === 'object')
exports["UWT"] = factory(require("d3"), require("d3-sankey"), require("dagre"), require("es6-promise"), require("pixi.js"));
else
root["UWT"] = factory(root["d3"], root["Sankey"], root["dagre"], root["es6-promise"], root["PIXI"]);
})(window, function(__WEBPACK_EXTERNAL_MODULE_d3__, __WEBPACK_EXTERNAL_MODULE_d3_sankey__, __WEBPACK_EXTERNAL_MODULE_dagre__, __WEBPACK_EXTERNAL_MODULE_es6_promise__, __WEBPACK_EXTERNAL_MODULE_pixi_js__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./src/build/export.graph.ts");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./node_modules/d3-array/src/array.js":
/*!********************************************!*\
!*** ./node_modules/d3-array/src/array.js ***!
\********************************************/
/*! exports provided: slice, map */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"slice\", function() { return slice; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return map; });\nvar array = Array.prototype;\n\nvar slice = array.slice;\nvar map = array.map;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/array.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/ascending.js":
/*!************************************************!*\
!*** ./node_modules/d3-array/src/ascending.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/ascending.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/bisect.js":
/*!*********************************************!*\
!*** ./node_modules/d3-array/src/bisect.js ***!
\*********************************************/
/*! exports provided: bisectRight, bisectLeft, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bisectRight\", function() { return bisectRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bisectLeft\", function() { return bisectLeft; });\n/* harmony import */ var _ascending__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending */ \"./node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _bisector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bisector */ \"./node_modules/d3-array/src/bisector.js\");\n\n\n\nvar ascendingBisect = Object(_bisector__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_ascending__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\nvar bisectRight = ascendingBisect.right;\nvar bisectLeft = ascendingBisect.left;\n/* harmony default export */ __webpack_exports__[\"default\"] = (bisectRight);\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/bisect.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/bisector.js":
/*!***********************************************!*\
!*** ./node_modules/d3-array/src/bisector.js ***!
\***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ascending__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending */ \"./node_modules/d3-array/src/ascending.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n});\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return Object(_ascending__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(f(d), x);\n };\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/bisector.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/constant.js":
/*!***********************************************!*\
!*** ./node_modules/d3-array/src/constant.js ***!
\***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return function() {\n return x;\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/constant.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/cross.js":
/*!********************************************!*\
!*** ./node_modules/d3-array/src/cross.js ***!
\********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _pairs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pairs */ \"./node_modules/d3-array/src/pairs.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = _pairs__WEBPACK_IMPORTED_MODULE_0__[\"pair\"];\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/cross.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/descending.js":
/*!*************************************************!*\
!*** ./node_modules/d3-array/src/descending.js ***!
\*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/descending.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/deviation.js":
/*!************************************************!*\
!*** ./node_modules/d3-array/src/deviation.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _variance__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./variance */ \"./node_modules/d3-array/src/variance.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(array, f) {\n var v = Object(_variance__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(array, f);\n return v ? Math.sqrt(v) : v;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/deviation.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/extent.js":
/*!*********************************************!*\
!*** ./node_modules/d3-array/src/extent.js ***!
\*********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/extent.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/histogram.js":
/*!************************************************!*\
!*** ./node_modules/d3-array/src/histogram.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array */ \"./node_modules/d3-array/src/array.js\");\n/* harmony import */ var _bisect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bisect */ \"./node_modules/d3-array/src/bisect.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant */ \"./node_modules/d3-array/src/constant.js\");\n/* harmony import */ var _extent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./extent */ \"./node_modules/d3-array/src/extent.js\");\n/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./identity */ \"./node_modules/d3-array/src/identity.js\");\n/* harmony import */ var _range__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./range */ \"./node_modules/d3-array/src/range.js\");\n/* harmony import */ var _ticks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ticks */ \"./node_modules/d3-array/src/ticks.js\");\n/* harmony import */ var _threshold_sturges__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./threshold/sturges */ \"./node_modules/d3-array/src/threshold/sturges.js\");\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var value = _identity__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n domain = _extent__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n threshold = _threshold_sturges__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = Object(_ticks__WEBPACK_IMPORTED_MODULE_6__[\"tickStep\"])(x0, x1, tz);\n tz = Object(_range__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[Object(_bisect__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_2__[\"default\"])([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? Object(_constant__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_array__WEBPACK_IMPORTED_MODULE_0__[\"slice\"].call(_)) : Object(_constant__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_), histogram) : threshold;\n };\n\n return histogram;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/histogram.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/identity.js":
/*!***********************************************!*\
!*** ./node_modules/d3-array/src/identity.js ***!
\***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return x;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/identity.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/index.js":
/*!********************************************!*\
!*** ./node_modules/d3-array/src/index.js ***!
\********************************************/
/*! exports provided: bisect, bisectRight, bisectLeft, ascending, bisector, cross, descending, deviation, extent, histogram, thresholdFreedmanDiaconis, thresholdScott, thresholdSturges, max, mean, median, merge, min, pairs, permute, quantile, range, scan, shuffle, sum, ticks, tickIncrement, tickStep, transpose, variance, zip */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _bisect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bisect */ \"./node_modules/d3-array/src/bisect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bisect\", function() { return _bisect__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bisectRight\", function() { return _bisect__WEBPACK_IMPORTED_MODULE_0__[\"bisectRight\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bisectLeft\", function() { return _bisect__WEBPACK_IMPORTED_MODULE_0__[\"bisectLeft\"]; });\n\n/* harmony import */ var _ascending__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ascending */ \"./node_modules/d3-array/src/ascending.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ascending\", function() { return _ascending__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _bisector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bisector */ \"./node_modules/d3-array/src/bisector.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bisector\", function() { return _bisector__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _cross__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./cross */ \"./node_modules/d3-array/src/cross.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cross\", function() { return _cross__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _descending__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./descending */ \"./node_modules/d3-array/src/descending.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"descending\", function() { return _descending__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _deviation__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./deviation */ \"./node_modules/d3-array/src/deviation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"deviation\", function() { return _deviation__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _extent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./extent */ \"./node_modules/d3-array/src/extent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"extent\", function() { return _extent__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _histogram__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./histogram */ \"./node_modules/d3-array/src/histogram.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"histogram\", function() { return _histogram__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _threshold_freedmanDiaconis__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./threshold/freedmanDiaconis */ \"./node_modules/d3-array/src/threshold/freedmanDiaconis.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"thresholdFreedmanDiaconis\", function() { return _threshold_freedmanDiaconis__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _threshold_scott__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./threshold/scott */ \"./node_modules/d3-array/src/threshold/scott.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"thresholdScott\", function() { return _threshold_scott__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _threshold_sturges__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./threshold/sturges */ \"./node_modules/d3-array/src/threshold/sturges.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"thresholdSturges\", function() { return _threshold_sturges__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _max__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./max */ \"./node_modules/d3-array/src/max.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return _max__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _mean__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./mean */ \"./node_modules/d3-array/src/mean.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mean\", function() { return _mean__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _median__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./median */ \"./node_modules/d3-array/src/median.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"median\", function() { return _median__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _merge__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./merge */ \"./node_modules/d3-array/src/merge.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return _merge__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _min__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./min */ \"./node_modules/d3-array/src/min.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return _min__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _pairs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./pairs */ \"./node_modules/d3-array/src/pairs.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pairs\", function() { return _pairs__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _permute__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./permute */ \"./node_modules/d3-array/src/permute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"permute\", function() { return _permute__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _quantile__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./quantile */ \"./node_modules/d3-array/src/quantile.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quantile\", function() { return _quantile__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _range__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./range */ \"./node_modules/d3-array/src/range.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"range\", function() { return _range__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./scan */ \"./node_modules/d3-array/src/scan.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scan\", function() { return _scan__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _shuffle__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./shuffle */ \"./node_modules/d3-array/src/shuffle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"shuffle\", function() { return _shuffle__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony import */ var _sum__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./sum */ \"./node_modules/d3-array/src/sum.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sum\", function() { return _sum__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony import */ var _ticks__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./ticks */ \"./node_modules/d3-array/src/ticks.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ticks\", function() { return _ticks__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tickIncrement\", function() { return _ticks__WEBPACK_IMPORTED_MODULE_23__[\"tickIncrement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tickStep\", function() { return _ticks__WEBPACK_IMPORTED_MODULE_23__[\"tickStep\"]; });\n\n/* harmony import */ var _transpose__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./transpose */ \"./node_modules/d3-array/src/transpose.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"transpose\", function() { return _transpose__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _variance__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./variance */ \"./node_modules/d3-array/src/variance.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"variance\", function() { return _variance__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _zip__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./zip */ \"./node_modules/d3-array/src/zip.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"zip\", function() { return _zip__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/index.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/max.js":
/*!******************************************!*\
!*** ./node_modules/d3-array/src/max.js ***!
\******************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/max.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/mean.js":
/*!*******************************************!*\
!*** ./node_modules/d3-array/src/mean.js ***!
\*******************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./number */ \"./node_modules/d3-array/src/number.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/mean.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/median.js":
/*!*********************************************!*\
!*** ./node_modules/d3-array/src/median.js ***!
\*********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ascending__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending */ \"./node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./number */ \"./node_modules/d3-array/src/number.js\");\n/* harmony import */ var _quantile__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./quantile */ \"./node_modules/d3-array/src/quantile.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return Object(_quantile__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(numbers.sort(_ascending__WEBPACK_IMPORTED_MODULE_0__[\"default\"]), 0.5);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/median.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/merge.js":
/*!********************************************!*\
!*** ./node_modules/d3-array/src/merge.js ***!
\********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/merge.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/min.js":
/*!******************************************!*\
!*** ./node_modules/d3-array/src/min.js ***!
\******************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/min.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/number.js":
/*!*********************************************!*\
!*** ./node_modules/d3-array/src/number.js ***!
\*********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return x === null ? NaN : +x;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/number.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/pairs.js":
/*!********************************************!*\
!*** ./node_modules/d3-array/src/pairs.js ***!
\********************************************/
/*! exports provided: default, pair */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pair\", function() { return pair; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n});\n\nfunction pair(a, b) {\n return [a, b];\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/pairs.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/permute.js":
/*!**********************************************!*\
!*** ./node_modules/d3-array/src/permute.js ***!
\**********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/permute.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/quantile.js":
/*!***********************************************!*\
!*** ./node_modules/d3-array/src/quantile.js ***!
\***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./number */ \"./node_modules/d3-array/src/number.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values, p, valueof) {\n if (valueof == null) valueof = _number__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/quantile.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/range.js":
/*!********************************************!*\
!*** ./node_modules/d3-array/src/range.js ***!
\********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/range.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/scan.js":
/*!*******************************************!*\
!*** ./node_modules/d3-array/src/scan.js ***!
\*******************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ascending__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending */ \"./node_modules/d3-array/src/ascending.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = _ascending__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/scan.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/shuffle.js":
/*!**********************************************!*\
!*** ./node_modules/d3-array/src/shuffle.js ***!
\**********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/shuffle.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/sum.js":
/*!******************************************!*\
!*** ./node_modules/d3-array/src/sum.js ***!
\******************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/sum.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/threshold/freedmanDiaconis.js":
/*!*****************************************************************!*\
!*** ./node_modules/d3-array/src/threshold/freedmanDiaconis.js ***!
\*****************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../array */ \"./node_modules/d3-array/src/array.js\");\n/* harmony import */ var _ascending__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ascending */ \"./node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../number */ \"./node_modules/d3-array/src/number.js\");\n/* harmony import */ var _quantile__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../quantile */ \"./node_modules/d3-array/src/quantile.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values, min, max) {\n values = _array__WEBPACK_IMPORTED_MODULE_0__[\"map\"].call(values, _number__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).sort(_ascending__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n return Math.ceil((max - min) / (2 * (Object(_quantile__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(values, 0.75) - Object(_quantile__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/threshold/freedmanDiaconis.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/threshold/scott.js":
/*!******************************************************!*\
!*** ./node_modules/d3-array/src/threshold/scott.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _deviation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../deviation */ \"./node_modules/d3-array/src/deviation.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * Object(_deviation__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values) * Math.pow(values.length, -1 / 3)));\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/threshold/scott.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/threshold/sturges.js":
/*!********************************************************!*\
!*** ./node_modules/d3-array/src/threshold/sturges.js ***!
\********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/threshold/sturges.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/ticks.js":
/*!********************************************!*\
!*** ./node_modules/d3-array/src/ticks.js ***!
\********************************************/
/*! exports provided: default, tickIncrement, tickStep */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tickIncrement\", function() { return tickIncrement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tickStep\", function() { return tickStep; });\nvar e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n});\n\nfunction tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nfunction tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/ticks.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/transpose.js":
/*!************************************************!*\
!*** ./node_modules/d3-array/src/transpose.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _min__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./min */ \"./node_modules/d3-array/src/min.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = Object(_min__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n});\n\nfunction length(d) {\n return d.length;\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/transpose.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/variance.js":
/*!***********************************************!*\
!*** ./node_modules/d3-array/src/variance.js ***!
\***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./number */ \"./node_modules/d3-array/src/number.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/variance.js?");
/***/ }),
/***/ "./node_modules/d3-array/src/zip.js":
/*!******************************************!*\
!*** ./node_modules/d3-array/src/zip.js ***!
\******************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transpose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transpose */ \"./node_modules/d3-array/src/transpose.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return Object(_transpose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arguments);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-array/src/zip.js?");
/***/ }),
/***/ "./node_modules/d3-collection/src/entries.js":
/*!***************************************************!*\
!*** ./node_modules/d3-collection/src/entries.js ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-collection/src/entries.js?");
/***/ }),
/***/ "./node_modules/d3-collection/src/index.js":
/*!*************************************************!*\
!*** ./node_modules/d3-collection/src/index.js ***!
\*************************************************/
/*! exports provided: nest, set, map, keys, values, entries */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nest__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nest */ \"./node_modules/d3-collection/src/nest.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"nest\", function() { return _nest__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _set__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./set */ \"./node_modules/d3-collection/src/set.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return _set__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./map */ \"./node_modules/d3-collection/src/map.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return _map__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./keys */ \"./node_modules/d3-collection/src/keys.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return _keys__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _values__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./values */ \"./node_modules/d3-collection/src/values.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"values\", function() { return _values__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _entries__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./entries */ \"./node_modules/d3-collection/src/entries.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"entries\", function() { return _entries__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-collection/src/index.js?");
/***/ }),
/***/ "./node_modules/d3-collection/src/keys.js":
/*!************************************************!*\
!*** ./node_modules/d3-collection/src/keys.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-collection/src/keys.js?");
/***/ }),
/***/ "./node_modules/d3-collection/src/map.js":
/*!***********************************************!*\
!*** ./node_modules/d3-collection/src/map.js ***!
\***********************************************/
/*! exports provided: prefix, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prefix\", function() { return prefix; });\nvar prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (map);\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-collection/src/map.js?");
/***/ }),
/***/ "./node_modules/d3-collection/src/nest.js":
/*!************************************************!*\
!*** ./node_modules/d3-collection/src/nest.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./map */ \"./node_modules/d3-collection/src/map.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = Object(_map__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n});\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return Object(_map__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-collection/src/nest.js?");
/***/ }),
/***/ "./node_modules/d3-collection/src/set.js":
/*!***********************************************!*\
!*** ./node_modules/d3-collection/src/set.js ***!
\***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./map */ \"./node_modules/d3-collection/src/map.js\");\n\n\nfunction Set() {}\n\nvar proto = _map__WEBPACK_IMPORTED_MODULE_0__[\"default\"].prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[_map__WEBPACK_IMPORTED_MODULE_0__[\"prefix\"] + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (set);\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-collection/src/set.js?");
/***/ }),
/***/ "./node_modules/d3-collection/src/values.js":
/*!**************************************************!*\
!*** ./node_modules/d3-collection/src/values.js ***!
\**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-collection/src/values.js?");
/***/ }),
/***/ "./node_modules/d3-color/src/color.js":
/*!********************************************!*\
!*** ./node_modules/d3-color/src/color.js ***!
\********************************************/
/*! exports provided: Color, darker, brighter, default, rgbConvert, rgb, Rgb, hslConvert, hsl */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Color\", function() { return Color; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"darker\", function() { return darker; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"brighter\", function() { return brighter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return color; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbConvert\", function() { return rgbConvert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgb\", function() { return rgb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Rgb\", function() { return Rgb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hslConvert\", function() { return hslConvert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hsl\", function() { return hsl; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/d3-color/src/define.js\");\n\n\nfunction Color() {}\n\nvar darker = 0.7;\nvar brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nfunction color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? new Rgb(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? new Rgb((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nfunction rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nfunction rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nfunction Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Rgb, rgb, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nfunction hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nfunction hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Hsl, hsl, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-color/src/color.js?");
/***/ }),
/***/ "./node_modules/d3-color/src/cubehelix.js":
/*!************************************************!*\
!*** ./node_modules/d3-color/src/cubehelix.js ***!
\************************************************/
/*! exports provided: default, Cubehelix */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return cubehelix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Cubehelix\", function() { return Cubehelix; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/d3-color/src/define.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-color/src/color.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-color/src/math.js\");\n\n\n\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"])) o = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"rgbConvert\"])(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"rad2deg\"] - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nfunction cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Cubehelix, cubehelix, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n brighter: function(k) {\n k = k == null ? _color_js__WEBPACK_IMPORTED_MODULE_1__[\"brighter\"] : Math.pow(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"brighter\"], k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? _color_js__WEBPACK_IMPORTED_MODULE_1__[\"darker\"] : Math.pow(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"darker\"], k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"deg2rad\"],\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"](\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-color/src/cubehelix.js?");
/***/ }),
/***/ "./node_modules/d3-color/src/define.js":
/*!*********************************************!*\
!*** ./node_modules/d3-color/src/define.js ***!
\*********************************************/
/*! exports provided: default, extend */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n});\n\nfunction extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-color/src/define.js?");
/***/ }),
/***/ "./node_modules/d3-color/src/index.js":
/*!********************************************!*\
!*** ./node_modules/d3-color/src/index.js ***!
\********************************************/
/*! exports provided: color, rgb, hsl, lab, hcl, lch, gray, cubehelix */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-color/src/color.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"color\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rgb\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hsl\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"]; });\n\n/* harmony import */ var _lab_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lab.js */ \"./node_modules/d3-color/src/lab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lab\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hcl\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"hcl\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lch\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"lch\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"gray\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"gray\"]; });\n\n/* harmony import */ var _cubehelix_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cubehelix.js */ \"./node_modules/d3-color/src/cubehelix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cubehelix\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-color/src/index.js?");
/***/ }),
/***/ "./node_modules/d3-color/src/lab.js":
/*!******************************************!*\
!*** ./node_modules/d3-color/src/lab.js ***!
\******************************************/
/*! exports provided: gray, default, Lab, lch, hcl, Hcl */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gray\", function() { return gray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return lab; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Lab\", function() { return Lab; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lch\", function() { return lch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hcl\", function() { return hcl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Hcl\", function() { return Hcl; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/d3-color/src/define.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-color/src/color.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-color/src/math.js\");\n\n\n\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"])) o = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"rgbConvert\"])(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nfunction gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nfunction lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nfunction Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Lab, lab, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"](\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"rad2deg\"];\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nfunction lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"deg2rad\"];\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Hcl, hcl, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-color/src/lab.js?");
/***/ }),
/***/ "./node_modules/d3-color/src/math.js":
/*!*******************************************!*\
!*** ./node_modules/d3-color/src/math.js ***!
\*******************************************/
/*! exports provided: deg2rad, rad2deg */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"deg2rad\", function() { return deg2rad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rad2deg\", function() { return rad2deg; });\nvar deg2rad = Math.PI / 180;\nvar rad2deg = 180 / Math.PI;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-color/src/math.js?");
/***/ }),
/***/ "./node_modules/d3-dispatch/src/dispatch.js":
/*!**************************************************!*\
!*** ./node_modules/d3-dispatch/src/dispatch.js ***!
\**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (dispatch);\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-dispatch/src/dispatch.js?");
/***/ }),
/***/ "./node_modules/d3-dispatch/src/index.js":
/*!***********************************************!*\
!*** ./node_modules/d3-dispatch/src/index.js ***!
\***********************************************/
/*! exports provided: dispatch */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dispatch_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dispatch.js */ \"./node_modules/d3-dispatch/src/dispatch.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"dispatch\", function() { return _dispatch_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-dispatch/src/index.js?");
/***/ }),
/***/ "./node_modules/d3-format/src/defaultLocale.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-format/src/defaultLocale.js ***!
\*****************************************************/
/*! exports provided: format, formatPrefix, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return format; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatPrefix\", function() { return formatPrefix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return defaultLocale; });\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/d3-format/src/locale.js\");\n\n\nvar locale;\nvar format;\nvar formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nfunction defaultLocale(definition) {\n locale = Object(_locale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-format/src/defaultLocale.js?");
/***/ }),
/***/ "./node_modules/d3-format/src/exponent.js":
/*!************************************************!*\
!*** ./node_modules/d3-format/src/exponent.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/d3-format/src/formatDecimal.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return x = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Math.abs(x)), x ? x[1] : NaN;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-format/src/exponent.js?");
/***/ }),
/***/ "./node_modules/d3-format/src/formatDecimal.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-format/src/formatDecimal.js ***!
\*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-format/src/formatDecimal.js?");
/***/ }),
/***/ "./node_modules/d3-format/src/formatGroup.js":
/*!***************************************************!*\
!*** ./node_modules/d3-format/src/formatGroup.js ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-format/src/formatGroup.js?");
/***/ }),
/***/ "./node_modules/d3-format/src/formatNumerals.js":
/*!******************************************************!*\
!*** ./node_modules/d3-format/src/formatNumerals.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-format/src/formatNumerals.js?");
/***/ }),
/***/ "./node_modules/d3-format/src/formatPrefixAuto.js":
/*!********************************************************!*\
!*** ./node_modules/d3-format/src/formatPrefixAuto.js ***!
\********************************************************/
/*! exports provided: prefixExponent, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prefixExponent\", function() { return prefixExponent; });\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/d3-format/src/formatDecimal.js\");\n\n\nvar prefixExponent;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, p) {\n var d = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-format/src/formatPrefixAuto.js?");
/***/ }),
/***/ "./node_modules/d3-format/src/formatRounded.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-format/src/formatRounded.js ***!
\*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/d3-format/src/formatDecimal.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, p) {\n var d = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-format/src/formatRounded.js?");
/***/ }),
/***/ "./node_modules/d3-format/src/formatSpecifier.js":
/*!*******************************************************!*\
!*** ./node_modules/d3-format/src/formatSpecifier.js ***!
\*******************************************************/
/*! exports provided: default, FormatSpecifier */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return formatSpecifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FormatSpecifier\", function() { return FormatSpecifier; });\n// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nfunction formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-format/src/formatSpecifier.js?");
/***/ }),
/***/ "./node_modules/d3-format/src/formatTrim.js":
/*!**************************************************!*\
!*** ./node_modules/d3-format/src/formatTrim.js ***!
\**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-format/src/formatTrim.js?");
/***/ }),
/***/ "./node_modules/d3-format/src/formatTypes.js":
/*!***************************************************!*\
!*** ./node_modules/d3-format/src/formatTypes.js ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatPrefixAuto.js */ \"./node_modules/d3-format/src/formatPrefixAuto.js\");\n/* harmony import */ var _formatRounded_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatRounded.js */ \"./node_modules/d3-format/src/formatRounded.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return Object(_formatRounded_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(x * 100, p); },\n \"r\": _formatRounded_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n \"s\": _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-format/src/formatTypes.js?");
/***/ }),
/***/ "./node_modules/d3-format/src/identity.js":
/*!************************************************!*\
!*** ./node_modules/d3-format/src/identity.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return x;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-format/src/identity.js?");
/***/ }),
/***/ "./node_modules/d3-format/src/index.js":
/*!*********************************************!*\
!*** ./node_modules/d3-format/src/index.js ***!
\*********************************************/
/*! exports provided: formatDefaultLocale, format, formatPrefix, formatLocale, formatSpecifier, FormatSpecifier, precisionFixed, precisionPrefix, precisionRound */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/d3-format/src/defaultLocale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatDefaultLocale\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"format\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatPrefix\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"formatPrefix\"]; });\n\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/d3-format/src/locale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatLocale\", function() { return _locale_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatSpecifier.js */ \"./node_modules/d3-format/src/formatSpecifier.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatSpecifier\", function() { return _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FormatSpecifier\", function() { return _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__[\"FormatSpecifier\"]; });\n\n/* harmony import */ var _precisionFixed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./precisionFixed.js */ \"./node_modules/d3-format/src/precisionFixed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionFixed\", function() { return _precisionFixed_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _precisionPrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./precisionPrefix.js */ \"./node_modules/d3-format/src/precisionPrefix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionPrefix\", function() { return _precisionPrefix_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _precisionRound_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./precisionRound.js */ \"./node_modules/d3-format/src/precisionRound.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionRound\", function() { return _precisionRound_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-format/src/index.js?");
/***/ }),
/***/ "./node_modules/d3-format/src/locale.js":
/*!**********************************************!*\
!*** ./node_modules/d3-format/src/locale.js ***!
\**********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/d3-format/src/exponent.js\");\n/* harmony import */ var _formatGroup_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatGroup.js */ \"./node_modules/d3-format/src/formatGroup.js\");\n/* harmony import */ var _formatNumerals_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatNumerals.js */ \"./node_modules/d3-format/src/formatNumerals.js\");\n/* harmony import */ var _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formatSpecifier.js */ \"./node_modules/d3-format/src/formatSpecifier.js\");\n/* harmony import */ var _formatTrim_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./formatTrim.js */ \"./node_modules/d3-format/src/formatTrim.js\");\n/* harmony import */ var _formatTypes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./formatTypes.js */ \"./node_modules/d3-format/src/formatTypes.js\");\n/* harmony import */ var _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./formatPrefixAuto.js */ \"./node_modules/d3-format/src/formatPrefixAuto.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./identity.js */ \"./node_modules/d3-format/src/identity.js\");\n\n\n\n\n\n\n\n\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? _identity_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"] : Object(_formatGroup_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? _identity_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"] : Object(_formatNumerals_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = Object(_formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!_formatTypes_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"][type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = _formatTypes_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"][type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = Object(_formatTrim_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n\n valueSuffix = (type === \"s\" ? prefixes[8 + _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_6__[\"prefixExponent\"] / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = Object(_formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-format/src/locale.js?");
/***/ }),
/***/ "./node_modules/d3-format/src/precisionFixed.js":
/*!******************************************************!*\
!*** ./node_modules/d3-format/src/precisionFixed.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step) {\n return Math.max(0, -Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Math.abs(step)));\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-format/src/precisionFixed.js?");
/***/ }),
/***/ "./node_modules/d3-format/src/precisionPrefix.js":
/*!*******************************************************!*\
!*** ./node_modules/d3-format/src/precisionPrefix.js ***!
\*******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) / 3))) * 3 - Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Math.abs(step)));\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-format/src/precisionPrefix.js?");
/***/ }),
/***/ "./node_modules/d3-format/src/precisionRound.js":
/*!******************************************************!*\
!*** ./node_modules/d3-format/src/precisionRound.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(max) - Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(step)) + 1;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-format/src/precisionRound.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/array.js":
/*!**************************************************!*\
!*** ./node_modules/d3-interpolate/src/array.js ***!
\**************************************************/
/*! exports provided: default, genericArray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genericArray\", function() { return genericArray; });\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/d3-interpolate/src/value.js\");\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/d3-interpolate/src/numberArray.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n return (Object(_numberArray_js__WEBPACK_IMPORTED_MODULE_1__[\"isNumberArray\"])(b) ? _numberArray_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : genericArray)(a, b);\n});\n\nfunction genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = Object(_value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/array.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/basis.js":
/*!**************************************************!*\
!*** ./node_modules/d3-interpolate/src/basis.js ***!
\**************************************************/
/*! exports provided: basis, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"basis\", function() { return basis; });\nfunction basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/basis.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/basisClosed.js":
/*!********************************************************!*\
!*** ./node_modules/d3-interpolate/src/basisClosed.js ***!
\********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/d3-interpolate/src/basis.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return Object(_basis_js__WEBPACK_IMPORTED_MODULE_0__[\"basis\"])((t - i / n) * n, v0, v1, v2, v3);\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/basisClosed.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/color.js":
/*!**************************************************!*\
!*** ./node_modules/d3-interpolate/src/color.js ***!
\**************************************************/
/*! exports provided: hue, gamma, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hue\", function() { return hue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gamma\", function() { return gamma; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return nogamma; });\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/d3-interpolate/src/constant.js\");\n\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nfunction hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n}\n\nfunction gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n };\n}\n\nfunction nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/color.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/constant.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-interpolate/src/constant.js ***!
\*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return function() {\n return x;\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/constant.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/cubehelix.js":
/*!******************************************************!*\
!*** ./node_modules/d3-interpolate/src/cubehelix.js ***!
\******************************************************/
/*! exports provided: default, cubehelixLong */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubehelixLong\", function() { return cubehelixLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"cubehelix\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"cubehelix\"])(end)).h),\n s = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.s, end.s),\n l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (cubehelix(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar cubehelixLong = cubehelix(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/cubehelix.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/date.js":
/*!*************************************************!*\
!*** ./node_modules/d3-interpolate/src/date.js ***!
\*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/date.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/discrete.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-interpolate/src/discrete.js ***!
\*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/discrete.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/hcl.js":
/*!************************************************!*\
!*** ./node_modules/d3-interpolate/src/hcl.js ***!
\************************************************/
/*! exports provided: default, hclLong */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hclLong\", function() { return hclLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hcl\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hcl\"])(end)).h),\n c = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.c, end.c),\n l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hcl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar hclLong = hcl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/hcl.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/hsl.js":
/*!************************************************!*\
!*** ./node_modules/d3-interpolate/src/hsl.js ***!
\************************************************/
/*! exports provided: default, hslLong */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hslLong\", function() { return hslLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"])(end)).h),\n s = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.s, end.s),\n l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hsl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar hslLong = hsl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/hsl.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/hue.js":
/*!************************************************!*\
!*** ./node_modules/d3-interpolate/src/hue.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-interpolate/src/color.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var i = Object(_color_js__WEBPACK_IMPORTED_MODULE_0__[\"hue\"])(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/hue.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/index.js":
/*!**************************************************!*\
!*** ./node_modules/d3-interpolate/src/index.js ***!
\**************************************************/
/*! exports provided: interpolate, interpolateArray, interpolateBasis, interpolateBasisClosed, interpolateDate, interpolateDiscrete, interpolateHue, interpolateNumber, interpolateNumberArray, interpolateObject, interpolateRound, interpolateString, interpolateTransformCss, interpolateTransformSvg, interpolateZoom, interpolateRgb, interpolateRgbBasis, interpolateRgbBasisClosed, interpolateHsl, interpolateHslLong, interpolateLab, interpolateHcl, interpolateHclLong, interpolateCubehelix, interpolateCubehelixLong, piecewise, quantize */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/d3-interpolate/src/value.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolate\", function() { return _value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array.js */ \"./node_modules/d3-interpolate/src/array.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateArray\", function() { return _array_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/d3-interpolate/src/basis.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateBasis\", function() { return _basis_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./basisClosed.js */ \"./node_modules/d3-interpolate/src/basisClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateBasisClosed\", function() { return _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./date.js */ \"./node_modules/d3-interpolate/src/date.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateDate\", function() { return _date_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _discrete_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./discrete.js */ \"./node_modules/d3-interpolate/src/discrete.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateDiscrete\", function() { return _discrete_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _hue_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hue.js */ \"./node_modules/d3-interpolate/src/hue.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHue\", function() { return _hue_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./number.js */ \"./node_modules/d3-interpolate/src/number.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateNumber\", function() { return _number_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/d3-interpolate/src/numberArray.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateNumberArray\", function() { return _numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./object.js */ \"./node_modules/d3-interpolate/src/object.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateObject\", function() { return _object_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _round_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./round.js */ \"./node_modules/d3-interpolate/src/round.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRound\", function() { return _round_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./string.js */ \"./node_modules/d3-interpolate/src/string.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateString\", function() { return _string_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _transform_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./transform/index.js */ \"./node_modules/d3-interpolate/src/transform/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformCss\", function() { return _transform_index_js__WEBPACK_IMPORTED_MODULE_12__[\"interpolateTransformCss\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformSvg\", function() { return _transform_index_js__WEBPACK_IMPORTED_MODULE_12__[\"interpolateTransformSvg\"]; });\n\n/* harmony import */ var _zoom_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./zoom.js */ \"./node_modules/d3-interpolate/src/zoom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateZoom\", function() { return _zoom_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rgb.js */ \"./node_modules/d3-interpolate/src/rgb.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgb\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgbBasis\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"rgbBasis\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgbBasisClosed\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"rgbBasisClosed\"]; });\n\n/* harmony import */ var _hsl_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./hsl.js */ \"./node_modules/d3-interpolate/src/hsl.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHsl\", function() { return _hsl_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHslLong\", function() { return _hsl_js__WEBPACK_IMPORTED_MODULE_15__[\"hslLong\"]; });\n\n/* harmony import */ var _lab_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./lab.js */ \"./node_modules/d3-interpolate/src/lab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateLab\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _hcl_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./hcl.js */ \"./node_modules/d3-interpolate/src/hcl.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHcl\", function() { return _hcl_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHclLong\", function() { return _hcl_js__WEBPACK_IMPORTED_MODULE_17__[\"hclLong\"]; });\n\n/* harmony import */ var _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./cubehelix.js */ \"./node_modules/d3-interpolate/src/cubehelix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateCubehelix\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateCubehelixLong\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__[\"cubehelixLong\"]; });\n\n/* harmony import */ var _piecewise_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./piecewise.js */ \"./node_modules/d3-interpolate/src/piecewise.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"piecewise\", function() { return _piecewise_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _quantize_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./quantize.js */ \"./node_modules/d3-interpolate/src/quantize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quantize\", function() { return _quantize_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/index.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/lab.js":
/*!************************************************!*\
!*** ./node_modules/d3-interpolate/src/lab.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return lab; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction lab(start, end) {\n var l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"lab\"])(start)).l, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"lab\"])(end)).l),\n a = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.a, end.a),\n b = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.b, end.b),\n opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/lab.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/number.js":
/*!***************************************************!*\
!*** ./node_modules/d3-interpolate/src/number.js ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/number.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/numberArray.js":
/*!********************************************************!*\
!*** ./node_modules/d3-interpolate/src/numberArray.js ***!
\********************************************************/
/*! exports provided: default, isNumberArray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumberArray\", function() { return isNumberArray; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n});\n\nfunction isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/numberArray.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/object.js":
/*!***************************************************!*\
!*** ./node_modules/d3-interpolate/src/object.js ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/d3-interpolate/src/value.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = Object(_value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/object.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/piecewise.js":
/*!******************************************************!*\
!*** ./node_modules/d3-interpolate/src/piecewise.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return piecewise; });\nfunction piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/piecewise.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/quantize.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-interpolate/src/quantize.js ***!
\*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/quantize.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/rgb.js":
/*!************************************************!*\
!*** ./node_modules/d3-interpolate/src/rgb.js ***!
\************************************************/
/*! exports provided: default, rgbBasis, rgbBasisClosed */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbBasis\", function() { return rgbBasis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbBasisClosed\", function() { return rgbBasisClosed; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/d3-interpolate/src/basis.js\");\n/* harmony import */ var _basisClosed_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./basisClosed.js */ \"./node_modules/d3-interpolate/src/basisClosed.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-interpolate/src/color.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function rgbGamma(y) {\n var color = Object(_color_js__WEBPACK_IMPORTED_MODULE_3__[\"gamma\"])(y);\n\n function rgb(start, end) {\n var r = color((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(start)).r, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1));\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nvar rgbBasis = rgbSpline(_basis_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nvar rgbBasisClosed = rgbSpline(_basisClosed_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/rgb.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/round.js":
/*!**************************************************!*\
!*** ./node_modules/d3-interpolate/src/round.js ***!
\**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/round.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/string.js":
/*!***************************************************!*\
!*** ./node_modules/d3-interpolate/src/string.js ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./number.js */ \"./node_modules/d3-interpolate/src/number.js\");\n\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/string.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/transform/decompose.js":
/*!****************************************************************!*\
!*** ./node_modules/d3-interpolate/src/transform/decompose.js ***!
\****************************************************************/
/*! exports provided: identity, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\nvar degrees = 180 / Math.PI;\n\nvar identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/transform/decompose.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/transform/index.js":
/*!************************************************************!*\
!*** ./node_modules/d3-interpolate/src/transform/index.js ***!
\************************************************************/
/*! exports provided: interpolateTransformCss, interpolateTransformSvg */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformCss\", function() { return interpolateTransformCss; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformSvg\", function() { return interpolateTransformSvg; });\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../number.js */ \"./node_modules/d3-interpolate/src/number.js\");\n/* harmony import */ var _parse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse.js */ \"./node_modules/d3-interpolate/src/transform/parse.js\");\n\n\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(xa, xb)}, {i: i - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(xa, xb)}, {i: i - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nvar interpolateTransformCss = interpolateTransform(_parse_js__WEBPACK_IMPORTED_MODULE_1__[\"parseCss\"], \"px, \", \"px)\", \"deg)\");\nvar interpolateTransformSvg = interpolateTransform(_parse_js__WEBPACK_IMPORTED_MODULE_1__[\"parseSvg\"], \", \", \")\", \")\");\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/transform/index.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/transform/parse.js":
/*!************************************************************!*\
!*** ./node_modules/d3-interpolate/src/transform/parse.js ***!
\************************************************************/
/*! exports provided: parseCss, parseSvg */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseCss\", function() { return parseCss; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseSvg\", function() { return parseSvg; });\n/* harmony import */ var _decompose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./decompose.js */ \"./node_modules/d3-interpolate/src/transform/decompose.js\");\n\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nfunction parseCss(value) {\n if (value === \"none\") return _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return Object(_decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nfunction parseSvg(value) {\n if (value == null) return _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n value = value.matrix;\n return Object(_decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/transform/parse.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/value.js":
/*!**************************************************!*\
!*** ./node_modules/d3-interpolate/src/value.js ***!
\**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rgb.js */ \"./node_modules/d3-interpolate/src/rgb.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./array.js */ \"./node_modules/d3-interpolate/src/array.js\");\n/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./date.js */ \"./node_modules/d3-interpolate/src/date.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./number.js */ \"./node_modules/d3-interpolate/src/number.js\");\n/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./object.js */ \"./node_modules/d3-interpolate/src/object.js\");\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./string.js */ \"./node_modules/d3-interpolate/src/string.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/d3-interpolate/src/constant.js\");\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/d3-interpolate/src/numberArray.js\");\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? Object(_constant_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(b)\n : (t === \"number\" ? _number_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n : t === \"string\" ? ((c = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"color\"])(b)) ? (b = c, _rgb_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) : _string_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])\n : b instanceof d3_color__WEBPACK_IMPORTED_MODULE_0__[\"color\"] ? _rgb_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n : b instanceof Date ? _date_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n : Object(_numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"isNumberArray\"])(b) ? _numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n : Array.isArray(b) ? _array_js__WEBPACK_IMPORTED_MODULE_2__[\"genericArray\"]\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? _object_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n : _number_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(a, b);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/value.js?");
/***/ }),
/***/ "./node_modules/d3-interpolate/src/zoom.js":
/*!*************************************************!*\
!*** ./node_modules/d3-interpolate/src/zoom.js ***!
\*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-interpolate/src/zoom.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/array.js":
/*!********************************************!*\
!*** ./node_modules/d3-scale/src/array.js ***!
\********************************************/
/*! exports provided: map, slice */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return map; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"slice\", function() { return slice; });\nvar array = Array.prototype;\n\nvar map = array.map;\nvar slice = array.slice;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/array.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/band.js":
/*!*******************************************!*\
!*** ./node_modules/d3-scale/src/band.js ***!
\*******************************************/
/*! exports provided: default, point */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return band; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"point\", function() { return point; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init */ \"./node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _ordinal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ordinal */ \"./node_modules/d3-scale/src/ordinal.js\");\n\n\n\n\nfunction band() {\n var scale = Object(_ordinal__WEBPACK_IMPORTED_MODULE_2__[\"default\"])().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return _init__WEBPACK_IMPORTED_MODULE_1__[\"initRange\"].apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nfunction point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/band.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/constant.js":
/*!***********************************************!*\
!*** ./node_modules/d3-scale/src/constant.js ***!
\***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return function() {\n return x;\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/constant.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/continuous.js":
/*!*************************************************!*\
!*** ./node_modules/d3-scale/src/continuous.js ***!
\*************************************************/
/*! exports provided: identity, copy, transformer, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformer\", function() { return transformer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return continuous; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./array */ \"./node_modules/d3-scale/src/array.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constant */ \"./node_modules/d3-scale/src/constant.js\");\n/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./number */ \"./node_modules/d3-scale/src/number.js\");\n\n\n\n\n\n\nvar unit = [0, 1];\n\nfunction identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : Object(_constant__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nfunction copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nfunction transformer() {\n var domain = unit,\n range = unit,\n interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"interpolate\"],\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"interpolateNumber\"])))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = _array__WEBPACK_IMPORTED_MODULE_2__[\"map\"].call(_, _number__WEBPACK_IMPORTED_MODULE_4__[\"default\"]), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = _array__WEBPACK_IMPORTED_MODULE_2__[\"slice\"].call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = _array__WEBPACK_IMPORTED_MODULE_2__[\"slice\"].call(_), interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"interpolateRound\"], rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nfunction continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/continuous.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/diverging.js":
/*!************************************************!*\
!*** ./node_modules/d3-scale/src/diverging.js ***!
\************************************************/
/*! exports provided: default, divergingLog, divergingSymlog, divergingPow, divergingSqrt */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return diverging; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divergingLog\", function() { return divergingLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divergingSymlog\", function() { return divergingSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divergingPow\", function() { return divergingPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divergingSqrt\", function() { return divergingSqrt; });\n/* harmony import */ var _continuous__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./continuous */ \"./node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init */ \"./node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear */ \"./node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./log */ \"./node_modules/d3-scale/src/log.js\");\n/* harmony import */ var _sequential__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sequential */ \"./node_modules/d3-scale/src/sequential.js\");\n/* harmony import */ var _symlog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./symlog */ \"./node_modules/d3-scale/src/symlog.js\");\n/* harmony import */ var _pow__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pow */ \"./node_modules/d3-scale/src/pow.js\");\n\n\n\n\n\n\n\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = _continuous__WEBPACK_IMPORTED_MODULE_0__[\"identity\"],\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nfunction diverging() {\n var scale = Object(_linear__WEBPACK_IMPORTED_MODULE_2__[\"linearish\"])(transformer()(_continuous__WEBPACK_IMPORTED_MODULE_0__[\"identity\"]));\n\n scale.copy = function() {\n return Object(_sequential__WEBPACK_IMPORTED_MODULE_4__[\"copy\"])(scale, diverging());\n };\n\n return _init__WEBPACK_IMPORTED_MODULE_1__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction divergingLog() {\n var scale = Object(_log__WEBPACK_IMPORTED_MODULE_3__[\"loggish\"])(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return Object(_sequential__WEBPACK_IMPORTED_MODULE_4__[\"copy\"])(scale, divergingLog()).base(scale.base());\n };\n\n return _init__WEBPACK_IMPORTED_MODULE_1__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction divergingSymlog() {\n var scale = Object(_symlog__WEBPACK_IMPORTED_MODULE_5__[\"symlogish\"])(transformer());\n\n scale.copy = function() {\n return Object(_sequential__WEBPACK_IMPORTED_MODULE_4__[\"copy\"])(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return _init__WEBPACK_IMPORTED_MODULE_1__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction divergingPow() {\n var scale = Object(_pow__WEBPACK_IMPORTED_MODULE_6__[\"powish\"])(transformer());\n\n scale.copy = function() {\n return Object(_sequential__WEBPACK_IMPORTED_MODULE_4__[\"copy\"])(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return _init__WEBPACK_IMPORTED_MODULE_1__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/diverging.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/identity.js":
/*!***********************************************!*\
!*** ./node_modules/d3-scale/src/identity.js ***!
\***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return identity; });\n/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array */ \"./node_modules/d3-scale/src/array.js\");\n/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./linear */ \"./node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./number */ \"./node_modules/d3-scale/src/number.js\");\n\n\n\n\nfunction identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = _array__WEBPACK_IMPORTED_MODULE_0__[\"map\"].call(_, _number__WEBPACK_IMPORTED_MODULE_2__[\"default\"]), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? _array__WEBPACK_IMPORTED_MODULE_0__[\"map\"].call(domain, _number__WEBPACK_IMPORTED_MODULE_2__[\"default\"]) : [0, 1];\n\n return Object(_linear__WEBPACK_IMPORTED_MODULE_1__[\"linearish\"])(scale);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/identity.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/index.js":
/*!********************************************!*\
!*** ./node_modules/d3-scale/src/index.js ***!
\********************************************/
/*! exports provided: scaleBand, scalePoint, scaleIdentity, scaleLinear, scaleLog, scaleSymlog, scaleOrdinal, scaleImplicit, scalePow, scaleSqrt, scaleQuantile, scaleQuantize, scaleThreshold, scaleTime, scaleUtc, scaleSequential, scaleSequentialLog, scaleSequentialPow, scaleSequentialSqrt, scaleSequentialSymlog, scaleSequentialQuantile, scaleDiverging, scaleDivergingLog, scaleDivergingPow, scaleDivergingSqrt, scaleDivergingSymlog, tickFormat */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _band__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./band */ \"./node_modules/d3-scale/src/band.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleBand\", function() { return _band__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scalePoint\", function() { return _band__WEBPACK_IMPORTED_MODULE_0__[\"point\"]; });\n\n/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./identity */ \"./node_modules/d3-scale/src/identity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleIdentity\", function() { return _identity__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear */ \"./node_modules/d3-scale/src/linear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleLinear\", function() { return _linear__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./log */ \"./node_modules/d3-scale/src/log.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleLog\", function() { return _log__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _symlog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./symlog */ \"./node_modules/d3-scale/src/symlog.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSymlog\", function() { return _symlog__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _ordinal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ordinal */ \"./node_modules/d3-scale/src/ordinal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleOrdinal\", function() { return _ordinal__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleImplicit\", function() { return _ordinal__WEBPACK_IMPORTED_MODULE_5__[\"implicit\"]; });\n\n/* harmony import */ var _pow__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pow */ \"./node_modules/d3-scale/src/pow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scalePow\", function() { return _pow__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSqrt\", function() { return _pow__WEBPACK_IMPORTED_MODULE_6__[\"sqrt\"]; });\n\n/* harmony import */ var _quantile__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./quantile */ \"./node_modules/d3-scale/src/quantile.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleQuantile\", function() { return _quantile__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _quantize__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./quantize */ \"./node_modules/d3-scale/src/quantize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleQuantize\", function() { return _quantize__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _threshold__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./threshold */ \"./node_modules/d3-scale/src/threshold.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleThreshold\", function() { return _threshold__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _time__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./time */ \"./node_modules/d3-scale/src/time.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleTime\", function() { return _time__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _utcTime__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utcTime */ \"./node_modules/d3-scale/src/utcTime.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleUtc\", function() { return _utcTime__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _sequential__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./sequential */ \"./node_modules/d3-scale/src/sequential.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequential\", function() { return _sequential__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialLog\", function() { return _sequential__WEBPACK_IMPORTED_MODULE_12__[\"sequentialLog\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialPow\", function() { return _sequential__WEBPACK_IMPORTED_MODULE_12__[\"sequentialPow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialSqrt\", function() { return _sequential__WEBPACK_IMPORTED_MODULE_12__[\"sequentialSqrt\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialSymlog\", function() { return _sequential__WEBPACK_IMPORTED_MODULE_12__[\"sequentialSymlog\"]; });\n\n/* harmony import */ var _sequentialQuantile__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./sequentialQuantile */ \"./node_modules/d3-scale/src/sequentialQuantile.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleSequentialQuantile\", function() { return _sequentialQuantile__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _diverging__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./diverging */ \"./node_modules/d3-scale/src/diverging.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDiverging\", function() { return _diverging__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDivergingLog\", function() { return _diverging__WEBPACK_IMPORTED_MODULE_14__[\"divergingLog\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDivergingPow\", function() { return _diverging__WEBPACK_IMPORTED_MODULE_14__[\"divergingPow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDivergingSqrt\", function() { return _diverging__WEBPACK_IMPORTED_MODULE_14__[\"divergingSqrt\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleDivergingSymlog\", function() { return _diverging__WEBPACK_IMPORTED_MODULE_14__[\"divergingSymlog\"]; });\n\n/* harmony import */ var _tickFormat__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./tickFormat */ \"./node_modules/d3-scale/src/tickFormat.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tickFormat\", function() { return _tickFormat__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/index.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/init.js":
/*!*******************************************!*\
!*** ./node_modules/d3-scale/src/init.js ***!
\*******************************************/
/*! exports provided: initRange, initInterpolator */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initRange\", function() { return initRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initInterpolator\", function() { return initInterpolator; });\nfunction initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nfunction initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/init.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/linear.js":
/*!*********************************************!*\
!*** ./node_modules/d3-scale/src/linear.js ***!
\*********************************************/
/*! exports provided: linearish, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linearish\", function() { return linearish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return linear; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _continuous__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous */ \"./node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init */ \"./node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _tickFormat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tickFormat */ \"./node_modules/d3-scale/src/tickFormat.js\");\n\n\n\n\n\nfunction linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ticks\"])(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return Object(_tickFormat__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickIncrement\"])(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickIncrement\"])(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickIncrement\"])(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nfunction linear() {\n var scale = Object(_continuous__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_continuous__WEBPACK_IMPORTED_MODULE_1__[\"identity\"], _continuous__WEBPACK_IMPORTED_MODULE_1__[\"identity\"]);\n\n scale.copy = function() {\n return Object(_continuous__WEBPACK_IMPORTED_MODULE_1__[\"copy\"])(scale, linear());\n };\n\n _init__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(scale, arguments);\n\n return linearish(scale);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/linear.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/log.js":
/*!******************************************!*\
!*** ./node_modules/d3-scale/src/log.js ***!
\******************************************/
/*! exports provided: loggish, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loggish\", function() { return loggish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return log; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-format */ \"./node_modules/d3-format/src/index.js\");\n/* harmony import */ var _nice__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./nice */ \"./node_modules/d3-scale/src/nice.js\");\n/* harmony import */ var _continuous__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./continuous */ \"./node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./init */ \"./node_modules/d3-scale/src/init.js\");\n\n\n\n\n\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nfunction loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ticks\"])(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"format\"])(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(Object(_nice__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nfunction log() {\n var scale = loggish(Object(_continuous__WEBPACK_IMPORTED_MODULE_3__[\"transformer\"])()).domain([1, 10]);\n\n scale.copy = function() {\n return Object(_continuous__WEBPACK_IMPORTED_MODULE_3__[\"copy\"])(scale, log()).base(scale.base());\n };\n\n _init__WEBPACK_IMPORTED_MODULE_4__[\"initRange\"].apply(scale, arguments);\n\n return scale;\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/log.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/nice.js":
/*!*******************************************!*\
!*** ./node_modules/d3-scale/src/nice.js ***!
\*******************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/nice.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/number.js":
/*!*********************************************!*\
!*** ./node_modules/d3-scale/src/number.js ***!
\*********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return +x;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/number.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/ordinal.js":
/*!**********************************************!*\
!*** ./node_modules/d3-scale/src/ordinal.js ***!
\**********************************************/
/*! exports provided: implicit, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"implicit\", function() { return implicit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ordinal; });\n/* harmony import */ var d3_collection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-collection */ \"./node_modules/d3-collection/src/index.js\");\n/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array */ \"./node_modules/d3-scale/src/array.js\");\n/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init */ \"./node_modules/d3-scale/src/init.js\");\n\n\n\n\nvar implicit = {name: \"implicit\"};\n\nfunction ordinal() {\n var index = Object(d3_collection__WEBPACK_IMPORTED_MODULE_0__[\"map\"])(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = Object(d3_collection__WEBPACK_IMPORTED_MODULE_0__[\"map\"])();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = _array__WEBPACK_IMPORTED_MODULE_1__[\"slice\"].call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n _init__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(scale, arguments);\n\n return scale;\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/ordinal.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/pow.js":
/*!******************************************!*\
!*** ./node_modules/d3-scale/src/pow.js ***!
\******************************************/
/*! exports provided: powish, default, sqrt */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"powish\", function() { return powish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrt\", function() { return sqrt; });\n/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear */ \"./node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _continuous__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous */ \"./node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init */ \"./node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nfunction powish(transform) {\n var scale = transform(_continuous__WEBPACK_IMPORTED_MODULE_1__[\"identity\"], _continuous__WEBPACK_IMPORTED_MODULE_1__[\"identity\"]),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(_continuous__WEBPACK_IMPORTED_MODULE_1__[\"identity\"], _continuous__WEBPACK_IMPORTED_MODULE_1__[\"identity\"])\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return Object(_linear__WEBPACK_IMPORTED_MODULE_0__[\"linearish\"])(scale);\n}\n\nfunction pow() {\n var scale = powish(Object(_continuous__WEBPACK_IMPORTED_MODULE_1__[\"transformer\"])());\n\n scale.copy = function() {\n return Object(_continuous__WEBPACK_IMPORTED_MODULE_1__[\"copy\"])(scale, pow()).exponent(scale.exponent());\n };\n\n _init__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(scale, arguments);\n\n return scale;\n}\n\nfunction sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/pow.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/quantile.js":
/*!***********************************************!*\
!*** ./node_modules/d3-scale/src/quantile.js ***!
\***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return quantile; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array */ \"./node_modules/d3-scale/src/array.js\");\n/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init */ \"./node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"quantile\"])(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ascending\"]);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = _array__WEBPACK_IMPORTED_MODULE_1__[\"slice\"].call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return _init__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(scale, arguments);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/quantile.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/quantize.js":
/*!***********************************************!*\
!*** ./node_modules/d3-scale/src/quantize.js ***!
\***********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return quantize; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array */ \"./node_modules/d3-scale/src/array.js\");\n/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear */ \"./node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./init */ \"./node_modules/d3-scale/src/init.js\");\n\n\n\n\n\nfunction quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = _array__WEBPACK_IMPORTED_MODULE_1__[\"slice\"].call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return _init__WEBPACK_IMPORTED_MODULE_3__[\"initRange\"].apply(Object(_linear__WEBPACK_IMPORTED_MODULE_2__[\"linearish\"])(scale), arguments);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/quantize.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/sequential.js":
/*!*************************************************!*\
!*** ./node_modules/d3-scale/src/sequential.js ***!
\*************************************************/
/*! exports provided: copy, default, sequentialLog, sequentialSymlog, sequentialPow, sequentialSqrt */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return sequential; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequentialLog\", function() { return sequentialLog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequentialSymlog\", function() { return sequentialSymlog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequentialPow\", function() { return sequentialPow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sequentialSqrt\", function() { return sequentialSqrt; });\n/* harmony import */ var _continuous__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./continuous */ \"./node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init */ \"./node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear */ \"./node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./log */ \"./node_modules/d3-scale/src/log.js\");\n/* harmony import */ var _symlog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./symlog */ \"./node_modules/d3-scale/src/symlog.js\");\n/* harmony import */ var _pow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./pow */ \"./node_modules/d3-scale/src/pow.js\");\n\n\n\n\n\n\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = _continuous__WEBPACK_IMPORTED_MODULE_0__[\"identity\"],\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nfunction copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nfunction sequential() {\n var scale = Object(_linear__WEBPACK_IMPORTED_MODULE_2__[\"linearish\"])(transformer()(_continuous__WEBPACK_IMPORTED_MODULE_0__[\"identity\"]));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return _init__WEBPACK_IMPORTED_MODULE_1__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction sequentialLog() {\n var scale = Object(_log__WEBPACK_IMPORTED_MODULE_3__[\"loggish\"])(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return _init__WEBPACK_IMPORTED_MODULE_1__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction sequentialSymlog() {\n var scale = Object(_symlog__WEBPACK_IMPORTED_MODULE_4__[\"symlogish\"])(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return _init__WEBPACK_IMPORTED_MODULE_1__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction sequentialPow() {\n var scale = Object(_pow__WEBPACK_IMPORTED_MODULE_5__[\"powish\"])(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return _init__WEBPACK_IMPORTED_MODULE_1__[\"initInterpolator\"].apply(scale, arguments);\n}\n\nfunction sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/sequential.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/sequentialQuantile.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-scale/src/sequentialQuantile.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return sequentialQuantile; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _continuous__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous */ \"./node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init */ \"./node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction sequentialQuantile() {\n var domain = [],\n interpolator = _continuous__WEBPACK_IMPORTED_MODULE_1__[\"identity\"];\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(domain, x) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"ascending\"]);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return _init__WEBPACK_IMPORTED_MODULE_2__[\"initInterpolator\"].apply(scale, arguments);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/sequentialQuantile.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/symlog.js":
/*!*********************************************!*\
!*** ./node_modules/d3-scale/src/symlog.js ***!
\*********************************************/
/*! exports provided: symlogish, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"symlogish\", function() { return symlogish; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return symlog; });\n/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear */ \"./node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _continuous__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous */ \"./node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init */ \"./node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nfunction symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return Object(_linear__WEBPACK_IMPORTED_MODULE_0__[\"linearish\"])(scale);\n}\n\nfunction symlog() {\n var scale = symlogish(Object(_continuous__WEBPACK_IMPORTED_MODULE_1__[\"transformer\"])());\n\n scale.copy = function() {\n return Object(_continuous__WEBPACK_IMPORTED_MODULE_1__[\"copy\"])(scale, symlog()).constant(scale.constant());\n };\n\n return _init__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(scale, arguments);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/symlog.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/threshold.js":
/*!************************************************!*\
!*** ./node_modules/d3-scale/src/threshold.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return threshold; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array */ \"./node_modules/d3-scale/src/array.js\");\n/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init */ \"./node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisect\"])(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = _array__WEBPACK_IMPORTED_MODULE_1__[\"slice\"].call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = _array__WEBPACK_IMPORTED_MODULE_1__[\"slice\"].call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return _init__WEBPACK_IMPORTED_MODULE_2__[\"initRange\"].apply(scale, arguments);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/threshold.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/tickFormat.js":
/*!*************************************************!*\
!*** ./node_modules/d3-scale/src/tickFormat.js ***!
\*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-format */ \"./node_modules/d3-format/src/index.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(start, stop, count, specifier) {\n var step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start, stop, count),\n precision;\n specifier = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatSpecifier\"])(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"precisionPrefix\"])(step, value))) specifier.precision = precision;\n return Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatPrefix\"])(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"precisionRound\"])(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"precisionFixed\"])(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"format\"])(specifier);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/tickFormat.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/time.js":
/*!*******************************************!*\
!*** ./node_modules/d3-scale/src/time.js ***!
\*******************************************/
/*! exports provided: calendar, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calendar\", function() { return calendar; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-time */ \"./node_modules/d3-time/src/index.js\");\n/* harmony import */ var d3_time_format__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-time-format */ \"./node_modules/d3-time-format/src/index.js\");\n/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./array */ \"./node_modules/d3-scale/src/array.js\");\n/* harmony import */ var _continuous__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./continuous */ \"./node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./init */ \"./node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _nice__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./nice */ \"./node_modules/d3-scale/src/nice.js\");\n\n\n\n\n\n\n\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nfunction calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = Object(_continuous__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_continuous__WEBPACK_IMPORTED_MODULE_4__[\"identity\"], _continuous__WEBPACK_IMPORTED_MODULE_4__[\"identity\"]),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"bisector\"])(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"tickStep\"])(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(_array__WEBPACK_IMPORTED_MODULE_3__[\"map\"].call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(Object(_nice__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return Object(_continuous__WEBPACK_IMPORTED_MODULE_4__[\"copy\"])(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return _init__WEBPACK_IMPORTED_MODULE_5__[\"initRange\"].apply(calendar(d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeYear\"], d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeMonth\"], d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeWeek\"], d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeDay\"], d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeHour\"], d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeMinute\"], d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeSecond\"], d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeMillisecond\"], d3_time_format__WEBPACK_IMPORTED_MODULE_2__[\"timeFormat\"]).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/time.js?");
/***/ }),
/***/ "./node_modules/d3-scale/src/utcTime.js":
/*!**********************************************!*\
!*** ./node_modules/d3-scale/src/utcTime.js ***!
\**********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./time */ \"./node_modules/d3-scale/src/time.js\");\n/* harmony import */ var d3_time_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-time-format */ \"./node_modules/d3-time-format/src/index.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-time */ \"./node_modules/d3-time/src/index.js\");\n/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./init */ \"./node_modules/d3-scale/src/init.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return _init__WEBPACK_IMPORTED_MODULE_3__[\"initRange\"].apply(Object(_time__WEBPACK_IMPORTED_MODULE_0__[\"calendar\"])(d3_time__WEBPACK_IMPORTED_MODULE_2__[\"utcYear\"], d3_time__WEBPACK_IMPORTED_MODULE_2__[\"utcMonth\"], d3_time__WEBPACK_IMPORTED_MODULE_2__[\"utcWeek\"], d3_time__WEBPACK_IMPORTED_MODULE_2__[\"utcDay\"], d3_time__WEBPACK_IMPORTED_MODULE_2__[\"utcHour\"], d3_time__WEBPACK_IMPORTED_MODULE_2__[\"utcMinute\"], d3_time__WEBPACK_IMPORTED_MODULE_2__[\"utcSecond\"], d3_time__WEBPACK_IMPORTED_MODULE_2__[\"utcMillisecond\"], d3_time_format__WEBPACK_IMPORTED_MODULE_1__[\"utcFormat\"]).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-scale/src/utcTime.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/constant.js":
/*!***************************************************!*\
!*** ./node_modules/d3-selection/src/constant.js ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return function() {\n return x;\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/constant.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/create.js":
/*!*************************************************!*\
!*** ./node_modules/d3-selection/src/create.js ***!
\*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _creator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./creator */ \"./node_modules/d3-selection/src/creator.js\");\n/* harmony import */ var _select__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./select */ \"./node_modules/d3-selection/src/select.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name) {\n return Object(_select__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Object(_creator__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(name).call(document.documentElement));\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/create.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/creator.js":
/*!**************************************************!*\
!*** ./node_modules/d3-selection/src/creator.js ***!
\**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _namespace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./namespace */ \"./node_modules/d3-selection/src/namespace.js\");\n/* harmony import */ var _namespaces__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./namespaces */ \"./node_modules/d3-selection/src/namespaces.js\");\n\n\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === _namespaces__WEBPACK_IMPORTED_MODULE_1__[\"xhtml\"] && document.documentElement.namespaceURI === _namespaces__WEBPACK_IMPORTED_MODULE_1__[\"xhtml\"]\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name) {\n var fullname = Object(_namespace__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/creator.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/index.js":
/*!************************************************!*\
!*** ./node_modules/d3-selection/src/index.js ***!
\************************************************/
/*! exports provided: create, creator, local, matcher, mouse, namespace, namespaces, clientPoint, select, selectAll, selection, selector, selectorAll, style, touch, touches, window, event, customEvent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _create__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./create */ \"./node_modules/d3-selection/src/create.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return _create__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _creator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./creator */ \"./node_modules/d3-selection/src/creator.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"creator\", function() { return _creator__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _local__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./local */ \"./node_modules/d3-selection/src/local.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"local\", function() { return _local__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _matcher__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./matcher */ \"./node_modules/d3-selection/src/matcher.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"matcher\", function() { return _matcher__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _mouse__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mouse */ \"./node_modules/d3-selection/src/mouse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mouse\", function() { return _mouse__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _namespace__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./namespace */ \"./node_modules/d3-selection/src/namespace.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"namespace\", function() { return _namespace__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _namespaces__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./namespaces */ \"./node_modules/d3-selection/src/namespaces.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"namespaces\", function() { return _namespaces__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _point__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./point */ \"./node_modules/d3-selection/src/point.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"clientPoint\", function() { return _point__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _select__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./select */ \"./node_modules/d3-selection/src/select.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"select\", function() { return _select__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _selectAll__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./selectAll */ \"./node_modules/d3-selection/src/selectAll.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"selectAll\", function() { return _selectAll__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _selection_index__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./selection/index */ \"./node_modules/d3-selection/src/selection/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"selection\", function() { return _selection_index__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _selector__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./selector */ \"./node_modules/d3-selection/src/selector.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"selector\", function() { return _selector__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _selectorAll__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./selectorAll */ \"./node_modules/d3-selection/src/selectorAll.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"selectorAll\", function() { return _selectorAll__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _selection_style__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./selection/style */ \"./node_modules/d3-selection/src/selection/style.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"style\", function() { return _selection_style__WEBPACK_IMPORTED_MODULE_13__[\"styleValue\"]; });\n\n/* harmony import */ var _touch__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./touch */ \"./node_modules/d3-selection/src/touch.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"touch\", function() { return _touch__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _touches__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./touches */ \"./node_modules/d3-selection/src/touches.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"touches\", function() { return _touches__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./window */ \"./node_modules/d3-selection/src/window.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"window\", function() { return _window__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _selection_on__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./selection/on */ \"./node_modules/d3-selection/src/selection/on.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"event\", function() { return _selection_on__WEBPACK_IMPORTED_MODULE_17__[\"event\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"customEvent\", function() { return _selection_on__WEBPACK_IMPORTED_MODULE_17__[\"customEvent\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/index.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/local.js":
/*!************************************************!*\
!*** ./node_modules/d3-selection/src/local.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return local; });\nvar nextId = 0;\n\nfunction local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/local.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/matcher.js":
/*!**************************************************!*\
!*** ./node_modules/d3-selection/src/matcher.js ***!
\**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(selector) {\n return function() {\n return this.matches(selector);\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/matcher.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/mouse.js":
/*!************************************************!*\
!*** ./node_modules/d3-selection/src/mouse.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _sourceEvent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sourceEvent */ \"./node_modules/d3-selection/src/sourceEvent.js\");\n/* harmony import */ var _point__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./point */ \"./node_modules/d3-selection/src/point.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(node) {\n var event = Object(_sourceEvent__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n if (event.changedTouches) event = event.changedTouches[0];\n return Object(_point__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(node, event);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/mouse.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/namespace.js":
/*!****************************************************!*\
!*** ./node_modules/d3-selection/src/namespace.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _namespaces__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./namespaces */ \"./node_modules/d3-selection/src/namespaces.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return _namespaces__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hasOwnProperty(prefix) ? {space: _namespaces__WEBPACK_IMPORTED_MODULE_0__[\"default\"][prefix], local: name} : name;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/namespace.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/namespaces.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-selection/src/namespaces.js ***!
\*****************************************************/
/*! exports provided: xhtml, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"xhtml\", function() { return xhtml; });\nvar xhtml = \"http://www.w3.org/1999/xhtml\";\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/namespaces.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/point.js":
/*!************************************************!*\
!*** ./node_modules/d3-selection/src/point.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/point.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/select.js":
/*!*************************************************!*\
!*** ./node_modules/d3-selection/src/select.js ***!
\*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _selection_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./selection/index */ \"./node_modules/d3-selection/src/selection/index.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(selector) {\n return typeof selector === \"string\"\n ? new _selection_index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"]([[document.querySelector(selector)]], [document.documentElement])\n : new _selection_index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"]([[selector]], _selection_index__WEBPACK_IMPORTED_MODULE_0__[\"root\"]);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/select.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selectAll.js":
/*!****************************************************!*\
!*** ./node_modules/d3-selection/src/selectAll.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _selection_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./selection/index */ \"./node_modules/d3-selection/src/selection/index.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(selector) {\n return typeof selector === \"string\"\n ? new _selection_index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"]([document.querySelectorAll(selector)], [document.documentElement])\n : new _selection_index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"]([selector == null ? [] : selector], _selection_index__WEBPACK_IMPORTED_MODULE_0__[\"root\"]);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selectAll.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/append.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/append.js ***!
\***********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _creator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../creator */ \"./node_modules/d3-selection/src/creator.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name) {\n var create = typeof name === \"function\" ? name : Object(_creator__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/append.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/attr.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/attr.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _namespace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../namespace */ \"./node_modules/d3-selection/src/namespace.js\");\n\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name, value) {\n var fullname = Object(_namespace__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/attr.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/call.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/call.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/call.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/classed.js":
/*!************************************************************!*\
!*** ./node_modules/d3-selection/src/selection/classed.js ***!
\************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/classed.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/clone.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/clone.js ***!
\**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/clone.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/data.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/data.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-selection/src/selection/index.js\");\n/* harmony import */ var _enter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enter */ \"./node_modules/d3-selection/src/selection/enter.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/d3-selection/src/constant.js\");\n\n\n\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new _enter__WEBPACK_IMPORTED_MODULE_1__[\"EnterNode\"](parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new _enter__WEBPACK_IMPORTED_MODULE_1__[\"EnterNode\"](parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = Object(_constant__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new _index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"](update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/data.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/datum.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/datum.js ***!
\**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/datum.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/dispatch.js":
/*!*************************************************************!*\
!*** ./node_modules/d3-selection/src/selection/dispatch.js ***!
\*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../window */ \"./node_modules/d3-selection/src/window.js\");\n\n\nfunction dispatchEvent(node, type, params) {\n var window = Object(_window__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/dispatch.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/each.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/each.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/each.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/empty.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/empty.js ***!
\**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return !this.node();\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/empty.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/enter.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/enter.js ***!
\**********************************************************/
/*! exports provided: default, EnterNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EnterNode\", function() { return EnterNode; });\n/* harmony import */ var _sparse__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sparse */ \"./node_modules/d3-selection/src/selection/sparse.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-selection/src/selection/index.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return new _index__WEBPACK_IMPORTED_MODULE_1__[\"Selection\"](this._enter || this._groups.map(_sparse__WEBPACK_IMPORTED_MODULE_0__[\"default\"]), this._parents);\n});\n\nfunction EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/enter.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/exit.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/exit.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _sparse__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sparse */ \"./node_modules/d3-selection/src/selection/sparse.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-selection/src/selection/index.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return new _index__WEBPACK_IMPORTED_MODULE_1__[\"Selection\"](this._exit || this._groups.map(_sparse__WEBPACK_IMPORTED_MODULE_0__[\"default\"]), this._parents);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/exit.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/filter.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/filter.js ***!
\***********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-selection/src/selection/index.js\");\n/* harmony import */ var _matcher__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../matcher */ \"./node_modules/d3-selection/src/matcher.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(match) {\n if (typeof match !== \"function\") match = Object(_matcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new _index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"](subgroups, this._parents);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/filter.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/html.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/html.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/html.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/index.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/index.js ***!
\**********************************************************/
/*! exports provided: root, Selection, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"root\", function() { return root; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Selection\", function() { return Selection; });\n/* harmony import */ var _select__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./select */ \"./node_modules/d3-selection/src/selection/select.js\");\n/* harmony import */ var _selectAll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./selectAll */ \"./node_modules/d3-selection/src/selection/selectAll.js\");\n/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./filter */ \"./node_modules/d3-selection/src/selection/filter.js\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./data */ \"./node_modules/d3-selection/src/selection/data.js\");\n/* harmony import */ var _enter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./enter */ \"./node_modules/d3-selection/src/selection/enter.js\");\n/* harmony import */ var _exit__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./exit */ \"./node_modules/d3-selection/src/selection/exit.js\");\n/* harmony import */ var _join__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./join */ \"./node_modules/d3-selection/src/selection/join.js\");\n/* harmony import */ var _merge__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./merge */ \"./node_modules/d3-selection/src/selection/merge.js\");\n/* harmony import */ var _order__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./order */ \"./node_modules/d3-selection/src/selection/order.js\");\n/* harmony import */ var _sort__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./sort */ \"./node_modules/d3-selection/src/selection/sort.js\");\n/* harmony import */ var _call__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./call */ \"./node_modules/d3-selection/src/selection/call.js\");\n/* harmony import */ var _nodes__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./nodes */ \"./node_modules/d3-selection/src/selection/nodes.js\");\n/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./node */ \"./node_modules/d3-selection/src/selection/node.js\");\n/* harmony import */ var _size__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./size */ \"./node_modules/d3-selection/src/selection/size.js\");\n/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./empty */ \"./node_modules/d3-selection/src/selection/empty.js\");\n/* harmony import */ var _each__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./each */ \"./node_modules/d3-selection/src/selection/each.js\");\n/* harmony import */ var _attr__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./attr */ \"./node_modules/d3-selection/src/selection/attr.js\");\n/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./style */ \"./node_modules/d3-selection/src/selection/style.js\");\n/* harmony import */ var _property__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./property */ \"./node_modules/d3-selection/src/selection/property.js\");\n/* harmony import */ var _classed__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./classed */ \"./node_modules/d3-selection/src/selection/classed.js\");\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./text */ \"./node_modules/d3-selection/src/selection/text.js\");\n/* harmony import */ var _html__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./html */ \"./node_modules/d3-selection/src/selection/html.js\");\n/* harmony import */ var _raise__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./raise */ \"./node_modules/d3-selection/src/selection/raise.js\");\n/* harmony import */ var _lower__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./lower */ \"./node_modules/d3-selection/src/selection/lower.js\");\n/* harmony import */ var _append__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./append */ \"./node_modules/d3-selection/src/selection/append.js\");\n/* harmony import */ var _insert__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./insert */ \"./node_modules/d3-selection/src/selection/insert.js\");\n/* harmony import */ var _remove__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./remove */ \"./node_modules/d3-selection/src/selection/remove.js\");\n/* harmony import */ var _clone__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./clone */ \"./node_modules/d3-selection/src/selection/clone.js\");\n/* harmony import */ var _datum__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./datum */ \"./node_modules/d3-selection/src/selection/datum.js\");\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./on */ \"./node_modules/d3-selection/src/selection/on.js\");\n/* harmony import */ var _dispatch__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./dispatch */ \"./node_modules/d3-selection/src/selection/dispatch.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar root = [null];\n\nfunction Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: _select__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n selectAll: _selectAll__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n filter: _filter__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n data: _data__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n enter: _enter__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n exit: _exit__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n join: _join__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n merge: _merge__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n order: _order__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n sort: _sort__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n call: _call__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n nodes: _nodes__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n node: _node__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n size: _size__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n empty: _empty__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n each: _each__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n attr: _attr__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n style: _style__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n property: _property__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n classed: _classed__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n text: _text__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n html: _html__WEBPACK_IMPORTED_MODULE_21__[\"default\"],\n raise: _raise__WEBPACK_IMPORTED_MODULE_22__[\"default\"],\n lower: _lower__WEBPACK_IMPORTED_MODULE_23__[\"default\"],\n append: _append__WEBPACK_IMPORTED_MODULE_24__[\"default\"],\n insert: _insert__WEBPACK_IMPORTED_MODULE_25__[\"default\"],\n remove: _remove__WEBPACK_IMPORTED_MODULE_26__[\"default\"],\n clone: _clone__WEBPACK_IMPORTED_MODULE_27__[\"default\"],\n datum: _datum__WEBPACK_IMPORTED_MODULE_28__[\"default\"],\n on: _on__WEBPACK_IMPORTED_MODULE_29__[\"default\"],\n dispatch: _dispatch__WEBPACK_IMPORTED_MODULE_30__[\"default\"]\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (selection);\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/index.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/insert.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/insert.js ***!
\***********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _creator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../creator */ \"./node_modules/d3-selection/src/creator.js\");\n/* harmony import */ var _selector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../selector */ \"./node_modules/d3-selection/src/selector.js\");\n\n\n\nfunction constantNull() {\n return null;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name, before) {\n var create = typeof name === \"function\" ? name : Object(_creator__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : Object(_selector__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/insert.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/join.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/join.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/join.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/lower.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/lower.js ***!
\**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return this.each(lower);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/lower.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/merge.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/merge.js ***!
\**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-selection/src/selection/index.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(selection) {\n\n 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) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new _index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"](merges, this._parents);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/merge.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/node.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/node.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/node.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/nodes.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/nodes.js ***!
\**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/nodes.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/on.js":
/*!*******************************************************!*\
!*** ./node_modules/d3-selection/src/selection/on.js ***!
\*******************************************************/
/*! exports provided: event, default, customEvent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"event\", function() { return event; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"customEvent\", function() { return customEvent; });\nvar filterEvents = {};\n\nvar event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n});\n\nfunction customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/on.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/order.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/order.js ***!
\**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/order.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/property.js":
/*!*************************************************************!*\
!*** ./node_modules/d3-selection/src/selection/property.js ***!
\*************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/property.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/raise.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/raise.js ***!
\**********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return this.each(raise);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/raise.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/remove.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/remove.js ***!
\***********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return this.each(remove);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/remove.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/select.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/select.js ***!
\***********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-selection/src/selection/index.js\");\n/* harmony import */ var _selector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../selector */ \"./node_modules/d3-selection/src/selector.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(select) {\n if (typeof select !== \"function\") select = Object(_selector__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new _index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"](subgroups, this._parents);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/select.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/selectAll.js":
/*!**************************************************************!*\
!*** ./node_modules/d3-selection/src/selection/selectAll.js ***!
\**************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-selection/src/selection/index.js\");\n/* harmony import */ var _selectorAll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../selectorAll */ \"./node_modules/d3-selection/src/selectorAll.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(select) {\n if (typeof select !== \"function\") select = Object(_selectorAll__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new _index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"](subgroups, parents);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/selectAll.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/size.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/size.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/size.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/sort.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/sort.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \"./node_modules/d3-selection/src/selection/index.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new _index__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"](sortgroups, this._parents).order();\n});\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/sort.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/sparse.js":
/*!***********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/sparse.js ***!
\***********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(update) {\n return new Array(update.length);\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/sparse.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/style.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/style.js ***!
\**********************************************************/
/*! exports provided: default, styleValue */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleValue\", function() { return styleValue; });\n/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../window */ \"./node_modules/d3-selection/src/window.js\");\n\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n});\n\nfunction styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || Object(_window__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/style.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selection/text.js":
/*!*********************************************************!*\
!*** ./node_modules/d3-selection/src/selection/text.js ***!
\*********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selection/text.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selector.js":
/*!***************************************************!*\
!*** ./node_modules/d3-selection/src/selector.js ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction none() {}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selector.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/selectorAll.js":
/*!******************************************************!*\
!*** ./node_modules/d3-selection/src/selectorAll.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nfunction empty() {\n return [];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/selectorAll.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/sourceEvent.js":
/*!******************************************************!*\
!*** ./node_modules/d3-selection/src/sourceEvent.js ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _selection_on__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./selection/on */ \"./node_modules/d3-selection/src/selection/on.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var current = _selection_on__WEBPACK_IMPORTED_MODULE_0__[\"event\"], source;\n while (source = current.sourceEvent) current = source;\n return current;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/sourceEvent.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/touch.js":
/*!************************************************!*\
!*** ./node_modules/d3-selection/src/touch.js ***!
\************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _sourceEvent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sourceEvent */ \"./node_modules/d3-selection/src/sourceEvent.js\");\n/* harmony import */ var _point__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./point */ \"./node_modules/d3-selection/src/point.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = Object(_sourceEvent__WEBPACK_IMPORTED_MODULE_0__[\"default\"])().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return Object(_point__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(node, touch);\n }\n }\n\n return null;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/touch.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/touches.js":
/*!**************************************************!*\
!*** ./node_modules/d3-selection/src/touches.js ***!
\**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _sourceEvent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sourceEvent */ \"./node_modules/d3-selection/src/sourceEvent.js\");\n/* harmony import */ var _point__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./point */ \"./node_modules/d3-selection/src/point.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(node, touches) {\n if (touches == null) touches = Object(_sourceEvent__WEBPACK_IMPORTED_MODULE_0__[\"default\"])().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = Object(_point__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(node, touches[i]);\n }\n\n return points;\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/touches.js?");
/***/ }),
/***/ "./node_modules/d3-selection/src/window.js":
/*!*************************************************!*\
!*** ./node_modules/d3-selection/src/window.js ***!
\*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n});\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-selection/src/window.js?");
/***/ }),
/***/ "./node_modules/d3-time-format/src/defaultLocale.js":
/*!**********************************************************!*\
!*** ./node_modules/d3-time-format/src/defaultLocale.js ***!
\**********************************************************/
/*! exports provided: timeFormat, timeParse, utcFormat, utcParse, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeFormat\", function() { return timeFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeParse\", function() { return timeParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFormat\", function() { return utcFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcParse\", function() { return utcParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return defaultLocale; });\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/d3-time-format/src/locale.js\");\n\n\nvar locale;\nvar timeFormat;\nvar timeParse;\nvar utcFormat;\nvar utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nfunction defaultLocale(definition) {\n locale = Object(_locale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time-format/src/defaultLocale.js?");
/***/ }),
/***/ "./node_modules/d3-time-format/src/index.js":
/*!**************************************************!*\
!*** ./node_modules/d3-time-format/src/index.js ***!
\**************************************************/
/*! exports provided: timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse, timeFormatLocale, isoFormat, isoParse */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/d3-time-format/src/defaultLocale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFormatDefaultLocale\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFormat\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeParse\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"timeParse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFormat\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"utcFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcParse\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"utcParse\"]; });\n\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/d3-time-format/src/locale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFormatLocale\", function() { return _locale_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _isoFormat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isoFormat.js */ \"./node_modules/d3-time-format/src/isoFormat.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isoFormat\", function() { return _isoFormat_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _isoParse_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isoParse.js */ \"./node_modules/d3-time-format/src/isoParse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isoParse\", function() { return _isoParse_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time-format/src/index.js?");
/***/ }),
/***/ "./node_modules/d3-time-format/src/isoFormat.js":
/*!******************************************************!*\
!*** ./node_modules/d3-time-format/src/isoFormat.js ***!
\******************************************************/
/*! exports provided: isoSpecifier, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isoSpecifier\", function() { return isoSpecifier; });\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/d3-time-format/src/defaultLocale.js\");\n\n\nvar isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : Object(_defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"utcFormat\"])(isoSpecifier);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (formatIso);\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time-format/src/isoFormat.js?");
/***/ }),
/***/ "./node_modules/d3-time-format/src/isoParse.js":
/*!*****************************************************!*\
!*** ./node_modules/d3-time-format/src/isoParse.js ***!
\*****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _isoFormat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isoFormat.js */ \"./node_modules/d3-time-format/src/isoFormat.js\");\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/d3-time-format/src/defaultLocale.js\");\n\n\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : Object(_defaultLocale_js__WEBPACK_IMPORTED_MODULE_1__[\"utcParse\"])(_isoFormat_js__WEBPACK_IMPORTED_MODULE_0__[\"isoSpecifier\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (parseIso);\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time-format/src/isoParse.js?");
/***/ }),
/***/ "./node_modules/d3-time-format/src/locale.js":
/*!***************************************************!*\
!*** ./node_modules/d3-time-format/src/locale.js ***!
\***************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return formatLocale; });\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-time */ \"./node_modules/d3-time/src/index.js\");\n\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nfunction formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonday\"].ceil(week) : Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonday\"])(week);\n week = d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcDay\"].offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonday\"].ceil(week) : Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonday\"])(week);\n week = d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeDay\"].offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeDay\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeSunday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d) - 1, d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"].ceil(d);\n return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeThursday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d), d) + (Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeMonday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"timeYear\"])(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcDay\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcSunday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d) - 1, d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"].ceil(d);\n return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcThursday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d), d) + (Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcMonday\"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__[\"utcYear\"])(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time-format/src/locale.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/day.js":
/*!*****************************************!*\
!*** ./node_modules/d3-time/src/day.js ***!
\*****************************************/
/*! exports provided: default, days */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"days\", function() { return days; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/d3-time/src/duration.js\");\n\n\n\nvar day = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"];\n}, function(date) {\n return date.getDate() - 1;\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (day);\nvar days = day.range;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/day.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/duration.js":
/*!**********************************************!*\
!*** ./node_modules/d3-time/src/duration.js ***!
\**********************************************/
/*! exports provided: durationSecond, durationMinute, durationHour, durationDay, durationWeek */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationSecond\", function() { return durationSecond; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationMinute\", function() { return durationMinute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationHour\", function() { return durationHour; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationDay\", function() { return durationDay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"durationWeek\", function() { return durationWeek; });\nvar durationSecond = 1e3;\nvar durationMinute = 6e4;\nvar durationHour = 36e5;\nvar durationDay = 864e5;\nvar durationWeek = 6048e5;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/duration.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/hour.js":
/*!******************************************!*\
!*** ./node_modules/d3-time/src/hour.js ***!
\******************************************/
/*! exports provided: default, hours */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hours\", function() { return hours; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/d3-time/src/duration.js\");\n\n\n\nvar hour = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"] - date.getMinutes() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(date, step) {\n date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]);\n}, function(start, end) {\n return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"];\n}, function(date) {\n return date.getHours();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hour);\nvar hours = hour.range;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/hour.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/index.js":
/*!*******************************************!*\
!*** ./node_modules/d3-time/src/index.js ***!
\*******************************************/
/*! exports provided: timeInterval, timeMillisecond, timeMilliseconds, utcMillisecond, utcMilliseconds, timeSecond, timeSeconds, utcSecond, utcSeconds, timeMinute, timeMinutes, timeHour, timeHours, timeDay, timeDays, timeWeek, timeWeeks, timeSunday, timeSundays, timeMonday, timeMondays, timeTuesday, timeTuesdays, timeWednesday, timeWednesdays, timeThursday, timeThursdays, timeFriday, timeFridays, timeSaturday, timeSaturdays, timeMonth, timeMonths, timeYear, timeYears, utcMinute, utcMinutes, utcHour, utcHours, utcDay, utcDays, utcWeek, utcWeeks, utcSunday, utcSundays, utcMonday, utcMondays, utcTuesday, utcTuesdays, utcWednesday, utcWednesdays, utcThursday, utcThursdays, utcFriday, utcFridays, utcSaturday, utcSaturdays, utcMonth, utcMonths, utcYear, utcYears */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/d3-time/src/interval.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeInterval\", function() { return _interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _millisecond_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./millisecond.js */ \"./node_modules/d3-time/src/millisecond.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMillisecond\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMilliseconds\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"milliseconds\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMillisecond\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMilliseconds\", function() { return _millisecond_js__WEBPACK_IMPORTED_MODULE_1__[\"milliseconds\"]; });\n\n/* harmony import */ var _second_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./second.js */ \"./node_modules/d3-time/src/second.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSecond\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSeconds\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"seconds\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSecond\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSeconds\", function() { return _second_js__WEBPACK_IMPORTED_MODULE_2__[\"seconds\"]; });\n\n/* harmony import */ var _minute_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./minute.js */ \"./node_modules/d3-time/src/minute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMinute\", function() { return _minute_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMinutes\", function() { return _minute_js__WEBPACK_IMPORTED_MODULE_3__[\"minutes\"]; });\n\n/* harmony import */ var _hour_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hour.js */ \"./node_modules/d3-time/src/hour.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeHour\", function() { return _hour_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeHours\", function() { return _hour_js__WEBPACK_IMPORTED_MODULE_4__[\"hours\"]; });\n\n/* harmony import */ var _day_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./day.js */ \"./node_modules/d3-time/src/day.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeDay\", function() { return _day_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeDays\", function() { return _day_js__WEBPACK_IMPORTED_MODULE_5__[\"days\"]; });\n\n/* harmony import */ var _week_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./week.js */ \"./node_modules/d3-time/src/week.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWeek\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWeeks\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSunday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSundays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"sundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"monday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMondays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"mondays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTuesday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"tuesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeTuesdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"tuesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWednesday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"wednesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeWednesdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"wednesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeThursday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"thursday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeThursdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"thursdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFriday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"friday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeFridays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"fridays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSaturday\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"saturday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeSaturdays\", function() { return _week_js__WEBPACK_IMPORTED_MODULE_6__[\"saturdays\"]; });\n\n/* harmony import */ var _month_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./month.js */ \"./node_modules/d3-time/src/month.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonth\", function() { return _month_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeMonths\", function() { return _month_js__WEBPACK_IMPORTED_MODULE_7__[\"months\"]; });\n\n/* harmony import */ var _year_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./year.js */ \"./node_modules/d3-time/src/year.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeYear\", function() { return _year_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeYears\", function() { return _year_js__WEBPACK_IMPORTED_MODULE_8__[\"years\"]; });\n\n/* harmony import */ var _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utcMinute.js */ \"./node_modules/d3-time/src/utcMinute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMinute\", function() { return _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMinutes\", function() { return _utcMinute_js__WEBPACK_IMPORTED_MODULE_9__[\"utcMinutes\"]; });\n\n/* harmony import */ var _utcHour_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utcHour.js */ \"./node_modules/d3-time/src/utcHour.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcHour\", function() { return _utcHour_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcHours\", function() { return _utcHour_js__WEBPACK_IMPORTED_MODULE_10__[\"utcHours\"]; });\n\n/* harmony import */ var _utcDay_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utcDay.js */ \"./node_modules/d3-time/src/utcDay.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcDay\", function() { return _utcDay_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcDays\", function() { return _utcDay_js__WEBPACK_IMPORTED_MODULE_11__[\"utcDays\"]; });\n\n/* harmony import */ var _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utcWeek.js */ \"./node_modules/d3-time/src/utcWeek.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWeek\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWeeks\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSunday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSunday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSundays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSundays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcMonday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMondays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcMondays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTuesday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcTuesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcTuesdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcTuesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWednesday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcWednesday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcWednesdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcWednesdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcThursday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcThursday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcThursdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcThursdays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFriday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcFriday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcFridays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcFridays\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSaturday\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSaturday\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcSaturdays\", function() { return _utcWeek_js__WEBPACK_IMPORTED_MODULE_12__[\"utcSaturdays\"]; });\n\n/* harmony import */ var _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utcMonth.js */ \"./node_modules/d3-time/src/utcMonth.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonth\", function() { return _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcMonths\", function() { return _utcMonth_js__WEBPACK_IMPORTED_MODULE_13__[\"utcMonths\"]; });\n\n/* harmony import */ var _utcYear_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utcYear.js */ \"./node_modules/d3-time/src/utcYear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcYear\", function() { return _utcYear_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"utcYears\", function() { return _utcYear_js__WEBPACK_IMPORTED_MODULE_14__[\"utcYears\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/index.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/interval.js":
/*!**********************************************!*\
!*** ./node_modules/d3-time/src/interval.js ***!
\**********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return newInterval; });\nvar t0 = new Date,\n t1 = new Date;\n\nfunction newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/interval.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/millisecond.js":
/*!*************************************************!*\
!*** ./node_modules/d3-time/src/millisecond.js ***!
\*************************************************/
/*! exports provided: default, milliseconds */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"milliseconds\", function() { return milliseconds; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/d3-time/src/interval.js\");\n\n\nvar millisecond = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (millisecond);\nvar milliseconds = millisecond.range;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/millisecond.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/minute.js":
/*!********************************************!*\
!*** ./node_modules/d3-time/src/minute.js ***!
\********************************************/
/*! exports provided: default, minutes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"minutes\", function() { return minutes; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/d3-time/src/duration.js\");\n\n\n\nvar minute = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]);\n}, function(date, step) {\n date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(start, end) {\n return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"];\n}, function(date) {\n return date.getMinutes();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (minute);\nvar minutes = minute.range;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/minute.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/month.js":
/*!*******************************************!*\
!*** ./node_modules/d3-time/src/month.js ***!
\*******************************************/
/*! exports provided: default, months */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"months\", function() { return months; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/d3-time/src/interval.js\");\n\n\nvar month = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (month);\nvar months = month.range;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/month.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/second.js":
/*!********************************************!*\
!*** ./node_modules/d3-time/src/second.js ***!
\********************************************/
/*! exports provided: default, seconds */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"seconds\", function() { return seconds; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/d3-time/src/duration.js\");\n\n\n\nvar second = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"]);\n}, function(start, end) {\n return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationSecond\"];\n}, function(date) {\n return date.getUTCSeconds();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (second);\nvar seconds = second.range;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/second.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/utcDay.js":
/*!********************************************!*\
!*** ./node_modules/d3-time/src/utcDay.js ***!
\********************************************/
/*! exports provided: default, utcDays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcDays\", function() { return utcDays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcDay = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationDay\"];\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcDay);\nvar utcDays = utcDay.range;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/utcDay.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/utcHour.js":
/*!*********************************************!*\
!*** ./node_modules/d3-time/src/utcHour.js ***!
\*********************************************/
/*! exports provided: default, utcHours */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcHours\", function() { return utcHours; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcHour = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"]);\n}, function(start, end) {\n return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationHour\"];\n}, function(date) {\n return date.getUTCHours();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcHour);\nvar utcHours = utcHour.range;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/utcHour.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/utcMinute.js":
/*!***********************************************!*\
!*** ./node_modules/d3-time/src/utcMinute.js ***!
\***********************************************/
/*! exports provided: default, utcMinutes */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMinutes\", function() { return utcMinutes; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/d3-time/src/duration.js\");\n\n\n\nvar utcMinute = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]);\n}, function(start, end) {\n return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"];\n}, function(date) {\n return date.getUTCMinutes();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcMinute);\nvar utcMinutes = utcMinute.range;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/utcMinute.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/utcMonth.js":
/*!**********************************************!*\
!*** ./node_modules/d3-time/src/utcMonth.js ***!
\**********************************************/
/*! exports provided: default, utcMonths */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMonths\", function() { return utcMonths; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/d3-time/src/interval.js\");\n\n\nvar utcMonth = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcMonth);\nvar utcMonths = utcMonth.range;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/utcMonth.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/utcWeek.js":
/*!*********************************************!*\
!*** ./node_modules/d3-time/src/utcWeek.js ***!
\*********************************************/
/*! exports provided: utcSunday, utcMonday, utcTuesday, utcWednesday, utcThursday, utcFriday, utcSaturday, utcSundays, utcMondays, utcTuesdays, utcWednesdays, utcThursdays, utcFridays, utcSaturdays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSunday\", function() { return utcSunday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMonday\", function() { return utcMonday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTuesday\", function() { return utcTuesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcWednesday\", function() { return utcWednesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcThursday\", function() { return utcThursday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFriday\", function() { return utcFriday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSaturday\", function() { return utcSaturday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSundays\", function() { return utcSundays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcMondays\", function() { return utcMondays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcTuesdays\", function() { return utcTuesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcWednesdays\", function() { return utcWednesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcThursdays\", function() { return utcThursdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcFridays\", function() { return utcFridays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcSaturdays\", function() { return utcSaturdays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/d3-time/src/duration.js\");\n\n\n\nfunction utcWeekday(i) {\n return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"];\n });\n}\n\nvar utcSunday = utcWeekday(0);\nvar utcMonday = utcWeekday(1);\nvar utcTuesday = utcWeekday(2);\nvar utcWednesday = utcWeekday(3);\nvar utcThursday = utcWeekday(4);\nvar utcFriday = utcWeekday(5);\nvar utcSaturday = utcWeekday(6);\n\nvar utcSundays = utcSunday.range;\nvar utcMondays = utcMonday.range;\nvar utcTuesdays = utcTuesday.range;\nvar utcWednesdays = utcWednesday.range;\nvar utcThursdays = utcThursday.range;\nvar utcFridays = utcFriday.range;\nvar utcSaturdays = utcSaturday.range;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/utcWeek.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/utcYear.js":
/*!*********************************************!*\
!*** ./node_modules/d3-time/src/utcYear.js ***!
\*********************************************/
/*! exports provided: default, utcYears */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utcYears\", function() { return utcYears; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/d3-time/src/interval.js\");\n\n\nvar utcYear = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (utcYear);\nvar utcYears = utcYear.range;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/utcYear.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/week.js":
/*!******************************************!*\
!*** ./node_modules/d3-time/src/week.js ***!
\******************************************/
/*! exports provided: sunday, monday, tuesday, wednesday, thursday, friday, saturday, sundays, mondays, tuesdays, wednesdays, thursdays, fridays, saturdays */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sunday\", function() { return sunday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"monday\", function() { return monday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tuesday\", function() { return tuesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wednesday\", function() { return wednesday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"thursday\", function() { return thursday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"friday\", function() { return friday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saturday\", function() { return saturday; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sundays\", function() { return sundays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mondays\", function() { return mondays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tuesdays\", function() { return tuesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wednesdays\", function() { return wednesdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"thursdays\", function() { return thursdays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fridays\", function() { return fridays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saturdays\", function() { return saturdays; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"./node_modules/d3-time/src/duration.js\");\n\n\n\nfunction weekday(i) {\n return Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationMinute\"]) / _duration_js__WEBPACK_IMPORTED_MODULE_1__[\"durationWeek\"];\n });\n}\n\nvar sunday = weekday(0);\nvar monday = weekday(1);\nvar tuesday = weekday(2);\nvar wednesday = weekday(3);\nvar thursday = weekday(4);\nvar friday = weekday(5);\nvar saturday = weekday(6);\n\nvar sundays = sunday.range;\nvar mondays = monday.range;\nvar tuesdays = tuesday.range;\nvar wednesdays = wednesday.range;\nvar thursdays = thursday.range;\nvar fridays = friday.range;\nvar saturdays = saturday.range;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/week.js?");
/***/ }),
/***/ "./node_modules/d3-time/src/year.js":
/*!******************************************!*\
!*** ./node_modules/d3-time/src/year.js ***!
\******************************************/
/*! exports provided: default, years */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"years\", function() { return years; });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/d3-time/src/interval.js\");\n\n\nvar year = Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : Object(_interval_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (year);\nvar years = year.range;\n\n\n//# sourceURL=webpack://UWT/./node_modules/d3-time/src/year.js?");
/***/ }),
/***/ "./src/build/export.graph.ts":
/*!***********************************!*\
!*** ./src/build/export.graph.ts ***!
\***********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(/*! ../interface/graph */ \"./src/interface/graph.ts\"));\n__export(__webpack_require__(/*! ../interface/ui-base */ \"./src/interface/ui-base.ts\"));\n__export(__webpack_require__(/*! ../core/element-manager */ \"./src/core/element-manager.ts\"));\n__export(__webpack_require__(/*! ../core/color-manager */ \"./src/core/color-manager.ts\"));\n__export(__webpack_require__(/*! ../core/utilities */ \"./src/core/utilities.ts\"));\n__export(__webpack_require__(/*! ../core/web-utilities */ \"./src/core/web-utilities.ts\"));\n__export(__webpack_require__(/*! ../core/renderer */ \"./src/core/renderer.ts\"));\n__export(__webpack_require__(/*! ../core/svg-helper */ \"./src/core/svg-helper.ts\"));\n__export(__webpack_require__(/*! ../core/connected-graph/force */ \"./src/core/connected-graph/force.ts\"));\n__export(__webpack_require__(/*! ../core/connected-graph/sankey */ \"./src/core/connected-graph/sankey.ts\"));\n__export(__webpack_require__(/*! ../core/connected-graph/hierarchy */ \"./src/core/connected-graph/hierarchy.ts\"));\n__export(__webpack_require__(/*! ../core/connected-graph/port */ \"./src/core/connected-graph/port.ts\"));\n__export(__webpack_require__(/*! ../core/connected-graph/simple */ \"./src/core/connected-graph/simple.ts\"));\n\n\n//# sourceURL=webpack://UWT/./src/build/export.graph.ts?");
/***/ }),
/***/ "./src/core/color-manager.ts":
/*!***********************************!*\
!*** ./src/core/color-manager.ts ***!
\***********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction numberToHex(number) {\n var hex = Number(number).toString(16);\n return hex.length == 1 ? '0' + hex : hex;\n}\nfunction rgbToHex(color) {\n let rgb = color.substring(color.indexOf('(') + 1, color.indexOf(')')).split(',');\n return numberToHex(rgb[0]) + numberToHex(rgb[1]) + numberToHex(rgb[2]);\n}\n/** used to organize and create colors for the UI */\nclass ColorManager {\n constructor(randomColorFunc) {\n this._colorMap = {};\n if (randomColorFunc) {\n this.getRandomColor = randomColorFunc;\n }\n else {\n this.getRandomColor = function () {\n var letters = '0123456789ABCDEF';\n var color = '#';\n for (var i = 0; i < 6; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n }\n }\n /**\n * check if an existing color exists for a given key\n *\n * @param the key associated with your data\n */\n hasColor(key) {\n return this._colorMap.hasOwnProperty(key);\n }\n /**\n * set the color associated with a given key\n *\n * @param key associated with your data\n * @param color to associate with the key\n */\n setColor(key, color) {\n if (color.indexOf('rgb') === 0) {\n color = ColorManager.RgbToHex(color);\n }\n this._colorMap[key] = color;\n }\n /**\n * get the color associated with a given key\n *\n * @param key associated with your data\n */\n getColor(key) {\n if (!this.hasColor(key)) {\n this._colorMap[key] = this.getRandomColor();\n }\n return this._colorMap[key];\n }\n static IntToHex(value) {\n return '#' + value.toString(16).padStart(6, '0');\n }\n static RgbToHex(color) {\n return '#' + rgbToHex(color);\n }\n static RgbToInt(color) {\n return parseInt(rgbToHex(color), 16);\n }\n}\nexports.ColorManager = ColorManager;\n\n\n//# sourceURL=webpack://UWT/./src/core/color-manager.ts?");
/***/ }),
/***/ "./src/core/connected-graph/base.ts":
/*!******************************************!*\
!*** ./src/core/connected-graph/base.ts ***!
\******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ui_base_1 = __webpack_require__(/*! ../../interface/ui-base */ \"./src/interface/ui-base.ts\");\nconst graph_1 = __webpack_require__(/*! ../../interface/graph */ \"./src/interface/graph.ts\");\nconst context_menu_1 = __webpack_require__(/*! ../context-menu */ \"./src/core/context-menu.ts\");\nconst interaction_state_1 = __webpack_require__(/*! ../interaction-state */ \"./src/core/interaction-state.ts\");\nconst utilities_1 = __webpack_require__(/*! ../utilities */ \"./src/core/utilities.ts\");\nconst tooltip_1 = __webpack_require__(/*! ../tooltip */ \"./src/core/tooltip.ts\");\nconst renderer_1 = __webpack_require__(/*! ../renderer */ \"./src/core/renderer.ts\");\nconst svg_helper_1 = __webpack_require__(/*! ../svg-helper */ \"./src/core/svg-helper.ts\");\nconst pixi_helper_1 = __webpack_require__(/*! ../pixi-helper */ \"./src/core/pixi-helper.ts\");\nconst d3 = __webpack_require__(/*! d3 */ \"d3\");\nconst PIXI = __webpack_require__(/*! pixi.js */ \"pixi.js\");\n/**\n * If you want to extend this class and its helpers then before rendering the links\n * you have to add source and target properties to the original links which are\n * the associated link from/to objects.\n */\nclass ConnectedGraphBase {\n static addNode(node, nodeList, nodeMap) {\n if (nodeMap.hasOwnProperty(node.key)) {\n return nodeMap[node.key];\n }\n node.node = nodeList.length;\n nodeMap[node.key] = node.node;\n nodeList.push(node);\n return node.node;\n }\n initializeGraph(def) {\n // get the indicies for each key in the node list\n if (!def.nodes) {\n def.nodes = [];\n }\n let nodeMap = {};\n for (let i = 0; i < def.nodes.length; ++i) {\n let node = def.nodes[i];\n node.node = i;\n nodeMap[node.key] = i;\n }\n for (let i = 0; i < def.links.length; ++i) {\n let link = def.links[i];\n link.source = this.getLinkNode(link.from, def.nodes, nodeMap);\n link.target = this.getLinkNode(link.to, def.nodes, nodeMap);\n }\n }\n bind(renderer, graph, getSelectionString, getTooltipString) {\n let self = this;\n this.getSelectionString = getSelectionString ? getSelectionString :\n (data) => {\n return data.source.key + '-' + data.target.key;\n };\n this.getTooltipString = getTooltipString ? getTooltipString :\n (data) => {\n let ret;\n if (data.source) {\n ret = data.source.key + ' → ' + data.target.key + '\\n' + data.value;\n }\n else {\n ret = data.key + '\\n';\n if (data.value !== undefined) {\n ret += data.value;\n }\n }\n return ret;\n };\n this.onHoverChanged = function (event) {\n if (svg_helper_1.SVGRenderer.IS_RESIZING) {\n return;\n }\n renderer.focus(graph, event);\n if (graph.onHover) {\n graph.onHover(event);\n }\n return true;\n };\n let myPrevHover; // used in callbacks\n this.nodeHoverStart = function () {\n let selection = this.__data__.key;\n myPrevHover = selection;\n return self.onHoverChanged({\n caller: graph,\n event: ui_base_1.EventType.HoverStart,\n data: this.__data__,\n selection: selection\n });\n }; // onHoverEnter\n this.linkHoverStart = function () {\n let selection = self.getSelectionString(this.__data__);\n myPrevHover = selection;\n return self.onHoverChanged({\n caller: graph,\n event: ui_base_1.EventType.HoverStart,\n data: this.__data__,\n selection: selection\n });\n }; // onHoverEnter\n this.hoverEnd = function () {\n let ret = self.onHoverChanged({\n caller: graph,\n event: ui_base_1.EventType.HoverEnd,\n data: this.__data__,\n selection: myPrevHover\n });\n myPrevHover = undefined;\n return ret;\n }; // onHoverLeave\n this.getTooltipData = function (event) {\n let data = event.data.data;\n if (data) {\n this._dataTooltip.setData(self.getTooltipString(data), []);\n }\n return [];\n };\n // Create the tooltip\n // delay is 0 because the tooltip crosses divs and with a delay it causes\n // flashing\n let showTooltip = (d) => {\n if (d.def) {\n d = d.def;\n }\n let data = {\n tooltip: self._dataTooltip,\n data: d\n };\n let output;\n if (graph.onTooltip) {\n graph.onTooltip({ caller: graph, data: data });\n }\n else {\n this.getTooltipData({ caller: graph, data: data });\n }\n return true;\n };\n this._dataTooltip = new tooltip_1.CustomDivTooltip(this._tooltipId, 'tooltip-t');\n this._dataTooltip\n .setAnalyticsName(this._tooltipAnalyticsName)\n .setEnterCallback(showTooltip)\n .setMoveCallback(showTooltip)\n .setPlaceTooltipLeftRight()\n .alwaysRecalcWidth(true)\n .setDelay(0);\n this.getLinkNode = (linkNode, nodes, nodeMap) => {\n if (typeof linkNode === 'string' || linkNode instanceof String) {\n return ConnectedGraphBase.addNode({ key: linkNode }, nodes, nodeMap);\n }\n return ConnectedGraphBase.addNode(linkNode, nodes, nodeMap);\n };\n // link helper stuff\n this.getNextXY = (rect, portAlignment, fromXY, toXY) => {\n switch (portAlignment) {\n case ui_base_1.Alignment.Bottom:\n case ui_base_1.Alignment.Top:\n if (fromXY.x < toXY.x) {\n return { x: rect.x + rect.width + 10, y: fromXY.y };\n }\n else {\n return { x: rect.x - 10, y: fromXY.y };\n }\n case ui_base_1.Alignment.Left:\n case ui_base_1.Alignment.Right:\n if (fromXY.y < toXY.y) {\n return { x: fromXY.x, y: rect.y + rect.height + 10 };\n }\n else {\n return { x: fromXY.x, y: rect.y - 10 };\n }\n }\n };\n this.addElbow = (path, link, fromXY, toXY) => {\n // have to be a little careful here, some diagrams have ports that stick out and\n // some don't, the reason right now at least this does it based on alignment\n // is so those without ports that stick out look ok.\n // if we are going outside of our parent (in graphs with parents ) then it is very possible\n // we may have a collision so throw in some randomness in the elbow offset\n let isSameParent = link.source.node.from === link.source.node.to;\n let elbowOffset = 0;\n // get the entry point of the to node and draw the elbow line\n switch (link.target.alignment) {\n case ui_base_1.Alignment.Bottom:\n elbowOffset = isSameParent ? (fromXY.y + toXY.y) / 2 :\n (fromXY.y - toXY.y) * Math.random() + toXY.y;\n path.push({ x: fromXY.x, y: elbowOffset });\n path.push({ x: toXY.x, y: elbowOffset });\n break;\n case ui_base_1.Alignment.Top:\n elbowOffset = isSameParent ? (fromXY.y + toXY.y) / 2 :\n (toXY.y - fromXY.y) * Math.random() + fromXY.y;\n path.push({ x: fromXY.x, y: elbowOffset });\n path.push({ x: toXY.x, y: elbowOffset });\n break;\n case ui_base_1.Alignment.Left:\n elbowOffset = isSameParent ? (fromXY.x + toXY.x) / 2 :\n (toXY.x - fromXY.x) * Math.random() + fromXY.x;\n path.push({ x: elbowOffset, y: fromXY.y });\n path.push({ x: elbowOffset, y: toXY.y });\n break;\n case ui_base_1.Alignment.Right:\n elbowOffset = isSameParent ? (fromXY.x + toXY.x) / 2 :\n (fromXY.x - toXY.x) * Math.random() + fromXY.x;\n path.push({ x: elbowOffset, y: fromXY.y });\n path.push({ x: elbowOffset, y: toXY.y });\n break;\n }\n };\n /**\n * create the paths to render simple elbow links using the link information provided\n */\n this.getElbowLinkPath = (link, fromXY, toXY) => {\n let self = this;\n let path = [];\n // if we have ports that aren't opposite (like top/bottom or right/left) we need to\n // adjust the input and output ports a bit\n let portsAligned = (link.source.alignment === ui_base_1.Alignment.Left && link.target.alignment === ui_base_1.Alignment.Right) ||\n (link.source.alignment === ui_base_1.Alignment.Right && link.target.alignment === ui_base_1.Alignment.Left) ||\n (link.source.alignment === ui_base_1.Alignment.Top && link.target.alignment === ui_base_1.Alignment.Bottom) ||\n (link.source.alignment === ui_base_1.Alignment.Bottom && link.target.alignment === ui_base_1.Alignment.Top);\n // even if they are aligned if the nodes are positioned where the links will go through\n // the ports then we adjust the ports\n if (portsAligned) {\n switch (link.source.alignment) {\n case ui_base_1.Alignment.Left:\n if (toXY.x > fromXY.x) {\n portsAligned = false;\n }\n break;\n case ui_base_1.Alignment.Right:\n if (toXY.x < fromXY.x) {\n portsAligned = false;\n }\n break;\n case ui_base_1.Alignment.Top:\n if (toXY.y > fromXY.y) {\n portsAligned = false;\n }\n break;\n case ui_base_1.Alignment.Bottom:\n if (toXY.y < fromXY.y) {\n portsAligned = false;\n }\n break;\n }\n }\n if (portsAligned) {\n switch (link.target.alignment) {\n case ui_base_1.Alignment.Left:\n if (toXY.x < fromXY.x) {\n portsAligned = false;\n }\n break;\n case ui_base_1.Alignment.Right:\n if (toXY.x > fromXY.x) {\n portsAligned = false;\n }\n break;\n case ui_base_1.Alignment.Top:\n if (toXY.y < fromXY.y) {\n portsAligned = false;\n }\n break;\n case ui_base_1.Alignment.Bottom:\n if (toXY.y > fromXY.y) {\n portsAligned = false;\n }\n break;\n }\n }\n // if ports aren't aligned we need to add in a joint so it the link clears the node\n // need the currentXY as we draw our path to make the joints look nice and even\n if (portsAligned) {\n // simple case where everything is in a nice place just add in the link\n path.push(fromXY);\n this.addElbow(path, link, fromXY, toXY);\n path.push(toXY);\n }\n else {\n let currentXY;\n let nextXY;\n // if the links need some additional lines to make the links not run through the nodes\n // then do this...\n path.push(fromXY);\n // add additional link elbow due to help with alignment issues\n let sourceXY = link.source.node;\n currentXY = self.getNextXY(getCoordsAndCache(self._graphContainer, link.source.node), link.source.alignment, fromXY, toXY);\n path.push(currentXY);\n nextXY = self.getNextXY(getCoordsAndCache(self._graphContainer, link.target.node), link.target.alignment, toXY, fromXY);\n this.addElbow(path, link, currentXY, nextXY);\n path.push(nextXY);\n path.push(toXY);\n }\n return path;\n };\n this.configureZoom = (xExtent, yExtent, height, width) => {\n if (this._options.disableZoomViewUpdate) {\n return;\n }\n let self = this;\n let nodeWidth = (xExtent[1] - xExtent[0]);\n let nodeHeight = (yExtent[1] - yExtent[0]);\n let centerX = nodeWidth / 2 + xExtent[0];\n let centerY = nodeHeight / 2 + yExtent[0];\n let yScale = height / nodeHeight;\n let xScale = width / nodeWidth;\n let zoomedOutScale = Math.min(1, yScale, xScale);\n self._zoom.scaleExtent([zoomedOutScale / 3, 1.5]);\n if (self._options.fitToWindow) {\n let zoomLevel = d3.zoomIdentity\n .translate((width / 2) - (centerX * zoomedOutScale), (height / 2) - (centerY * zoomedOutScale))\n .scale(zoomedOutScale);\n self._graphContainer\n .call(self._zoom.transform, zoomLevel);\n }\n self._contextMenuItems.push({\n title: 'Reset Graph',\n action(elem, data, index) {\n if (self._options.fitToWindow) {\n let zoomLevel = d3.zoomIdentity\n .translate((width / 2) - (centerX * zoomedOutScale), (height / 2) - (centerY * zoomedOutScale))\n .scale(zoomedOutScale);\n self._graphContainer\n .transition()\n .duration(self.getAnimateDuration())\n .call(self._zoom.transform, zoomLevel);\n }\n else {\n self._graphContainer\n .transition()\n .duration(self.getAnimateDuration())\n .call(self._zoom.transform, d3.zoomIdentity);\n }\n }\n });\n };\n this.configureBrush = () => {\n let self = this;\n // a generic callback to handle brush selection events\n function onBrushCallback(coords, eventType) {\n if (!coords) {\n return false;\n }\n let chart = self._element;\n let options = {\n event: eventType,\n xStart: coords[0][0],\n xEnd: coords[1][0],\n yStart: coords[0][1],\n yEnd: coords[1][1],\n caller: chart\n };\n if (chart.onBrush) {\n chart.onBrush(options);\n }\n return true;\n }\n let updateBrushTooltip = function (coords) {\n if (coords === null) {\n return;\n }\n self._brushTooltip.setData('Selection', '(' + coords[0][0].toFixed(2) + ', ' + coords[0][1].toFixed(2) + ') - ' +\n '(' + coords[1][0].toFixed(2) + ', ' + coords[1][1].toFixed(2) + ')');\n };\n let brushStart = function (coords) {\n self._brush.moveToFront();\n updateBrushTooltip(coords);\n self._dataTooltip.onMouseLeave(d3.event);\n self._brushTooltip.onMouseEnter(d3.event);\n self._brushTooltip.onMouseMove(d3.event);\n return onBrushCallback(coords, ui_base_1.EventType.BrushStart);\n };\n let brushMove = function (coords) {\n updateBrushTooltip(coords);\n self._dataTooltip.onMouseLeave(d3.event);\n self._brushTooltip.onMouseMove(d3.event);\n return onBrushCallback(coords, ui_base_1.EventType.BrushMove);\n };\n let brushEnd = function (coords) {\n self._brushTooltip.onMouseLeave(d3.event);\n let brushContextMenuItems = self._element.brushContextMenuItems;\n if (coords && brushContextMenuItems) {\n let contextMenuItems = [];\n for (let i = 0; i < brushContextMenuItems.length; ++i) {\n let bcmi = brushContextMenuItems[i];\n contextMenuItems.push({\n title: bcmi.title,\n action(elem, data, index) {\n data.xStart = coords[0][0];\n data.xEnd = coords[1][0];\n data.yStart = coords[0][1];\n data.yEnd = coords[1][1];\n bcmi.action(elem, data, index);\n onBrushCallback(coords, ui_base_1.EventType.BrushEnd);\n }\n });\n }\n context_menu_1.showContextMenu(d3.event.sourceEvent, {\n event: ui_base_1.EventType.BrushEnd,\n caller: self._element\n }, contextMenuItems);\n }\n else {\n let menus = document.getElementsByClassName('context-menu');\n if (menus.length > 0) {\n menus[0].style.display = 'none';\n }\n }\n // when moving with overlay for zoomed region leave the brush on top\n if (!self._options.forceBrushToFront) {\n self._brush.moveToBack();\n }\n return true;\n };\n // the selection brush\n self._svg.select('.brush').remove();\n self._brushTooltip = new tooltip_1.OneLineTooltip('brush', 'tooltip-t');\n self._brushTooltip\n .setPlaceTooltipLeftRight()\n .alwaysRecalcWidth(true)\n .setDelay(0);\n self._brush = new svg_helper_1.Brush()\n .setXY(true)\n .setTarget(self._svg.append('g').attr('class', 'brush'))\n .setStartCallback(brushStart)\n .setMoveCallback(brushMove)\n .setEndCallback(brushEnd)\n .setRect(self._svgRect)\n .ready();\n self._brush.moveToBack();\n };\n }\n configureView(height, width) {\n let xExtent = [Number.MAX_VALUE, -Number.MAX_VALUE];\n let yExtent = [Number.MAX_VALUE, -Number.MAX_VALUE];\n let graph = this._element;\n graph.nodes.forEach(function (nodeDef) {\n xExtent[0] = Math.min(xExtent[0], nodeDef.x);\n xExtent[1] = Math.max(xExtent[1], nodeDef.x);\n yExtent[0] = Math.min(yExtent[0], nodeDef.y);\n yExtent[1] = Math.max(yExtent[1], nodeDef.y);\n });\n height = this.renderLegend(height);\n this.bindZoom();\n this.configureZoom(xExtent, yExtent, height, width);\n this.configureContextMenu();\n if (this._svg && !this._options.disableBrush) {\n // set timeout to let svg size change\n let self = this;\n setTimeout(function () {\n self.configureBrush();\n }, 0);\n }\n }\n}\nexports.ConnectedGraphBase = ConnectedGraphBase;\nclass DiagramBase extends ConnectedGraphBase {\n bind(renderer, graph) {\n ConnectedGraphBase.prototype.bind.call(this, renderer, graph, (data) => {\n return data.source.key + '-' + data.target.key;\n }, (data) => {\n let ret;\n if (data.from) {\n if (data.linkType &&\n (data.linkType & graph_1.LinkType.Directional) === graph_1.LinkType.Directional) {\n ret = data.from + ' \\u2192 ' + data.to + '\\n';\n }\n else {\n ret = data.from + ' \\u2194 ' + data.to + '\\n';\n }\n }\n else if (data.port) {\n ret = data.node.key + ':' + data.port.key;\n }\n else {\n ret = data.label ? data.label : data.key;\n }\n return ret;\n });\n }\n}\nexports.DiagramBase = DiagramBase;\nclass D3ConnectedGraphSVG extends svg_helper_1.SVGRenderer {\n constructor(element, renderer, parent) {\n super();\n this.initialize(element, renderer, parent);\n this._graphContainer = this._svg;\n ConnectedGraphBase.prototype.bind.call(this, renderer, element);\n }\n renderLegend(graphHeight) {\n let self = this;\n let graph = self._element;\n if (graph.legend) {\n let legendItems = [];\n for (let i = 0; i < graph.nodes.length; ++i) {\n let node = graph.nodes[i];\n let key = node.type && node.type.length > 0 ? node.type[0] : node.key;\n let elem = self._svg.select('.node.' + key);\n legendItems.push({\n key: key,\n color: elem.style('fill'),\n opacity: elem.style('opacity')\n });\n }\n // group colors mess up unless we remove duplicates here\n let itemNames = {};\n let legendMaxChars = 0;\n for (let i = 0; i < legendItems.length; ++i) {\n let item = legendItems[i];\n if (!itemNames.hasOwnProperty(item.key)) {\n itemNames[item.key] = true;\n legendMaxChars = Math.max(item.key.length, legendMaxChars);\n }\n }\n // render the legend\n let marginTop = 10;\n let d3Legend;\n switch (graph.legend.alignment) {\n case ui_base_1.Alignment.Top:\n d3Legend = new svg_helper_1.D3Legend(this._svg, graph.legend, graph.title, new ui_base_1.Rect(0, marginTop, this._svgRect.width, this._svgRect.height));\n break;\n case ui_base_1.Alignment.Bottom:\n d3Legend = new svg_helper_1.D3Legend(this._svg, graph.legend, graph.title, new ui_base_1.Rect(0, this._svgRect.height - this.LEGEND_PADDING.Y.BOTTOM, this._svgRect.width, this._svgRect.height));\n break;\n case ui_base_1.Alignment.Left:\n d3Legend = new svg_helper_1.D3Legend(this._svg, graph.legend, graph.title, new ui_base_1.Rect(0, marginTop, this._svgRect.width, this._svgRect.height));\n break;\n case ui_base_1.Alignment.Right:\n d3Legend = new svg_helper_1.D3Legend(this._svg, graph.legend, graph.title, new ui_base_1.Rect(this._svgRect.width - (legendMaxChars * 10), marginTop, this._svgRect.width, this._svgRect.height));\n break;\n }\n d3Legend.addItems(legendItems);\n d3Legend.render();\n if (!graphHeight) {\n graphHeight = this._options.height;\n }\n if (graph.legend.alignment === ui_base_1.Alignment.Top ||\n graph.legend.alignment === ui_base_1.Alignment.Bottom) {\n graphHeight += d3Legend.getRenderedRect().height;\n }\n }\n return graphHeight;\n }\n bindZoom() {\n if (this._options.disableZoomViewUpdate) {\n return;\n }\n let self = this;\n let graphArea = self._svg.select('.graphArea');\n // add graph view area to allow us to pan/zoom it\n function performZoom() {\n graphArea.attr('transform', d3.event.transform);\n }\n self._zoom = d3.zoom().on('zoom', performZoom);\n self._svg.call(self._zoom);\n if (!self._element.api) {\n self._element.api = {};\n }\n self._element.api.zoom = function (event) {\n if (event.data) {\n self._zoom.scaleTo(self._parent, event.data);\n }\n };\n self._element.api.pan = function (event) {\n self._zoom.translateTo(self._parent, event.xStart, event.yStart);\n };\n }\n configureContextMenu() {\n let self = this;\n let graph = self._element;\n if (graph.contextMenuItems) {\n for (let i = 0; i < graph.contextMenuItems.length; ++i) {\n self._contextMenuItems.push(graph.contextMenuItems[i]);\n }\n }\n if (self.saveImage && self._options.enableSaveAsImage) {\n let saveImageItem = {\n title: 'Save As Image',\n action: function (elem, data, index) {\n self.saveImage();\n },\n disabled: false // optional, defaults to false\n };\n self._contextMenuItems.push(saveImageItem);\n }\n // create anyc context menu\n if (self._contextMenuItems.length > 0) {\n self._parent.on('contextmenu', function (event) {\n context_menu_1.showContextMenu(d3.event, undefined, self._contextMenuItems);\n });\n }\n }\n initializeGraphArea(options) {\n this.loadOptions(options);\n this._svg.selectAll('*').remove();\n let graphArea = this._svg.append('g').classed('graphArea', true);\n this._contextMenuItems = [];\n return graphArea;\n }\n /**\n * configure the hover requirements for a node\n */\n configureLinkHover(elem, link) {\n let self = this;\n elem.on('mouseenter', self.linkHoverStart)\n .on('mouseleave', self.hoverEnd);\n let graph = this._element;\n svg_helper_1.addClickHelper(elem, self.getOptions(), graph.onClick, graph.onDoubleClick, graph.contextMenuItems, self._dataTooltip, graph, link.def);\n let htmlNode = elem.node();\n htmlNode['__data__'] = link;\n }\n initializeLinkLayer(graphArea) {\n // go through and compute the link paths\n graphArea.append('g')\n .classed('links', true);\n }\n // TODO? Move this to D3ConnectedGraph so the simple graph can use this too?\n renderLinkHelper(graphArea, renderedLinks, isUpdate) {\n let self = this;\n // render the links\n let line = d3.line()\n .x(function (d) { return d.x; })\n .y(function (d) { return d.y; });\n let curve = d3.line()\n .x(function (d) { return d.x; })\n .y(function (d) { return d.y; })\n .curve(d3.curveBasis);\n let linkGroup = graphArea.select('.links');\n let getClasses = function (link) {\n let classes = link.def.from + '-' + link.def.to +\n ' ' + link.def.from + ' ' + link.def.to;\n if (link.def.type && link.def.type.length > 0) {\n for (let idx = 0; idx < link.def.type.length; ++idx) {\n classes += ' ' + utilities_1.getSelectionName(link.def.type[idx]);\n }\n }\n return classes;\n };\n let getColor = function (link) {\n if (link.def.color) {\n return link.def.color;\n }\n if (link.def.type && link.def.type.length > 0) {\n for (let idx = 0; idx < link.def.type.length; ++idx) {\n if (self._colorMgr.hasColor(link.def.type[idx])) {\n return self._colorMgr.getColor(link.def.type[idx]);\n }\n }\n }\n return 'black';\n };\n // remove this existing link if it exists as this is render update\n if (isUpdate) {\n renderedLinks.forEach(function (link) {\n let d3Link = graphArea.selectAll('.' + link.def.from + '-' + link.def.to +\n '.' + link.def.from + '.' + link.def.to);\n d3Link.remove();\n });\n }\n renderedLinks.forEach(function (renderedLink) {\n let renderedLinkDef = renderedLink.def;\n // could cache some of this stuff for performance reasons\n let fromXY = self.getLinkStartXY(renderedLink);\n let toXY = self.getLinkEndXY(renderedLink);\n if ((renderedLinkDef.linkType & graph_1.LinkType.Linear) === graph_1.LinkType.Linear) {\n renderedLink.path = [fromXY, toXY];\n }\n else {\n renderedLink.path = self.getElbowLinkPath(renderedLink, fromXY, toXY);\n }\n let linkRenderer;\n if (renderedLinkDef.linkType & graph_1.LinkType.Curve) {\n linkRenderer = curve;\n }\n else {\n linkRenderer = line;\n }\n let newLink = linkGroup\n .append('path')\n .attr('d', linkRenderer(renderedLink.path))\n .classed(getClasses(renderedLink), true)\n .classed('link', true)\n .attr('fill', 'none')\n .style('stroke', getColor(renderedLink))\n .attr('stroke-width', renderedLinkDef.width ? renderedLinkDef.width : 2);\n let arrow;\n let endPoint;\n if (renderedLinkDef.linkType & graph_1.LinkType.Directional ||\n renderedLinkDef.linkType & graph_1.LinkType.Bidirectional) {\n endPoint = renderedLink.path[renderedLink.path.length - 1];\n arrow = svg_helper_1.Arrow.createArrow(linkGroup, 4)\n .classed(getClasses(renderedLink), true)\n .classed('arrow', true)\n .attr('fill', getColor(renderedLink))\n .attr('transform', 'translate(' + endPoint.x + ',' + endPoint.y + ') ' +\n 'rotate( ' + svg_helper_1.Arrow.getAngle(renderedLink.path[renderedLink.path.length - 2], endPoint) + ')');\n }\n if (renderedLinkDef.linkType & graph_1.LinkType.Bidirectional) {\n svg_helper_1.Arrow.createArrow(linkGroup, 4)\n .classed(getClasses(renderedLink), true)\n .classed('arrow', true)\n .attr('fill', getColor(renderedLink))\n .attr('transform', 'translate(' + renderedLink.path[0].x + ',' + renderedLink.path[0].y + ') ' +\n 'rotate( ' + svg_helper_1.Arrow.getAngle(renderedLink.path[1], renderedLink.path[0]) + ')');\n }\n if (!isUpdate && self.getAnimateDuration() !== 0) {\n svg_helper_1.animatePath(newLink, self.getAnimateDuration());\n if (arrow) {\n svg_helper_1.Arrow.animateArrow(newLink, arrow, self.getAnimateDuration());\n }\n }\n self.configureLinkHover(newLink, renderedLink);\n self._dataTooltip.setTarget(newLink);\n });\n }\n getHeightWidth(options) {\n if (!options.height) {\n let node = this._parent.node();\n if (node) {\n let bounds = node.getBoundingClientRect();\n options.height = bounds.height;\n if (!options.height) {\n options.height = 400;\n }\n }\n }\n options.width = options.width ? options.width :\n this._parent.node().getBoundingClientRect().width;\n }\n configureView() {\n let height = this._options.height;\n let width = this._options.width;\n this._svg\n .attr('width', width)\n .attr('height', height);\n ConnectedGraphBase.prototype.configureView.call(this, height, width);\n }\n}\nexports.D3ConnectedGraphSVG = D3ConnectedGraphSVG;\nclass D3ConnectedGraphPixi extends renderer_1.UIElementRenderer {\n constructor(element, renderer, parent) {\n super();\n this._element = element;\n this._renderer = renderer;\n this._options = {};\n this._contextMenuItems = [];\n this._tooltipId = 'd3-tooltip';\n this._tooltipAnalyticsName = 'd3-ui-widget-toolkit';\n this._parent = parent;\n this._graphContainer = parent;\n ConnectedGraphBase.prototype.bind.call(this, renderer, element);\n }\n /**\n * @deprecated ('Deprecated since 1.14.0 in favor of focus. Will be removed in 2.x')\n * hover event\n *\n * @param event the event to pass to the renderer\n */\n hover(event) {\n this.focus(event);\n }\n /**\n * bring an item into focus\n *\n * @param event the event to focus on\n */\n focus(event) {\n this._interactionState.focus(event);\n }\n /**\n * select an item\n *\n * @param event the event to item on\n */\n select(event) {\n this._interactionState.select(event);\n }\n /**\n * brush event\n * @param event the event to pass to the renderer\n */\n brush(event) {\n }\n changeCursor(event) {\n }\n getTooltipData(event) {\n return [{ source: this._element, group: '', metrics: {} }];\n }\n getAnimateDuration() {\n return this._options.animateDuration !== undefined ? this._options.animateDuration : 1000;\n }\n bindZoom() {\n if (this._options.disableZoomViewUpdate) {\n return;\n }\n let self = this;\n let stage = self._stage;\n function zoom() {\n // itemDragging is a workaround to have d3 and pixi coexist for events\n if (!stage.itemDragging) {\n stage.position.set(d3.event.transform.x, d3.event.transform.y);\n stage.scale.set(d3.event.transform.k, d3.event.transform.k);\n self._pixiHelper.render();\n }\n }\n self._zoom = d3.zoom().on('zoom', zoom);\n self._parent.call(self._zoom);\n // BIND ZOOM API\n if (!self._element.api) {\n self._element.api = {};\n }\n self._element.api.zoom = function (event) {\n if (event.data) {\n self._zoom.scaleTo(self._parent, event.data);\n }\n };\n self._element.api.pan = function (event) {\n self._zoom.translateTo(self._parent, event.xStart, event.yStart);\n };\n }\n _focus(selection) {\n if (selection) {\n let items = this._pixiHelper.getSelection(selection);\n if (items) {\n items.forEach(function (elem) {\n elem._prevTint = elem.tint;\n elem.tint = 0x888888;\n elem.alpha = 0x88;\n });\n }\n this._pixiHelper.render();\n }\n }\n _unfocus(selection) {\n let items = this._pixiHelper.getSelection(selection);\n if (items) {\n items.forEach(function (elem) {\n elem.tint = elem._prevTint;\n elem.alpha = 0xFF;\n });\n }\n this._pixiHelper.render();\n }\n _select(selection) {\n if (selection) {\n let items = this._pixiHelper.getSelection(selection);\n if (items) {\n items.forEach(function (elem) {\n elem._prevTint = elem.tint;\n elem.tint = 0x888888;\n elem.alpha = 0x88;\n });\n }\n this._pixiHelper.render();\n }\n }\n _unselect(selection) {\n let items = this._pixiHelper.getSelection(selection);\n if (items) {\n items.forEach(function (elem) {\n elem.tint = elem._prevTint;\n elem.alpha = 0xFF;\n });\n }\n this._pixiHelper.render();\n }\n configureInteractionVisualization() {\n let self = this;\n this._interactionState = new interaction_state_1.InteractionState(function (selection) {\n self._focus(selection);\n }, function (selection) {\n self._unfocus(selection);\n }, false, function (selection) {\n self._select(selection);\n }, function (selection) {\n self._unselect(selection);\n });\n }\n configureContextMenu() {\n let self = this;\n let graph = self._element;\n if (graph.contextMenuItems) {\n for (let i = 0; i < graph.contextMenuItems.length; ++i) {\n self._contextMenuItems.push(graph.contextMenuItems[i]);\n }\n }\n // create anyc context menu\n if (self._contextMenuItems.length > 0) {\n self._parent.on('contextmenu', function (event) {\n context_menu_1.showContextMenu(d3.event, undefined, self._contextMenuItems);\n });\n }\n }\n initializeGraphArea(options) {\n this._contextMenuItems = [];\n // create the graph area\n utilities_1.merge(this._options, options);\n let first = this._pixiHelper === undefined;\n if (first) {\n this._pixiHelper = new pixi_helper_1.PIXIHelper(!this.getOptions().forceCanvasRenderer);\n this._pixi = this._pixiHelper.getRenderer();\n this._parent.node().appendChild(this._pixi.view);\n // Create the main stage for your display objects\n this._stage = new PIXI.Container();\n this._stage.interactive = true;\n this.createArrowTexture();\n this.configureInteractionVisualization();\n }\n this._stage.removeChildren();\n return this._stage;\n }\n createArrowTexture() {\n let arrow = new PIXI.Graphics();\n arrow.beginFill(0x000000);\n arrow.lineStyle(0, 0, 0);\n let arrowSize = 9;\n let rotation = 1.1;\n arrow.moveTo(0, 0);\n arrow.lineTo(arrowSize * Math.cos(rotation), arrowSize * Math.sin(rotation));\n arrow.lineTo(-arrowSize * Math.cos(rotation), arrowSize * Math.sin(rotation));\n arrow.lineTo(0, 0);\n this._arrowTexture = this._pixi.generateTexture(arrow, PIXI.SCALE_MODES.LINEAR, 10);\n }\n createArrow(stage, to, from, linkType, alignment) {\n let arrow = new PIXI.Sprite(this._arrowTexture);\n arrow.anchor = new PIXI.ObservablePoint(undefined, undefined, .5, 0);\n arrow.x = to.x;\n arrow.y = to.y;\n arrow.rotation = -Math.atan2(to.x - from.x, to.y - from.y);\n switch (alignment) {\n case ui_base_1.Alignment.Left:\n arrow.rotation += Math.PI;\n break;\n case ui_base_1.Alignment.Right:\n arrow.rotation += -Math.PI;\n break;\n case ui_base_1.Alignment.Top:\n arrow.rotation += 3 * Math.PI / 2;\n break;\n case ui_base_1.Alignment.Bottom:\n arrow.rotation += -Math.PI / 2;\n break;\n }\n stage.addChild(arrow);\n }\n renderLinkHelper(stage, renderedLinks) {\n let self = this;\n if (self._pixiLinks) {\n stage.removeChild(self._pixiLinks);\n self._pixiLinks.destroy();\n stage.removeChild(self._pixiArrows);\n self._pixiArrows.destroy();\n }\n self._pixiLinks = new PIXI.Graphics();\n stage.addChildAt(self._pixiLinks, 0);\n self._pixiArrows = new PIXI.Container();\n stage.addChildAt(self._pixiArrows, 1);\n // remove this existing link if it exists as this is render update\n renderedLinks.forEach(function (renderedLink) {\n let renderedLinkDef = renderedLink.def;\n self._pixiLinks.lineStyle(2, 0x888888, .4);\n let fromXY = self.getLinkStartXY(renderedLink);\n let toXY = self.getLinkEndXY(renderedLink);\n if (renderedLinkDef.linkType & graph_1.LinkType.Linear) {\n renderedLink.path = [fromXY, toXY];\n }\n else {\n renderedLink.path = self.getElbowLinkPath(renderedLink, fromXY, toXY);\n }\n if (renderedLinkDef.linkType & graph_1.LinkType.Curve) {\n self._pixiLinks.moveTo(renderedLink.path[0].x, renderedLink.path[0].y);\n self._pixiLinks.bezierCurveTo(renderedLink.path[1].x, renderedLink.path[1].y, renderedLink.path[renderedLink.path.length - 2].x, renderedLink.path[renderedLink.path.length - 2].y, renderedLink.path[renderedLink.path.length - 1].x, renderedLink.path[renderedLink.path.length - 1].y);\n }\n else {\n self._pixiLinks.moveTo(renderedLink.path[0].x, renderedLink.path[0].y);\n for (let i = 1; i < renderedLink.path.length; ++i) {\n self._pixiLinks.lineTo(renderedLink.path[i].x, renderedLink.path[i].y);\n }\n }\n if (renderedLinkDef.linkType & graph_1.LinkType.Bidirectional) {\n self.createArrow(self._pixiArrows, renderedLink.path[0], renderedLink.path[1], renderedLinkDef.linkType, renderedLink.source.alignment);\n }\n if (renderedLinkDef.linkType & graph_1.LinkType.Directional ||\n renderedLinkDef.linkType & graph_1.LinkType.Bidirectional) {\n self.createArrow(self._pixiArrows, renderedLink.path[renderedLink.path.length - 1], renderedLink.path[renderedLink.path.length - 2], renderedLinkDef.linkType, renderedLink.target.alignment);\n }\n });\n }\n renderLegend(height) {\n return height;\n }\n getHeightWidth(options) {\n if (!options.height) {\n let node = this._parent.node();\n if (node) {\n let bounds = node.getBoundingClientRect();\n options.height = bounds.height;\n if (!options.height) {\n options.height = 400;\n }\n }\n }\n options.width = options.width ? options.width :\n this._parent.node().getBoundingClientRect().width;\n }\n configureView() {\n let height = this._options.height;\n let width = this._options.width;\n this._pixi.resize(width, height);\n ConnectedGraphBase.prototype.configureView.call(this, height, width);\n }\n}\nexports.D3ConnectedGraphPixi = D3ConnectedGraphPixi;\nfunction getCoordsAndCache(svg, node) {\n if (node.x === undefined) {\n if (!node.d3selection) {\n node.d3selection = d3.select(this);\n }\n utilities_1.merge(node, svg_helper_1.convertToSVGCoords(svg, node.d3selection));\n }\n return node;\n}\nexports.getCoordsAndCache = getCoordsAndCache;\n\n\n//# sourceURL=webpack://UWT/./src/core/connected-graph/base.ts?");
/***/ }),
/***/ "./src/core/connected-graph/force.ts":
/*!*******************************************!*\
!*** ./src/core/connected-graph/force.ts ***!
\*******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ui_base_1 = __webpack_require__(/*! ../../interface/ui-base */ \"./src/interface/ui-base.ts\");\nconst simple_1 = __webpack_require__(/*! ./simple */ \"./src/core/connected-graph/simple.ts\");\nconst renderer_1 = __webpack_require__(/*! ../renderer */ \"./src/core/renderer.ts\");\nconst d3 = __webpack_require__(/*! d3 */ \"d3\");\nconst base_1 = __webpack_require__(/*! ./base */ \"./src/core/connected-graph/base.ts\");\nclass D3ForceGraph extends simple_1.D3SimpleGraph {\n constructor(element, renderer, parent) {\n super(element, renderer, parent);\n base_1.ConnectedGraphBase.prototype.initializeGraph.call(this, element);\n }\n render(options) {\n let self = this;\n let graph = self._element;\n this.getHeightWidth(this._options);\n let height = this._options.height;\n let width = this._options.width;\n var simulation = d3.forceSimulation()\n .force('link', d3.forceLink().id(function (d) { return d.node; }))\n .force('charge', d3.forceManyBody())\n .force('center', d3.forceCenter(width / 2, height / 2));\n simulation\n .nodes(graph.nodes)\n .on('tick', ticked);\n let force = simulation.force('link');\n force.links(graph.links);\n function ticked() {\n links\n .attr('x1', function (d) { return d.source.x; })\n .attr('y1', function (d) { return d.source.y; })\n .attr('x2', function (d) { return d.target.x; })\n .attr('y2', function (d) { return d.target.y; });\n nodes\n .attr('cx', function (d) { return d.x; })\n .attr('cy', function (d) { return d.y; });\n }\n function dragstarted(d) {\n if (!d3.event.active)\n simulation.alphaTarget(0.3).restart();\n d.fx = d.x;\n d.fy = d.y;\n }\n function dragged(d) {\n d.fx = d3.event.x;\n d.fy = d3.event.y;\n }\n function dragended(d) {\n if (!d3.event.active)\n simulation.alphaTarget(0);\n d.fx = null;\n d.fy = null;\n }\n let graphArea = self.initializeGraphArea(options);\n let links = this.renderLinks(graphArea);\n let nodes = this.renderNodes(graphArea, dragstarted, dragged, dragended);\n self.configureView();\n }\n}\nexports.D3ForceGraph = D3ForceGraph;\nrenderer_1.D3Renderer.register(ui_base_1.UIType.ForceDirectedGraph, D3ForceGraph);\n\n\n//# sourceURL=webpack://UWT/./src/core/connected-graph/force.ts?");
/***/ }),
/***/ "./src/core/connected-graph/hierarchy.ts":
/*!***********************************************!*\
!*** ./src/core/connected-graph/hierarchy.ts ***!
\***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ui_base_1 = __webpack_require__(/*! ../../interface/ui-base */ \"./src/interface/ui-base.ts\");\nconst utilities_1 = __webpack_require__(/*! ../utilities */ \"./src/core/utilities.ts\");\nconst svg_helper_1 = __webpack_require__(/*! ../svg-helper */ \"./src/core/svg-helper.ts\");\nconst base_1 = __webpack_require__(/*! ./base */ \"./src/core/connected-graph/base.ts\");\nconst renderer_1 = __webpack_require__(/*! ../renderer */ \"./src/core/renderer.ts\");\nclass D3HierarchyGraph extends base_1.D3ConnectedGraphSVG {\n constructor(element, renderer, parent) {\n super(element, renderer, parent);\n // undo auto width from initialize call\n this._options.width = undefined;\n this._nodes = {};\n this._graphRect = this._svgRect;\n let self = this;\n this.getLinkStartXY = function (link) {\n let from = this._nodes[link.source.node.def.key];\n let fromRect = base_1.getCoordsAndCache(self._svg, from);\n let fromXY = { x: undefined, y: undefined };\n let linkOffset = 0;\n // get the exit point of the from node\n switch (link.source.alignment) {\n case ui_base_1.Alignment.Bottom:\n linkOffset = link.source.endPoint *\n ((fromRect.right - fromRect.x) / (from.ports.bottom.length + 1));\n fromXY.x = fromRect.x + linkOffset;\n fromXY.y = fromRect.bottom;\n break;\n case ui_base_1.Alignment.Top:\n linkOffset = link.source.endPoint *\n ((fromRect.right - fromRect.x) / (from.ports.top.length + 1));\n fromXY.x = fromRect.x + linkOffset;\n fromXY.y = fromRect.y;\n break;\n case ui_base_1.Alignment.Left:\n linkOffset = link.source.endPoint *\n ((fromRect.bottom - fromRect.y) / (from.ports.left.length + 1));\n fromXY.x = fromRect.x;\n fromXY.y = fromRect.y + linkOffset;\n break;\n case ui_base_1.Alignment.Right:\n linkOffset = link.source.endPoint *\n ((fromRect.bottom - fromRect.y) / (from.ports.right.length + 1));\n fromXY.x = fromRect.right;\n fromXY.y = fromRect.y + linkOffset;\n break;\n }\n return fromXY;\n };\n this.getLinkEndXY = function (link) {\n let to = this._nodes[link.target.node.def.key];\n let toRect = base_1.getCoordsAndCache(self._svg, to);\n let toXY = { x: undefined, y: undefined };\n let linkOffset = 0;\n // get the entry point of the to node and draw the elbow line\n switch (link.target.alignment) {\n case ui_base_1.Alignment.Bottom:\n linkOffset = link.target.endPoint *\n ((toRect.right - toRect.x) / (to.ports.bottom.length + 1));\n toXY.x = toRect.x + linkOffset;\n toXY.y = toRect.bottom;\n break;\n case ui_base_1.Alignment.Top:\n linkOffset = link.target.endPoint *\n ((toRect.right - toRect.x) / (to.ports.top.length + 1));\n toXY.x = toRect.x + linkOffset;\n toXY.y = toRect.y;\n break;\n case ui_base_1.Alignment.Left:\n linkOffset = link.target.endPoint *\n ((toRect.bottom - toRect.y) / (to.ports.left.length + 1));\n toXY.x = toRect.x;\n toXY.y = toRect.y + linkOffset;\n break;\n case ui_base_1.Alignment.Right:\n linkOffset = link.target.endPoint *\n ((toRect.bottom - toRect.y) / (to.ports.right.length + 1));\n toXY.x = toRect.right;\n toXY.y = toRect.y + linkOffset;\n break;\n }\n return toXY;\n };\n }\n static isNodeRendered(renderedNode) {\n return renderedNode.d3selection;\n }\n /**\n * get width or height not including any padding, but including internal margins\n * get a property of the rect associated with a node. Used to get dimensions\n * for sizing purposes.\n *\n */\n getRectPropertyMax(children, prop) {\n let ret = 0;\n if (children) {\n for (let i = 0; i < children.length; ++i) {\n let child = this._nodes[children[i].key];\n if (D3HierarchyGraph.isNodeRendered(child)) {\n ret = Math.max(child.rect[prop], ret);\n }\n }\n }\n return ret;\n }\n /**\n * get width or height not including any padding, but including internal margins\n * get a property of the rect associated with a node. Used to get dimensions\n * for sizing purposes.\n *\n */\n getStylePropertyMax(children, prop) {\n let ret = 0;\n if (children) {\n for (let i = 0; i < children.length; ++i) {\n let child = this._nodes[children[i].key];\n if (D3HierarchyGraph.isNodeRendered(child)) {\n let propValue = parseInt(svg_helper_1.getStyle(child.d3selection)[prop]);\n ret = Math.max(propValue, ret);\n }\n }\n }\n return ret;\n }\n /**\n * get height not including any padding, but including internal margins\n * sum a property of the rect associated with a node. Used to get dimensions\n * for sizing purposes\n */\n sumVertical(children, defaultMargin) {\n let ret = 0;\n if (children) {\n let marginTop = 0;\n let marginBottom = 0;\n let cssMargin;\n let hasChildren = false;\n for (let i = 0; i < children.length; ++i) {\n let child = this._nodes[children[i].key];\n if (D3HierarchyGraph.isNodeRendered(child)) {\n if (hasChildren) {\n // handle top margin\n cssMargin = parseInt(svg_helper_1.getStyle(child.d3selection)['margin-top']);\n marginTop = cssMargin ? cssMargin : defaultMargin;\n if (marginTop > marginBottom) {\n ret += marginTop - marginBottom;\n }\n }\n let rect = svg_helper_1.convertToSVGCoords(this._svg, child.d3selection);\n ret += Math.max(rect.height, child.rect.height);\n // handle bottom margin\n cssMargin = parseInt(svg_helper_1.getStyle(child.d3selection)['margin-bottom']);\n marginBottom = cssMargin ? cssMargin : defaultMargin;\n ret += marginBottom;\n hasChildren = true;\n }\n }\n if (hasChildren) {\n ret -= marginBottom;\n }\n }\n return ret;\n }\n /**\n * move nodes that use a vertical alignment into the right position\n */\n transformVerticalNodes(xMid, y, children, defaultMargin) {\n let ret = false;\n if (children) {\n let marginTop = 0;\n let marginBottom = 0;\n let cssMargin;\n let hasChildren = false;\n for (let i = 0; i < children.length; ++i) {\n let child = this._nodes[children[i].key];\n if (D3HierarchyGraph.isNodeRendered(child)) {\n ret = true;\n let rect = svg_helper_1.convertToSVGCoords(this._svg, child.d3selection);\n let x = xMid - Math.max(rect.width, child.rect.width) / 2;\n if (hasChildren) {\n // handle top margin\n let cssMargin = parseInt(svg_helper_1.getStyle(child.d3selection)['margin-top']);\n marginTop = cssMargin ? cssMargin : defaultMargin;\n if (marginTop > marginBottom) {\n y += marginTop - marginBottom;\n }\n }\n child.d3selection\n .transition()\n .duration(this.getAnimateDuration())\n .attr('transform', 'translate(' + x + ', ' + y + ')');\n child.rect.x = x;\n child.rect.y = y;\n y += child.rect['height'];\n cssMargin = parseInt(svg_helper_1.getStyle(child.d3selection)['margin-bottom']);\n marginBottom = cssMargin ? cssMargin : defaultMargin;\n y += marginBottom;\n hasChildren = true;\n }\n }\n }\n return ret;\n }\n /**\n * get width not including any padding, but including internal margins\n * sum a property of the rect associated with a node. Used to get dimensions\n * for sizing purposes\n */\n sumHorizontal(children, defaultMargin) {\n let ret = 0;\n if (children) {\n let marginLeft = 0;\n let marginRight = 0;\n let cssMargin;\n let hasChildren = false;\n for (let i = 0; i < children.length; ++i) {\n let child = this._nodes[children[i].key];\n if (D3HierarchyGraph.isNodeRendered(child)) {\n if (hasChildren) {\n // handle left margin\n cssMargin = parseInt(svg_helper_1.getStyle(child.d3selection)['margin-left']);\n marginLeft = cssMargin ? cssMargin : defaultMargin;\n if (marginLeft > marginRight) {\n ret += marginLeft - marginRight;\n }\n }\n let rect = svg_helper_1.convertToSVGCoords(this._svg, child.d3selection);\n ret += Math.max(rect.width, child.rect.width);\n // handle right margin\n cssMargin = parseInt(svg_helper_1.getStyle(child.d3selection)['margin-right']);\n marginRight = cssMargin ? cssMargin : defaultMargin;\n ret += marginRight;\n hasChildren = true;\n }\n }\n if (hasChildren) {\n ret -= marginRight;\n }\n }\n return ret;\n }\n /**\n * move nodes that use a horizontal alignment into the right position\n */\n transformHorizontalNodes(x, yMid, children, defaultMargin) {\n let ret = false;\n if (children) {\n let marginLeft = 0;\n let marginRight = 0;\n let cssMargin;\n let hasChildren = false;\n for (let i = 0; i < children.length; ++i) {\n let child = this._nodes[children[i].key];\n if (D3HierarchyGraph.isNodeRendered(child)) {\n ret = true;\n let rect = svg_helper_1.convertToSVGCoords(this._svg, child.d3selection);\n let y = yMid - Math.max(rect.height, child.rect.height) / 2;\n if (hasChildren) {\n // handle top margin\n let cssMargin = parseInt(svg_helper_1.getStyle(child.d3selection)['margin-left']);\n marginLeft = cssMargin ? cssMargin : defaultMargin;\n if (marginLeft > marginRight) {\n x += marginLeft - marginRight;\n }\n }\n child.d3selection\n .transition()\n .duration(this.getAnimateDuration())\n .attr('transform', 'translate(' + x + ', ' + y + ')');\n child.rect.x = x;\n child.rect.y = y;\n x += child.rect['width'];\n // handle bottom margin\n cssMargin = parseInt(svg_helper_1.getStyle(child.d3selection)['margin-right']);\n marginRight = cssMargin ? cssMargin : defaultMargin;\n x += marginRight;\n hasChildren = true;\n }\n }\n }\n return ret;\n }\n calculateNodeWidth(node, topRect, bottomRect, centerRect, leftRect, rightRect, nodeContentRect, defaultMargin, defaultPadding) {\n let ret = 0;\n ret = Math.max(ret, topRect.width);\n ret = Math.max(ret, centerRect.width);\n ret = Math.max(ret, bottomRect.width);\n ret = Math.max(ret, nodeContentRect.width);\n let middleWidth = 0;\n // for each possible horizontal grouping calculate what the maximum width could be\n if (leftRect.width !== 0) {\n // start with the left side and compute the width from left to right\n middleWidth = leftRect.width;\n if (centerRect.width !== 0) {\n // add left to center margin\n middleWidth += Math.max(defaultMargin, Math.max(this.getStylePropertyMax(node.left, 'margin-right'), parseInt(svg_helper_1.getStyle(this._nodes[node.center[0].key].d3selection)['margin-left'])));\n middleWidth += centerRect.width;\n if (rightRect.width !== 0) {\n // add center to right margin\n middleWidth += Math.max(defaultMargin, Math.max(parseInt(svg_helper_1.getStyle(this._nodes[node.center[node.center.length - 1].key].d3selection)['margin-right'], this.getStylePropertyMax(node.right, 'margin-left'))));\n middleWidth += rightRect.width;\n }\n }\n else if (rightRect.width !== 0) {\n // no center so just add left to right margin\n middleWidth += Math.max(defaultMargin, Math.max(this.getStylePropertyMax(node.left, 'margin-right'), this.getStylePropertyMax(node.right, 'margin-left')));\n middleWidth += rightRect.width;\n }\n }\n else if (centerRect.width !== 0) {\n // no left nodes\n if (rightRect.width !== 0) {\n // add center to right margin\n middleWidth += Math.max(defaultMargin, Math.max(parseInt(svg_helper_1.getStyle(this._nodes[node.center[node.center.length - 1].key].d3selection)['margin-right'], this.getStylePropertyMax(node.right, 'margin-left'))));\n middleWidth += rightRect.width;\n }\n middleWidth += centerRect.width;\n }\n else {\n middleWidth = rightRect.width;\n }\n ret = Math.max(middleWidth, ret);\n ret += Math.max(defaultPadding, parseInt(svg_helper_1.getStyle(this._nodes[node.key].d3selection).paddingLeft));\n ret += Math.max(defaultPadding, parseInt(svg_helper_1.getStyle(this._nodes[node.key].d3selection).paddingRight));\n return ret;\n }\n calculateNodeHeight(node, topRect, bottomRect, centerRect, leftRect, rightRect, nodeContentRect, defaultMargin, defaultPadding) {\n let leftHeight = 0;\n let centerHeight = 0;\n let rightHeight = 0;\n let topBottomHeight = 0;\n // for each possible vertical grouping add up what the maximum height could be\n if (leftRect.height !== 0) {\n // calc the total height of the left nodes + top + bottom with margins\n leftHeight = leftRect.height;\n if (topRect.height !== 0) {\n // add top node bottom margin or left nodes top margin\n leftHeight += Math.max(defaultMargin, Math.max(this.getStylePropertyMax(node.top, 'margin-bottom'), parseInt(svg_helper_1.getStyle(this._nodes[node.left[0].key].d3selection)['margin-top'])));\n leftHeight += topRect.height;\n }\n if (bottomRect.height !== 0) {\n // add left nodes bottom margin or bottom nodes top margin\n leftHeight += Math.max(defaultMargin, Math.max(parseInt(svg_helper_1.getStyle(this._nodes[node.left[node.left.length - 1].key].d3selection)['margin-bottom'], this.getStylePropertyMax(node.bottom, 'margin-top'))));\n leftHeight += bottomRect.height;\n }\n }\n if (centerRect.height !== 0) {\n // calc the total height of the center nodes + top + bottom with margins\n centerHeight = centerRect.height;\n if (topRect.height !== 0) {\n // add top node bottom margin or center nodes top margin\n centerHeight += Math.max(defaultMargin, Math.max(this.getStylePropertyMax(node.top, 'margin-bottom'), this.getStylePropertyMax(node.center, 'margin-top')));\n centerHeight += topRect.height;\n }\n if (bottomRect.height !== 0) {\n // add center nodes bottom margin or bottom nodes top margin\n centerHeight += bottomRect.height;\n centerHeight += Math.max(defaultMargin, Math.max(this.getStylePropertyMax(node.center, 'margin-bottom'), this.getStylePropertyMax(node.bottom, 'margin-top')));\n }\n }\n if (rightRect.height !== 0) {\n // add top node bottom margin or right nodes top margin\n rightHeight = rightRect.height;\n if (topRect.height !== 0) {\n rightHeight += topRect.height;\n rightHeight += Math.max(defaultMargin, Math.max(this.getStylePropertyMax(node.top, 'margin-bottom'), parseInt(svg_helper_1.getStyle(this._nodes[node.right[0].key].d3selection)['margin-top'])));\n }\n if (bottomRect.height !== 0) {\n // add right nodes bottom margin or bottom nodes top margin\n rightHeight += bottomRect.height;\n rightHeight += Math.max(defaultMargin, Math.max(parseInt(svg_helper_1.getStyle(this._nodes[node.right[node.right.length - 1].key].d3selection)['margin-bottom'], this.getStylePropertyMax(node.bottom, 'margin-top'))));\n }\n }\n if (topRect.height && bottomRect.height) {\n topBottomHeight = topRect.height + bottomRect.height;\n topBottomHeight += Math.max(defaultMargin, Math.max(this.getStylePropertyMax(node.top, 'margin-bottom'), this.getStylePropertyMax(node.bottom, 'margin-top')));\n }\n let ret = 0;\n ret = Math.max(ret, topRect.height);\n ret = Math.max(ret, bottomRect.height);\n ret = Math.max(ret, topBottomHeight);\n ret = Math.max(ret, leftHeight);\n ret = Math.max(ret, centerHeight);\n ret = Math.max(ret, rightHeight);\n if (nodeContentRect.height) {\n ret += nodeContentRect.height;\n }\n ret += Math.max(defaultPadding, parseInt(svg_helper_1.getStyle(this._nodes[node.key].d3selection).paddingTop));\n ret += Math.max(defaultPadding, parseInt(svg_helper_1.getStyle(this._nodes[node.key].d3selection).paddingBottom));\n return ret;\n }\n /**\n * move this node and its decendants into place\n */\n transformNode(node, border, nodeContents, defaultMargin, defaultPadding) {\n let self = this;\n let renderedNode = self._nodes[node.key];\n let rect = new ui_base_1.Rect(0, 0, 0, 0);\n // get the width of the whole window\n let widthProp = 'width';\n let heightProp = 'height';\n let cssMargin = parseInt(svg_helper_1.getStyle(renderedNode.d3selection)['margin-top']);\n defaultMargin = cssMargin ? cssMargin : defaultMargin;\n let cssPadding = parseInt(svg_helper_1.getStyle(renderedNode.d3selection)['padding-top']);\n defaultPadding = cssPadding ? cssPadding : defaultPadding;\n let topRect = new ui_base_1.Rect(0, 0, self.sumHorizontal(node.top, defaultMargin), self.getRectPropertyMax(node.top, heightProp));\n let bottomRect = new ui_base_1.Rect(0, 0, self.sumHorizontal(node.bottom, defaultMargin), self.getRectPropertyMax(node.bottom, heightProp));\n let leftRect = new ui_base_1.Rect(0, 0, self.getRectPropertyMax(node.left, widthProp), self.sumVertical(node.left, defaultMargin));\n let rightRect = new ui_base_1.Rect(0, 0, self.getRectPropertyMax(node.right, widthProp), self.sumVertical(node.right, defaultMargin));\n let centerRect = new ui_base_1.Rect(0, 0, self.sumHorizontal(node.center, defaultMargin), self.getRectPropertyMax(node.center, heightProp));\n let nodeContentRect = new ui_base_1.Rect(0, 0, renderedNode.rect[widthProp], renderedNode.rect[heightProp]);\n // compute the rectangle with with padding/margins\n rect.width = self.calculateNodeWidth(node, topRect, bottomRect, centerRect, leftRect, rightRect, nodeContentRect, defaultMargin, defaultPadding);\n rect.height = self.calculateNodeHeight(node, topRect, bottomRect, centerRect, leftRect, rightRect, nodeContentRect, defaultMargin, defaultPadding);\n // draw the border now that we know the dimensions\n if (border) {\n // render full size so we can see what the CSS looks like\n border\n .attr('height', rect.height)\n .attr('width', rect.width);\n let renderedRect = svg_helper_1.convertToSVGCoords(self._svg, border);\n rect.height = renderedRect.height;\n rect.width = renderedRect.width;\n // now show it as a transition\n border\n .attr('height', 0)\n .attr('width', 0)\n .transition()\n .duration(self.getAnimateDuration())\n .attr('x', 0)\n .attr('y', 0)\n .attr('height', rect.height)\n .attr('width', rect.width);\n }\n renderedNode.rect = rect;\n if (nodeContents) {\n let contentStyle = svg_helper_1.getStyle(nodeContents);\n let xOffset = (rect.width - nodeContentRect.width) / 2;\n let yPadding = defaultPadding;\n let yOffset = yPadding;\n nodeContents\n .transition()\n .duration(self.getAnimateDuration())\n .attr('transform', 'translate(' + xOffset + ',' + yOffset + ')');\n }\n let parentMidX = rect.width / 2;\n let elemMidX = parentMidX - topRect.width / 2;\n let elemMidY = self._padding + nodeContentRect.height + topRect.height / 2;\n self.transformHorizontalNodes(elemMidX, elemMidY, node.top, defaultMargin);\n // find the center of the center square (parent rect is a 3x3 tic-tac-toe)\n let centerMidX = leftRect.width +\n ((rect.width - rightRect.width - leftRect.width) / 2);\n let centerMidY = topRect.height + nodeContentRect.height +\n ((rect.height - bottomRect.height - topRect.height - nodeContentRect.height) / 2);\n elemMidX = self._padding + leftRect.width / 2;\n self.transformVerticalNodes(elemMidX, centerMidY - leftRect.height / 2, node.left, defaultMargin);\n elemMidX = rect.width - (rightRect.width + self._padding) / 2;\n self.transformVerticalNodes(elemMidX, centerMidY - rightRect.height / 2, node.right, defaultMargin);\n elemMidX = parentMidX - bottomRect.width / 2;\n elemMidY = rect.height - bottomRect.height / 2 - self._padding;\n self.transformHorizontalNodes(elemMidX, elemMidY, node.bottom, defaultMargin);\n if (node.center && node.center.length > 0) {\n // centerX is the x pos where the node center starts. This is different than Y\n let centerX = centerMidX - centerRect.width / 2;\n if (leftRect.width) {\n centerX = Math.max(centerX, self._padding + leftRect.width +\n Math.max(defaultMargin, Math.max(this.getStylePropertyMax(node.left, 'margin-right'), parseInt(svg_helper_1.getStyle(self._nodes[node.center[0].key].d3selection)['margin-left']))));\n }\n if (rightRect.width) {\n centerX = Math.min(centerX, rect.width - self._padding - rightRect.width -\n centerRect.width -\n Math.max(defaultMargin, Math.max(this.getStylePropertyMax(node.right, 'margin-left'), parseInt(svg_helper_1.getStyle(self._nodes[node.center[node.center.length - 1].key].d3selection)['margin-left']))));\n }\n // centerY is the y pos of the middle the center nodes. This is different than X.\n let centerY = centerMidY;\n if (topRect.height) {\n centerY = Math.max(centerY, self._padding + topRect.height +\n Math.max(defaultMargin, Math.max(this.getStylePropertyMax(node.top, 'margin-bottom'), this.getStylePropertyMax(node.center, 'margin-top'))) +\n centerRect.height / 2);\n }\n if (bottomRect.height) {\n centerY = Math.min(centerY, rect.height - self._padding - bottomRect.height -\n centerRect.height / 2 -\n Math.max(defaultMargin, Math.max(this.getStylePropertyMax(node.center, 'margin-bottom'), this.getStylePropertyMax(node.bottom, 'margin-top'))));\n }\n self.transformHorizontalNodes(centerX, centerY, node.center, defaultMargin);\n }\n }\n /**\n * configure the hover requirements for a node\n */\n configureItemHover(elem, node) {\n let self = this;\n if (!node.def.disableHover) {\n elem.on('mouseenter', self.nodeHoverStart)\n .on('mouseleave', self.hoverEnd);\n }\n else {\n elem.on('mouseenter', function () { elem.classed('hover', true); })\n .on('mouseleave', function () { elem.classed('hover', false); });\n }\n if (!node.def.hideTooltip) {\n self._dataTooltip.setTarget(elem);\n }\n let graph = this._element;\n svg_helper_1.addClickHelper(elem, self.getOptions(), graph.onClick, graph.onDoubleClick, graph.contextMenuItems, self._dataTooltip, graph, node.def, node.def.key);\n let htmlNode = elem.node();\n htmlNode['__data__'] = node.def;\n }\n renderNodes(parent, node, group, depth) {\n let self = this;\n node.depth = depth;\n let renderedNode = {\n def: node,\n ports: {}\n };\n self._nodes[node.key] = renderedNode;\n node.parent = parent;\n if (self._decimator && !self._decimator.isVisible(node)) {\n delete renderedNode.d3selection;\n return;\n }\n let getColor = function () {\n if (node.type && node.type.length > 0) {\n for (let i = 0; i < node.type.length; ++i) {\n if (self._colorMgr.hasColor(node.type[i])) {\n return self._colorMgr.getColor(node.type[i]);\n }\n }\n }\n if (node.key && self._colorMgr.hasColor(node.key)) {\n return self._colorMgr.getColor(node.key);\n }\n return 'white';\n };\n let classes = utilities_1.getSelectionName(node.key) + ' node ';\n if (node.type && node.type.length > 0) {\n for (let i = 0; i < node.type.length; ++i) {\n classes += ' ' + utilities_1.getSelectionName(node.type[i]);\n }\n }\n let childGroup = group.append('g')\n .classed(classes, true);\n renderedNode.d3selection = childGroup;\n let border;\n if (!node.hideBorder) {\n border = childGroup.append('rect')\n .classed(classes, true)\n .classed('border', true)\n .attr('fill', getColor)\n .attr('stroke', 'black')\n .attr('stroke-opacity', .2)\n .attr('rx', 6)\n .attr('ry', 6);\n self.configureItemHover(border, renderedNode);\n }\n for (let childIdx = 0; childIdx < D3HierarchyGraph.CHILDREN.length; ++childIdx) {\n let children = D3HierarchyGraph.CHILDREN[childIdx];\n if (node.hasOwnProperty(children)) {\n for (let i = 0; i < node[children].length; ++i) {\n self.renderNodes(node, node[children][i], childGroup, depth + 1);\n }\n }\n }\n let nodeContents;\n let rect = new ui_base_1.Rect(0, 0, 0, 0);\n let image;\n let imageRect;\n let textLabel;\n let textRect;\n if (!node.hideImageLabel && (node.label || node.image)) {\n nodeContents = childGroup.append('g')\n .classed(classes, true);\n if (node.image) {\n // X/Y have to be set or else the convertToSVGCoords call gives back a bad rect\n image = nodeContents.append('image')\n .attr('xlink:href', node.image)\n .classed(classes, true)\n .attr('x', self._renderOrigin.x)\n .attr('y', self._renderOrigin.y);\n let cssHeight = parseInt(svg_helper_1.getStyle(image).height);\n let cssWidth = parseInt(svg_helper_1.getStyle(image).width);\n image.attr('height', cssHeight ? cssHeight : node.imageHeight ? node.imageHeight : 40);\n image.attr('width', cssWidth ? cssWidth : node.imageWidth ? node.imageWidth : 40);\n self.configureItemHover(image, renderedNode);\n imageRect = svg_helper_1.convertToSVGCoords(self._svg, image);\n rect.width = Math.max(rect.width, imageRect.width);\n rect.height += imageRect.height;\n }\n if (node.label) {\n // X/Y have to be set or else the convertToSVGCoords call gives back a bad rect\n textLabel = nodeContents.append('text')\n .classed(classes, true)\n .attr('x', self._renderOrigin.x)\n .attr('y', self._renderOrigin.y)\n .attr('text-anchor', 'middle')\n .attr('alignment-baseline', 'middle')\n .text(node.label);\n self.configureItemHover(textLabel, renderedNode);\n textRect = svg_helper_1.convertToSVGCoords(self._svg, textLabel);\n rect.width = Math.max(rect.width, textRect.width);\n rect.height += textRect.height;\n }\n }\n if (self._renderOrigin.x !== 0 ||\n self._renderOrigin.y !== 0) {\n if (border) {\n // the transition is done in transform nodes since there is other\n // parts of the transition that have to happen\n border\n .attr('x', self._renderOrigin.x)\n .attr('y', self._renderOrigin.y);\n }\n if (imageRect) {\n image\n .transition()\n .duration(self.getAnimateDuration())\n .attr('x', rect.width / 2 - imageRect.width / 2)\n .attr('y', 0);\n }\n if (textRect) {\n textLabel\n .transition()\n .duration(self.getAnimateDuration())\n .attr('x', rect.width / 2)\n .attr('y', rect.height - textRect.height / 2);\n }\n }\n else {\n if (imageRect) {\n image.attr('x', rect.width / 2 - imageRect.width / 2)\n .attr('y', 0);\n }\n if (textRect) {\n textLabel.attr('x', rect.width / 2)\n .attr('y', rect.height - textRect.height / 2);\n }\n }\n renderedNode.rect = rect;\n self.transformNode(node, border, nodeContents, self._margin, self._padding);\n }\n /** create the ports on the nodes that the links will attach due based on the order of\n * the links in the list. The first link on a given side of a node takes the first port etc...\n */\n createLinks(links) {\n let ret = [];\n let self = this;\n for (let i = 0; i < links.length; ++i) {\n let from = self._nodes[links[i].from];\n let to = self._nodes[links[i].to];\n if (self._decimator) {\n while (from && !self._decimator.isVisible(from.def)) {\n from = self._nodes[from.def.parent.key];\n }\n while (to && !self._decimator.isVisible(to.def)) {\n to = self._nodes[to.def.parent.key];\n }\n }\n // links internal to a node should be ignored\n if (from === undefined || to === undefined) {\n continue;\n }\n // Handle case where one is an ancestor of another\n let descendant = from.def.depth > to.def.depth ? from : to;\n let ancestor = from.def.depth > to.def.depth ? to : from;\n while (ancestor.def.depth != descendant.def.depth) {\n descendant = self._nodes[descendant.def.parent.key];\n }\n if (ancestor === descendant) {\n continue;\n }\n let renderedLink = {\n def: links[i],\n source: { node: from, endPoint: undefined, alignment: undefined },\n target: { node: to, endPoint: undefined, alignment: undefined },\n };\n ret.push(renderedLink);\n let fromRect = svg_helper_1.convertToSVGCoords(self._svg, from.d3selection);\n let toRect = svg_helper_1.convertToSVGCoords(self._svg, to.d3selection);\n if (fromRect.bottom < toRect.y) {\n // from is above to\n if (!from.ports.bottom) {\n from.ports.bottom = [];\n }\n if (!to.ports.top) {\n to.ports.top = [];\n }\n from.ports.bottom.push(renderedLink);\n to.ports.top.push(renderedLink);\n renderedLink.source.alignment = ui_base_1.Alignment.Bottom;\n renderedLink.target.alignment = ui_base_1.Alignment.Top;\n }\n else if (fromRect.y > toRect.bottom) {\n // from is below to\n if (!from.ports.top) {\n from.ports.top = [];\n }\n if (!to.ports.bottom) {\n to.ports.bottom = [];\n }\n from.ports.top.push(renderedLink);\n to.ports.bottom.push(renderedLink);\n renderedLink.source.alignment = ui_base_1.Alignment.Top;\n renderedLink.target.alignment = ui_base_1.Alignment.Bottom;\n }\n else if (fromRect.right < toRect.x) {\n // from is left of to\n if (!from.ports.right) {\n from.ports.right = [];\n }\n if (!to.ports.left) {\n to.ports.left = [];\n }\n from.ports.right.push(renderedLink);\n to.ports.left.push(renderedLink);\n renderedLink.source.alignment = ui_base_1.Alignment.Right;\n renderedLink.target.alignment = ui_base_1.Alignment.Left;\n }\n else {\n // from is to the right of to\n if (!from.ports.left) {\n from.ports.left = [];\n }\n if (!to.ports.right) {\n to.ports.right = [];\n }\n from.ports.left.push(renderedLink);\n to.ports.right.push(renderedLink);\n renderedLink.source.alignment = ui_base_1.Alignment.Left;\n renderedLink.target.alignment = ui_base_1.Alignment.Right;\n }\n }\n return ret;\n }\n /** does an in place merge of input and output links for a node since a node may have\n * input and output ports on the same side of the node\n */\n mergeNodePorts(links, node) {\n let nodeEndPoints = {}; // maps node endpoints to index values\n let usedIdx = 0;\n for (let i = 0; i < links.length; ++i) {\n let link = links[i];\n let linkDef = link.def;\n if (link.source.node === node) {\n if (linkDef.fromConnectionPoint) {\n if (nodeEndPoints[linkDef.fromConnectionPoint] === undefined) {\n nodeEndPoints[linkDef.fromConnectionPoint] = ++usedIdx;\n }\n link.source.endPoint = nodeEndPoints[linkDef.fromConnectionPoint];\n }\n else {\n link.source.endPoint = ++usedIdx;\n }\n }\n else {\n if (linkDef.toConnectionPoint) {\n if (nodeEndPoints[linkDef.toConnectionPoint] === undefined) {\n nodeEndPoints[linkDef.toConnectionPoint] = ++usedIdx;\n }\n link.target.endPoint = nodeEndPoints[linkDef.toConnectionPoint];\n }\n else {\n link.target.endPoint = ++usedIdx;\n }\n }\n }\n links.length = usedIdx;\n }\n /** walk over nodes and sort the link endpoints based on the node positions\n * to minimize crossing so ports are assigned based on the location of the nodes\n * they are connecting to. Example if the target node is above the source node it will\n * take a higher port position than a link where the target node is below the source node */\n orderNodePorts() {\n for (let key in this._nodes) {\n let node = this._nodes[key];\n let sortVertical = function (a, b) {\n let aComparator = a.source.node === node ? a.target.node : a.source.node;\n let bComparator = b.source.node === node ? b.target.node : b.source.node;\n return aComparator.d3selection.node().getBoundingClientRect().top -\n bComparator.d3selection.node().getBoundingClientRect().top;\n };\n let sortHorizontal = function (a, b) {\n let aComparator = a.source.node === node ? a.target.node : a.source.node;\n let bComparator = b.source.node === node ? b.target.node : b.source.node;\n return aComparator.d3selection.node().getBoundingClientRect().left -\n bComparator.d3selection.node().getBoundingClientRect().left;\n };\n if (node.ports.top) {\n node.ports.top.sort(sortHorizontal);\n this.mergeNodePorts(node.ports.top, node);\n }\n if (node.ports.bottom) {\n node.ports.bottom.sort(sortHorizontal);\n this.mergeNodePorts(node.ports.bottom, node);\n }\n if (node.ports.left) {\n node.ports.left.sort(sortVertical);\n this.mergeNodePorts(node.ports.left, node);\n }\n if (node.ports.right) {\n node.ports.right.sort(sortVertical);\n node.ports.right.sort(sortVertical);\n this.mergeNodePorts(node.ports.right, node);\n }\n }\n }\n /**\n * actually render the links using the path information provided\n * by the link functions\n */\n renderLinks(links, graphArea) {\n // create the end points for each link\n let renderedLinks = this.createLinks(links);\n // sort links to minimize crossing (see function header for more detail)\n this.orderNodePorts();\n this.renderLinkHelper(graphArea, renderedLinks);\n }\n sizeViewToFit(root) {\n let resizeView;\n let rect = this._nodes[root.key].rect;\n if (this._options.fitToWindow) {\n resizeView = this._svg\n .transition('resizeView')\n .duration(this.getAnimateDuration())\n .attr('viewBox', '0 0 ' + rect.width + ' ' + rect.height)\n .attr('preserveAspectRatio', 'xMidYMid meet');\n if (this._options.width) {\n resizeView\n .attr('width', this._options.width)\n .attr('height', undefined);\n }\n else if (this._options.height) {\n resizeView\n .attr('width', undefined)\n .attr('height', this._options.height);\n }\n else {\n resizeView\n .attr('width', '100%')\n .attr('height', undefined);\n }\n }\n else {\n resizeView = this._svg\n .transition('resizeView')\n .duration(this.getAnimateDuration())\n .attr('width', rect.width)\n .attr('height', rect.height);\n }\n return resizeView;\n }\n renderHelper(root, isBackgroundRender = false) {\n let self = this;\n self._nodes = {};\n let graphArea = self._svg.insert('g', 'g')\n .classed('graph', true);\n let oldAnimateDuration = self.getAnimateDuration();\n if (isBackgroundRender) {\n self._options.animateDuration = 0;\n graphArea.attr('opacity', 0);\n }\n self._decimator = self._element.decimator;\n self.renderNodes(undefined, root, graphArea, 0);\n // render links after nodes are done rendering\n self.initializeLinkLayer(graphArea);\n let links = self._element.links;\n graphArea\n .transition('nodeWait')\n .duration(self.getAnimateDuration())\n .on('end', function () { self.renderLinks(links, graphArea); });\n if (isBackgroundRender) {\n self._options.animateDuration = oldAnimateDuration;\n }\n else {\n // resize window if this isn't a background render\n self.sizeViewToFit(root);\n }\n return graphArea;\n }\n /**\n * render the hierarchical graph\n */\n render(options) {\n let self = this;\n let graph = self._element;\n // TODO pass these in as options\n self._margin = 30;\n self._padding = 10;\n self.loadOptions(options);\n let newRoot = self._element.nodes;\n let oldGraph = self._svg.select('.graph');\n let animateDuration = self.getAnimateDuration();\n if (animateDuration !== 0) {\n // make the graph transition in a pretty way\n // this would be where the new root was in the old tree\n let newRootInOldTree = self._nodes[newRoot.key];\n // render the new tree hidden first so we can make transitions\n self._renderOrigin = { x: 0, y: 0 };\n let newGraph = self.renderHelper(newRoot, true);\n // this would be where the old root is in the new\n let oldRootInNewTree;\n let oldGraphNode = oldGraph.select('rect').node();\n if (oldGraphNode) {\n oldRootInNewTree = self._nodes[oldGraphNode['__data__'].key];\n }\n if (newRootInOldTree) {\n // new root was in old tree so this is zooming into a node\n let newRootNode = self._nodes[newRoot.key];\n let oldRect = svg_helper_1.convertToSVGCoords(self._svg, newRootInOldTree.d3selection);\n let translateOldNode = oldGraph\n .transition('translateOldNode')\n .duration(animateDuration)\n .attr('transform', 'translate(-' + oldRect.x + ',-' + oldRect.y + ')');\n let resizeView = self.sizeViewToFit(newRoot);\n let nodeChanged = newRootInOldTree.d3selection.selectAll('*').size() !==\n newRootNode.d3selection.selectAll('*').size();\n if (nodeChanged) {\n // root has added/removed nodes so wait for the size\n // transition and then redraw the root\n newGraph.remove();\n resizeView\n .transition()\n .duration(animateDuration / 2)\n .attr('width', 0)\n .attr('height', 0)\n .on('end', function () {\n oldGraph.remove();\n self.renderHelper(newRoot);\n });\n }\n else {\n translateOldNode\n .on('end', function () {\n oldGraph.remove();\n newGraph.attr('opacity', 1);\n });\n }\n }\n else if (oldRootInNewTree && oldRootInNewTree.d3selection) {\n // set timeout so new tree is rendered first so we can adjust our animation\n setTimeout(function () {\n // if this is in the old tree and rendered\n let newRect = svg_helper_1.convertToSVGCoords(self._svg, oldRootInNewTree.d3selection);\n let topLeft = {\n x: newRect.x,\n y: newRect.y\n };\n self._renderOrigin = {\n x: (newRect.x + newRect.right) / 2,\n y: (newRect.y + newRect.bottom) / 2,\n };\n // old root is in new tree so zooming out\n let newElemCount = oldRootInNewTree.d3selection.selectAll('*').size();\n let oldElemCount = oldGraph.select('.node').selectAll('*').size();\n let nodeChanged = newElemCount !== oldElemCount;\n newGraph.remove();\n let translateOldNode = oldGraph\n .transition('translateOldNode')\n .duration(animateDuration)\n .attr('width', 0)\n .attr('height', 0)\n .attr('transform', 'translate(' + topLeft.x + ',' + topLeft.y + ')')\n .on('end', function () {\n if (nodeChanged) {\n oldGraph.remove();\n }\n self.renderHelper(newRoot)\n .transition()\n .duration(self.getAnimateDuration())\n .on('end', function () {\n if (!nodeChanged) {\n oldGraph.remove();\n }\n });\n });\n self.sizeViewToFit(newRoot);\n }, 0);\n }\n else {\n // totally orthogonal tree so just render it\n newGraph.remove();\n self._renderOrigin = { x: 0, y: 0 };\n self._svg\n .transition('hideView')\n .duration(animateDuration)\n .attr('width', 0)\n .attr('height', 0)\n .on('end', function () {\n oldGraph.remove();\n self.renderHelper(newRoot);\n });\n }\n }\n else {\n self._renderOrigin = { x: 0, y: 0 };\n oldGraph.remove();\n self.renderHelper(newRoot);\n }\n }\n}\nexports.D3HierarchyGraph = D3HierarchyGraph;\n/**\n * helper function to traverse the node trees.\n * Walks over the top/bottom/left/right/center children arrays and applies the\n * callback function to those nodes\n */\nD3HierarchyGraph.CHILDREN = ['top', 'bottom', 'left', 'right', 'center'];\nrenderer_1.D3Renderer.register(ui_base_1.UIType.HierarchyGraph, D3HierarchyGraph);\n\n\n//# sourceURL=webpack://UWT/./src/core/connected-graph/hierarchy.ts?");
/***/ }),
/***/ "./src/core/connected-graph/port.ts":
/*!******************************************!*\
!*** ./src/core/connected-graph/port.ts ***!
\******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utilities_1 = __webpack_require__(/*! ../utilities */ \"./src/core/utilities.ts\");\nconst ui_base_1 = __webpack_require__(/*! ../../interface/ui-base */ \"./src/interface/ui-base.ts\");\nconst graph_1 = __webpack_require__(/*! ../../interface/graph */ \"./src/interface/graph.ts\");\nconst renderer_1 = __webpack_require__(/*! ../renderer */ \"./src/core/renderer.ts\");\nconst svg_helper_1 = __webpack_require__(/*! ../svg-helper */ \"./src/core/svg-helper.ts\");\nconst d3 = __webpack_require__(/*! d3 */ \"d3\");\nconst PIXI = __webpack_require__(/*! pixi.js */ \"pixi.js\");\nconst dagre = __webpack_require__(/*! dagre */ \"dagre\");\nconst base_1 = __webpack_require__(/*! ./base */ \"./src/core/connected-graph/base.ts\");\nconst pixi_helper_1 = __webpack_require__(/*! ../pixi-helper */ \"./src/core/pixi-helper.ts\");\n/********************************************\n * NODE RENDER HELPERS\n*********************************************/\nclass SVGNode {\n updatePosition(pos) {\n this.def.x += pos.dx;\n this.def.y += pos.dy;\n this._nodeContainer\n .attr('transform', `translate(${this.def.x}, ${this.def.y})`);\n }\n renderPort(portDef, options) {\n let port = this._nodeContainer\n .append('circle')\n .attr('class', this._portDiagram.getClasses(this.def) + ' ' + portDef.key)\n .classed('port', true)\n .attr('cx', portDef.x)\n .attr('cy', portDef.y)\n .attr('r', PORT_RADIUS)\n .attr('fill', 'white')\n .attr('stroke-width', 1)\n .attr('stroke', this._portDiagram.getColor(this.def));\n return port;\n }\n}\nclass PIXINode {\n constructor() {\n this._selectTempItems = {};\n }\n initializeNode() {\n this._nodeContainer = new PIXI.Container();\n }\n getNode() {\n return this._nodeContainer;\n }\n updatePosition(pos) {\n this.def.x += pos.dx;\n this.def.y += pos.dy;\n this._nodeContainer.x = this.def.x;\n this._nodeContainer.y = this.def.y;\n }\n renderPort(port, options) {\n let portGraphic = options.manager.add(this.def.type[0], this.def.key, PIXI.SCALE_MODES.LINEAR, 1, function () {\n let ret = new PIXI.Graphics();\n ret.beginFill(options.color); // white\n ret.drawCircle(0, 0, PORT_RADIUS); // drawCircle(x, y, radius)\n ret.beginFill(0xFFFFFF); // white\n ret.drawCircle(0, 0, PORT_RADIUS - 1); // drawCircle(x, y, radius)\n ret.endFill();\n return ret;\n });\n // put port relatively in the right place for the container\n portGraphic.x = port.x - PORT_RADIUS;\n portGraphic.y = port.y - PORT_RADIUS;\n portGraphic.renderer = this;\n this._nodeContainer.addChild(portGraphic);\n return portGraphic;\n }\n select(selection, elem, index, graphicsMgr) {\n let createSelectionBorder = function (circle) {\n let circleRadius = circle.width / 2;\n let radius = circleRadius + STROKE_WIDTH;\n let border = graphicsMgr.add(selection + radius, selection + radius, PIXI.SCALE_MODES.LINEAR, 1, function () {\n let pixiCircle = new PIXI.Graphics();\n pixiCircle.beginFill(0xFFFFFF);\n pixiCircle.drawCircle(0, 0, radius); // drawCircle(x, y, radius)\n pixiCircle.endFill();\n return pixiCircle;\n });\n border.x = circle.x + circleRadius - radius;\n border.y = circle.y + circleRadius - radius;\n border.tint = SELECTION_COLOR;\n border.__data__ = circle.__data__;\n return border;\n };\n let border = createSelectionBorder(elem);\n this._selectTempItems[`${selection}Select${index}`] = border;\n elem.parent.addChildAt(border, 0);\n }\n unselect(selection, elem, index) {\n let border = this._selectTempItems[`${selection}Select${index}`];\n border.parent.removeChild(border);\n delete this._selectTempItems[`${selection}Select`];\n }\n}\n/********************************************\n * NODE CONFIGURATION HELPERS\n *********************************************/\nlet RADIUS = 25;\nlet PORT_RADIUS = 3;\nlet STROKE_WIDTH = 3;\nlet SELECTION_COLOR = 15921737;\nlet PADDING = 3;\nlet simplePortArea = { x: -RADIUS, y: -RADIUS, height: RADIUS * 2, width: RADIUS * 2 };\nclass SimpleNode {\n constructor(node) {\n this._selectTempItems = {};\n this.def = node;\n }\n configureNode() {\n this.def.height = 50;\n this.def.width = 50;\n }\n getPortAreaRect() {\n return simplePortArea;\n }\n}\nclass RectangleNode {\n constructor(node) {\n this.def = node;\n }\n getXYOffset() {\n return { x: -this.def.width * .5, y: -this.def.height * .5 };\n }\n getTitle() {\n return this.def.type.length > 0 ? this.def.type[0] : 'None';\n }\n getTitleTextRect() {\n throw \"Error please implement this function\";\n }\n configureNode() {\n let node = this.def;\n let topPorts = node.ports.top ? node.ports.top.length : 0;\n let bottomPorts = node.ports.bottom ? node.ports.bottom.length : 0;\n let leftPorts = node.ports.left ? node.ports.left.length : 0;\n let rightPorts = node.ports.right ? node.ports.right.length : 0;\n let portSize = 15;\n let titleTextRect = this.getTitleTextRect();\n let titleHeight = titleTextRect.height + PADDING * 2;\n let minHeight = titleHeight + PADDING * 2 + 50;\n let minWidth = titleTextRect.width + PADDING * 2;\n let xOffset = -minWidth * .5;\n let yOffset = -minHeight * .5;\n this._portRect = new ui_base_1.Rect(xOffset, titleHeight + yOffset, Math.max(Math.max(topPorts, bottomPorts) * portSize, minWidth), Math.max(Math.max(leftPorts, rightPorts) * portSize, minHeight));\n this.def.height = titleHeight + this._portRect.height;\n this.def.width = this._portRect.width;\n }\n getPortAreaRect() {\n return this._portRect;\n }\n}\n/********************************************\n * NODE IMPLEMENTATIONS\n *********************************************/\nclass SVGSimpleNode extends SimpleNode {\n constructor(node, portDiagram) {\n super(node);\n this._portDiagram = portDiagram;\n this.updatePosition = SVGNode.prototype.updatePosition.bind(this);\n this.renderPort = SVGNode.prototype.renderPort.bind(this);\n }\n renderNode(options) {\n this._nodeContainer = options.group.append('g');\n this._nodeContainer\n .append('circle')\n .attr('class', this._portDiagram.getClasses(this.def))\n .classed('node', true)\n .attr('r', RADIUS)\n .attr('cx', 0)\n .attr('cy', 0)\n .attr('fill', this._portDiagram.getColor(this.def));\n if (this.def.x !== undefined) {\n this.updatePosition({ dx: 0, dy: 0 });\n }\n return this._nodeContainer;\n }\n}\nclass PIXISimpleNode extends SimpleNode {\n constructor(node) {\n super(node);\n this.initializeNode = PIXINode.prototype.initializeNode.bind(this);\n this.getNode = PIXINode.prototype.getNode.bind(this);\n this.updatePosition = PIXINode.prototype.updatePosition.bind(this);\n this.renderPort = PIXINode.prototype.renderPort.bind(this);\n }\n renderNode(options) {\n this.initializeNode();\n let node = options.manager.add(this.def.type[0], this.def.key, PIXI.SCALE_MODES.LINEAR, 4, function () {\n let ret = new PIXI.Graphics();\n ret.beginFill(0xFFFFFF);\n ret.drawCircle(-RADIUS, -RADIUS, RADIUS); // drawCircle(x, y, radius)\n ret.beginFill(options.color);\n ret.drawCircle(-RADIUS, -RADIUS, RADIUS - 1); // drawCircle(x, y, radius)\n ret.endFill();\n return ret;\n });\n node.x = -RADIUS;\n node.y = -RADIUS;\n this._nodeContainer.addChild(node);\n if (this.def.x !== undefined) {\n this.updatePosition({ dx: 0, dy: 0 });\n }\n return node;\n }\n select(selection, elem, index, graphicsMgr) {\n console.log('need node select');\n let createSelectionBorder = function (circle) {\n let circleRadius = circle.width / 2;\n let radius = circleRadius + STROKE_WIDTH;\n let border = graphicsMgr.add(selection + radius, selection + radius, PIXI.SCALE_MODES.LINEAR, 1, function () {\n let pixiCircle = new PIXI.Graphics();\n pixiCircle.beginFill(0xFFFFFF);\n pixiCircle.drawCircle(0, 0, radius); // drawCircle(x, y, radius)\n pixiCircle.endFill();\n return pixiCircle;\n });\n border.x = circle.x + circleRadius - radius;\n border.y = circle.y + circleRadius - radius;\n border.tint = SELECTION_COLOR;\n border.__data__ = circle.__data__;\n return border;\n };\n let border = createSelectionBorder(elem);\n this._selectTempItems[`${selection}Select${index}`] = border;\n elem.parent.addChildAt(border, 0);\n }\n unselect(selection, elem, index) {\n let border = this._selectTempItems[`${selection}Select${index}`];\n border.parent.removeChild(border);\n delete this._selectTempItems[`${selection}Select${index}`];\n }\n}\nclass SVGRectangleNode extends RectangleNode {\n constructor(node, portDiagram, svg) {\n super(node);\n this._portDiagram = portDiagram;\n this._svg = svg;\n this.updatePosition = SVGNode.prototype.updatePosition.bind(this);\n this.renderPort = SVGNode.prototype.renderPort.bind(this);\n }\n getTitleTextRect() {\n return svg_helper_1.getTextRect(this._svg, this.getTitle());\n }\n renderNode(options) {\n this._nodeContainer = options.group.append('g');\n let nodeBox = this._nodeContainer.append('rect');\n let titleBox = this._nodeContainer.append('rect');\n let textRenderer = this._nodeContainer.append('text');\n let nodeOffset = this.getXYOffset();\n let xOffset = nodeOffset.x;\n let yOffset = nodeOffset.y;\n let text = this.getTitle();\n textRenderer\n .text(text)\n .attr('fill', 'white')\n .attr('stroke', 'white')\n .attr('alignment-baseline', 'hanging')\n .attr('x', xOffset + PADDING)\n .attr('y', yOffset + PADDING);\n nodeBox\n .attr('class', this._portDiagram.getClasses(this.def))\n .classed('node', true)\n .classed('border', true)\n .attr('fill', '#FFFFFF')\n .attr('stroke', '#000000')\n .attr('stroke-width', 1)\n .attr('x', xOffset)\n .attr('y', yOffset)\n .attr('width', this.def.width)\n .attr('height', this.def.height)\n .attr('rx', 3)\n .attr('ry', 3);\n titleBox\n .attr('class', this._portDiagram.getClasses(this.def))\n .classed('node', true)\n .classed('title-box', true)\n .attr('fill', this._portDiagram.getColor(this.def))\n .attr('x', xOffset)\n .attr('y', yOffset)\n .attr('width', this.def.width)\n .attr('height', 20)\n .attr('rx', 3)\n .attr('ry', 3);\n if (this.def.x !== undefined) {\n this.updatePosition({ dx: 0, dy: 0 });\n }\n return this._nodeContainer;\n }\n}\nclass PIXIRectangleNode extends RectangleNode {\n constructor(node, pixiHelper) {\n super(node);\n this._selectTempItems = {};\n this._pixiHelper = pixiHelper;\n this.initializeNode = PIXINode.prototype.initializeNode.bind(this);\n this.getNode = PIXINode.prototype.getNode.bind(this);\n this.updatePosition = PIXINode.prototype.updatePosition.bind(this);\n this.renderPort = PIXINode.prototype.renderPort.bind(this);\n }\n getTitleTextRect() {\n let text = this.getTitle();\n return this._pixiHelper.renderText(text, d3.select(this._pixiHelper.getRenderer().view.parentNode), 0xFFFFFF);\n }\n renderNode(options) {\n this.initializeNode();\n let id = `${this.def.type[0]}H${this.def.height}W${this.def.width}`;\n id += this.def.ports.top ? `T${this.def.ports.top.length}` : '';\n id += this.def.ports.left ? `L${this.def.ports.left.length}` : '';\n id += this.def.ports.right ? `R${this.def.ports.right.length}` : '';\n id += this.def.ports.bottom ? `B${this.def.ports.bottom.length}` : '';\n let node = options.manager.add(id, this.def.key, PIXI.SCALE_MODES.LINEAR, 1, () => {\n // adjust the text to the right spot\n let text = this.getTitle();\n this._titleText = this._pixiHelper.renderText(text, d3.select(this._pixiHelper.getRenderer().view.parentNode), 0xFFFFFF);\n this._titleText.x = PADDING;\n this._titleText.y = PADDING;\n // outline node\n let graphic = new PIXI.Graphics();\n graphic.beginFill(0xFFFFFF, 1);\n graphic.lineStyle(1, 0x000000, .7);\n graphic.drawRoundedRect(0, 0, this._portRect.width, this.def.height, 3);\n // draw title box\n graphic.beginFill(options.color, 1);\n graphic.drawRoundedRect(0, 0, this._portRect.width, this._titleText.height + PADDING * 2, 3);\n graphic.addChild(this._titleText);\n return graphic;\n });\n let nodeOffset = this.getXYOffset();\n node.x = nodeOffset.x;\n node.y = nodeOffset.y;\n this._nodeContainer.addChild(node);\n if (this.def.x !== undefined) {\n this.updatePosition({ dx: 0, dy: 0 });\n }\n return node;\n }\n select(selection, elem, index, graphicsMgr) {\n // outline node\n let border = new PIXI.Graphics();\n border.lineStyle(STROKE_WIDTH * 2, SELECTION_COLOR);\n border.drawRoundedRect(0, 0, this._portRect.width, this.def.height, 3);\n let nodeOffset = this.getXYOffset();\n border.x = nodeOffset.x;\n border.y = nodeOffset.y;\n this._nodeContainer.addChildAt(border, 0);\n this._selectTempItems[`${selection}Select${index}`] = border;\n elem.parent.addChildAt(border, 0);\n }\n unselect(selection, elem, index) {\n let border = this._selectTempItems[`${selection}Select${index}`];\n border.parent.removeChild(border);\n delete this._selectTempItems[`${selection}Select${index}`];\n }\n}\nclass D3PortDiagram extends renderer_1.UIElementRenderer {\n constructor(element, renderer, parent) {\n super();\n /** cache stuff for later, portMap allows links to find the right\n * port to attached to by to/from. The ports array is just for rendering quickly\n */\n this._nodePortInfo = {};\n this._options = {};\n this.invalidate = this.render;\n this._element = element;\n this._rendererManager = renderer;\n this._parent = parent;\n this._nodes = {};\n this._requiresLayout = false;\n this._renderedNodes = [];\n let self = this;\n this.getLinkStartXY = function (link) {\n let nodeDef = self._nodes[link.def.from];\n let linkDef = link.def;\n let offset = self._nodePortInfo[nodeDef.key][linkDef.fromPort];\n return { x: nodeDef.x + offset.x, y: nodeDef.y + offset.y };\n };\n this.getLinkEndXY = function (link) {\n let nodeDef = self._nodes[link.def.to];\n let linkDef = link.def;\n let offset = self._nodePortInfo[nodeDef.key][linkDef.toPort];\n return { x: nodeDef.x + offset.x, y: nodeDef.y + offset.y };\n };\n }\n /**\n * @deprecated ('Deprecated since 1.14.0 in favor of focus. Will be removed in 2.x')\n * hover event\n *\n * @param event the event to pass to the renderer\n */\n hover(event) {\n this.focus(event);\n }\n /**\n * bring an item into focus\n *\n * @param event the event to focus on\n */\n focus(event) {\n this._renderer.focus(event);\n }\n /**\n * select an item\n *\n * @param event the event to focus on\n */\n select(event) {\n this._renderer.select(event);\n }\n cursorChange(event) {\n }\n /**\n * brush event\n *\n * @param event the event to pass to the renderer\n */\n brush(event) {\n this._renderer.brush(event);\n }\n addNodePorts(portList, node, alignment) {\n let self = this;\n if (portList) {\n let nodeKey = node.def.key;\n if (!self._nodePortInfo[nodeKey]) {\n self._nodePortInfo[nodeKey] = {};\n }\n let portArea = node.getPortAreaRect();\n let verticalPortSize = portArea.height / portList.length; // amount of space the port can take\n let verticalPortOffset = verticalPortSize * .5;\n let horizontalPortSize = portArea.width / portList.length; // amount of space the port can take\n let horizontallPortOffset = horizontalPortSize * .5;\n let nodePortMap = self._nodePortInfo[nodeKey];\n switch (alignment) {\n case ui_base_1.Alignment.Top:\n portList.forEach(function (port, index) {\n let x = portArea.x + horizontallPortOffset + horizontalPortSize * index;\n nodePortMap[port.key] =\n { key: port.key, index: index, alignment: alignment, x: x, y: 0 };\n });\n break;\n case ui_base_1.Alignment.Bottom:\n portList.forEach(function (port, index) {\n let x = portArea.x + horizontallPortOffset + horizontalPortSize * index;\n nodePortMap[port.key] =\n { key: port.key, index: index, alignment: alignment, x: x, y: node.def.height };\n });\n break;\n case ui_base_1.Alignment.Left:\n portList.forEach(function (port, index) {\n let y = verticalPortOffset + verticalPortSize * index + portArea.y;\n nodePortMap[port.key] =\n { key: port.key, index: index, alignment: alignment, x: portArea.x, y: y };\n });\n break;\n case ui_base_1.Alignment.Right:\n portList.forEach(function (port, index) {\n let y = verticalPortOffset + verticalPortSize * index + portArea.y;\n nodePortMap[port.key] =\n { key: port.key, index: index, alignment: alignment, x: portArea.x + node.def.width, y: y };\n });\n break;\n }\n }\n }\n addPorts(node) {\n this.addNodePorts(node.def.ports.left, node, ui_base_1.Alignment.Left);\n this.addNodePorts(node.def.ports.right, node, ui_base_1.Alignment.Right);\n this.addNodePorts(node.def.ports.top, node, ui_base_1.Alignment.Top);\n this.addNodePorts(node.def.ports.bottom, node, ui_base_1.Alignment.Bottom);\n }\n getColor(node) {\n let colorMgr = this._rendererManager.getColorManager();\n let color;\n if (colorMgr.hasColor(node.key)) {\n color = colorMgr.getColor(node.key);\n }\n else if (node.type) {\n color = colorMgr.getColor(node.type[0]);\n }\n else {\n color = colorMgr.getColor(node.key);\n }\n return color;\n }\n getClasses(node) {\n let ret = node.key;\n node.type.forEach(function (type) {\n ret += ' ' + type;\n });\n return ret;\n }\n addNode(node) {\n node.configureNode();\n this._nodes[node.def.key] = node.def;\n }\n createRenderedLinks() {\n let graph = this._element;\n let links = graph.links;\n let renderedLinks = [];\n let self = this;\n links.forEach(function (link) {\n let sourceNode = self._nodes[link.from];\n let targetNode = self._nodes[link.to];\n if (!sourceNode || !targetNode) {\n return;\n }\n let sourcePort = self._nodePortInfo[sourceNode.key][link.fromPort];\n let targetPort = self._nodePortInfo[targetNode.key][link.toPort];\n let renderedLink = {\n def: link,\n source: {\n node: sourceNode,\n alignment: sourcePort.alignment\n },\n target: {\n node: targetNode,\n alignment: targetPort.alignment\n },\n };\n renderedLinks.push(renderedLink);\n });\n return renderedLinks;\n }\n layout(nodes, links) {\n let graph = this._element;\n let requiresLayout = graph.nodes && graph.nodes.length > 0 &&\n graph.nodes[0].x === undefined;\n if (requiresLayout) {\n var g = new dagre.graphlib.Graph();\n g.setGraph({ rankdir: 'LR' });\n g.setDefaultEdgeLabel(function () { return {}; });\n nodes.forEach((node) => {\n node.def['label'] = node.def.key;\n g.setNode(node.def.key, node.def);\n });\n links.forEach((link) => {\n g.setEdge(link.def.from, link.def.to);\n });\n dagre.layout(g);\n nodes.forEach((node) => {\n node.updatePosition({ dx: 0, dy: 0 });\n });\n }\n }\n render(options) {\n utilities_1.merge(this._options, options);\n if (!this._renderer) {\n if (this._options.forceSvgRenderer) {\n this._renderer = new D3PortDiagramSVG(this._element, this._rendererManager, this._parent, this);\n }\n else {\n this._renderer = new D3PortDiagramPixi(this._element, this._rendererManager, this._parent, this);\n }\n this._renderer.setColorManager(this._colorMgr);\n }\n this._renderer.render(this._options);\n }\n}\nexports.D3PortDiagram = D3PortDiagram;\nclass D3PortDiagramSVG extends base_1.D3ConnectedGraphSVG {\n constructor(element, renderer, parent, portDiagram) {\n super(element, renderer, parent);\n base_1.DiagramBase.prototype.bind.call(this, this._renderer, this._element);\n this._portDiagram = portDiagram;\n this.getLinkStartXY = portDiagram.getLinkStartXY;\n this.getLinkEndXY = portDiagram.getLinkEndXY;\n }\n render(options) {\n let self = this;\n this.getHeightWidth(options);\n let graphArea = self.initializeGraphArea(options);\n self.initializeLinkLayer(graphArea);\n let nodeRenderers = self.renderNodes(graphArea);\n let renderedLinks = this._portDiagram.createRenderedLinks();\n self._portDiagram.layout(nodeRenderers, renderedLinks);\n this.renderLinkHelper(graphArea, renderedLinks);\n self.configureView();\n }\n renderNodes(graphArea) {\n let self = this;\n let graph = self._element;\n self._portDiagram._nodePortInfo = {};\n let nodeRenderers = [];\n let nodeGroup = graphArea.append('g')\n .attr('class', 'nodes');\n graph.nodes.forEach((nodeDef) => {\n if (graph.decimator && !graph.decimator(nodeDef)) {\n return;\n }\n // has to happen before addNode/addPorts\n let node;\n // has to happen before addNode/addPorts\n if (graph.nodeRenderType === graph_1.NodeType.NodeRectangle ||\n nodeDef.renderType === graph_1.NodeType.NodeRectangle) {\n node = new SVGRectangleNode(nodeDef, self._portDiagram, self._svg);\n }\n else {\n node = new SVGSimpleNode(nodeDef, self._portDiagram);\n }\n self._portDiagram.addNode(node);\n self._portDiagram.addPorts(node);\n nodeRenderers.push(node);\n // the function for moving the nodes\n function dragMove(nodeDef) {\n self._dataTooltip.hideTooltip();\n node.updatePosition(d3.event);\n let linksToUpdate = [];\n graphArea.selectAll('.link.' + nodeDef.key)\n .each(function (link) {\n linksToUpdate.push(link);\n });\n self.renderLinkHelper(graphArea, linksToUpdate, true);\n }\n let renderedNode = node.renderNode({ group: nodeGroup })\n .on('mouseenter', self.nodeHoverStart)\n .on('mouseleave', self.hoverEnd)\n .call(d3.drag()\n .on('drag', dragMove));\n renderedNode.node()['__data__'] = node.def;\n svg_helper_1.addClickHelper(renderedNode, self.getOptions(), graph.onClick, graph.onDoubleClick, graph.contextMenuItems, self._dataTooltip, graph, node.def, node.def.key);\n self._dataTooltip.setTarget(renderedNode);\n // we do this here instead of using the renderPorts helper\n // function because it's expensive to call selectAll multiple\n // times (aka once for each node if we call that helper)\n if (!self._element.disablePortRendering) {\n // gather all the ports for rendering\n let nodePorts = this._portDiagram._nodePortInfo[node.def.key];\n for (let portKey in nodePorts) {\n let port = nodePorts[portKey];\n let renderedPort = node.renderPort(port);\n renderedPort.node()['__data__'] = port;\n svg_helper_1.addClickHelper(renderedPort, self.getOptions(), graph.onClick, graph.onDoubleClick, graph.contextMenuItems, this._dataTooltip, graph, port);\n this._dataTooltip.setTarget(renderedPort);\n }\n }\n });\n return nodeRenderers;\n }\n}\nexports.D3PortDiagramSVG = D3PortDiagramSVG;\nrenderer_1.D3Renderer.register(ui_base_1.UIType.PortDiagram, D3PortDiagram);\n// WEBGL STUFF\nclass D3PortDiagramPixi extends base_1.D3ConnectedGraphPixi {\n constructor(element, renderer, parent, portDiagram) {\n super(element, renderer, parent);\n this._portDiagram = portDiagram;\n this.getLinkStartXY = portDiagram.getLinkStartXY;\n this.getLinkEndXY = portDiagram.getLinkEndXY;\n }\n renderNodes(stage) {\n let self = this;\n let graph = self._element;\n // create graphics managers for caching\n self._nodeGraphics = new pixi_helper_1.GraphicsManager(self._pixi);\n if (!self._element.disablePortRendering) {\n self._portGraphics = new pixi_helper_1.GraphicsManager(self._pixi);\n }\n let nodeRenderers = [];\n graph.nodes.forEach(function (node) {\n // initialize node info\n let nodeRenderer;\n // has to happen before addNode/addPorts\n if (graph.nodeRenderType === graph_1.NodeType.NodeRectangle ||\n node.renderType === graph_1.NodeType.NodeRectangle) {\n nodeRenderer = new PIXIRectangleNode(node, self._pixiHelper);\n }\n else {\n nodeRenderer = new PIXISimpleNode(node);\n }\n self._portDiagram.addNode(nodeRenderer);\n self._portDiagram.addPorts(nodeRenderer);\n nodeRenderers.push(nodeRenderer);\n if (graph.decimator && !graph.decimator(node)) {\n return;\n }\n let color = parseInt(self._portDiagram.getColor(node).substring(1), 16);\n // RENDER THE NODE\n let nodeGraphic = nodeRenderer.renderNode({\n color: color,\n manager: self._nodeGraphics\n });\n nodeGraphic.__data__ = node;\n nodeGraphic.renderer = nodeRenderer;\n // add item lets us do selection\n self._pixiHelper.addSelection(node.key, nodeGraphic);\n self._pixiHelper.addInteractionHelper(nodeGraphic, self.getOptions(), graph.onClick, graph.onDoubleClick, graph.contextMenuItems, self.nodeHoverStart, self.hoverEnd, self._dataTooltip, graph, node, node.key);\n // RENDER THE PORTS\n if (!self._element.disablePortRendering) {\n // gather all the ports for rendering\n let nodePorts = self._portDiagram._nodePortInfo[node.key];\n for (let portKey in nodePorts) {\n let port = nodePorts[portKey];\n let portGraphic = nodeRenderer.renderPort(port, {\n color: color,\n manager: self._portGraphics\n });\n self._pixiHelper.addSelection(node.key, portGraphic);\n self._pixiHelper.addSelection(node.key + port.key, portGraphic);\n self._pixiHelper.addInteractionHelper(portGraphic, self.getOptions(), graph.onClick, graph.onDoubleClick, graph.contextMenuItems, self.nodeHoverStart, self.hoverEnd, self._dataTooltip, graph, { def: port }, node.key);\n }\n }\n // CONFIGURE HOVER/DRAG ON CONTAINER\n let nodeContainer = nodeRenderer.getNode();\n // the function for moving the nodes\n let prevPos;\n function dragStart(event) {\n // store a reference to the data\n // the reason for this is because of multitouch\n // we want to track the movement of this particular touch\n this.data = event.data;\n this.dragging = true;\n // itemDragging is a workaround to have d3 and pixi coexist for events\n stage.itemDragging = true;\n prevPos = this.data.getLocalPosition(nodeContainer.parent);\n event.stopPropagation();\n }\n function dragMove(event) {\n if (this.dragging) {\n self._dataTooltip.hideTooltip();\n let pos = this.data.getLocalPosition(nodeContainer.parent);\n pos.dx = pos.x - prevPos.x;\n pos.dy = pos.y - prevPos.y;\n // TODO make NodeType a class to get rid of all these if statements\n nodeRenderer.updatePosition(pos);\n self.renderLinkHelper(stage, self._renderedLinks);\n self._pixiHelper.render();\n event.stopPropagation();\n prevPos = pos;\n }\n }\n function dragEnd() {\n this.dragging = false;\n // itemDragging is a workaround to have d3 and pixi coexist for events\n stage.itemDragging = false;\n // set the interaction data to null\n this.data = null;\n }\n nodeGraphic\n .on('mousedown', dragStart)\n .on('touchstart', dragStart)\n // events for drag end\n .on('mouseup', dragEnd)\n .on('mouseupoutside', dragEnd)\n .on('touchend', dragEnd)\n .on('touchendoutside', dragEnd)\n // events for drag move\n .on('mousemove', dragMove)\n .on('touchmove', dragMove);\n stage.addChild(nodeContainer);\n });\n return nodeRenderers;\n }\n _select(selection) {\n if (selection) {\n let items = this._pixiHelper.getSelection(selection);\n if (items) {\n let self = this;\n items.forEach(function (elem, index) {\n // assigned this renderer when rendering the node so we\n // could find it later easily\n elem.renderer.select(selection, elem, index, self._nodeGraphics);\n });\n }\n this._pixiHelper.render();\n }\n }\n _unselect(selection) {\n let items = this._pixiHelper.getSelection(selection);\n if (items) {\n items.forEach(function (elem, index) {\n // assigned this renderer when rendering the node so we\n // could fifnd it later easily\n elem.renderer.unselect(selection, elem, index);\n });\n this._pixiHelper.render();\n }\n }\n // cache the basic graphic structures so we can clone them\n // vs recreating them\n render(options) {\n utilities_1.merge(this._options, options);\n this.getHeightWidth(this._options);\n let self = this;\n let graph = self._element;\n let first = this._pixiHelper === undefined;\n if (!first && (options.height || options.width)) {\n this._pixi.resize(self._options.width, self._options.height);\n this._pixiHelper.render();\n return;\n }\n self._portDiagram._nodePortInfo = {};\n let stage = self.initializeGraphArea(options);\n let nodeRenderers = self.renderNodes(stage);\n this._renderedLinks = self._portDiagram.createRenderedLinks();\n self._portDiagram.layout(nodeRenderers, this._renderedLinks);\n self.renderLinkHelper(stage, this._renderedLinks);\n //Render the stage\n self.configureView();\n self._pixiHelper.render(stage);\n }\n}\nexports.D3PortDiagramPixi = D3PortDiagramPixi;\nrenderer_1.D3Renderer.register(ui_base_1.UIType.PortDiagram, D3PortDiagram);\n\n\n//# sourceURL=webpack://UWT/./src/core/connected-graph/port.ts?");
/***/ }),
/***/ "./src/core/connected-graph/sankey.ts":
/*!********************************************!*\
!*** ./src/core/connected-graph/sankey.ts ***!
\********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ui_base_1 = __webpack_require__(/*! ../../interface/ui-base */ \"./src/interface/ui-base.ts\");\nconst svg_helper_1 = __webpack_require__(/*! ../svg-helper */ \"./src/core/svg-helper.ts\");\nconst renderer_1 = __webpack_require__(/*! ../renderer */ \"./src/core/renderer.ts\");\nconst d3 = __webpack_require__(/*! d3 */ \"d3\");\nconst d3_sankey_1 = __webpack_require__(/*! d3-sankey */ \"d3-sankey\");\nconst base_1 = __webpack_require__(/*! ./base */ \"./src/core/connected-graph/base.ts\");\nclass D3SankeyDiagram extends base_1.D3ConnectedGraphSVG {\n constructor(element, renderer, parent) {\n super(element, renderer, parent);\n base_1.ConnectedGraphBase.prototype.initializeGraph.call(this, element);\n }\n renderLinks(graphArea) {\n let self = this;\n let diagram = self._element;\n var path = self._sankey.link();\n // add in the links\n var links = graphArea.append('g')\n .classed('links', true)\n .selectAll('.link')\n .data(diagram.links)\n .enter().append('path')\n .attr('class', function (d) { return d.from + '-' + d.to; })\n .attr('d', path)\n .classed('link', true)\n .style('stroke-width', function (d) { return Math.max(1, d.dy); })\n .sort(function (a, b) { return b.dy - a.dy; })\n .on('mouseenter', self.linkHoverStart)\n .on('mouseleave', self.hoverEnd)\n .each(function (d) {\n svg_helper_1.addClickHelper(d3.select(this), self.getOptions(), diagram.onClick, diagram.onDoubleClick, diagram.contextMenuItems, self._dataTooltip, diagram, d);\n });\n self._dataTooltip.setTarget(links);\n return links;\n }\n renderNodes(graphArea, dragMove) {\n let self = this;\n let diagram = self._element;\n let width = this._options.width;\n var nodes = graphArea.append('g')\n .classed('nodes', true)\n .selectAll('.nodeGroup')\n .data(diagram.nodes)\n .enter().append('g')\n .classed('nodeGroup', true)\n .attr('transform', function (d) {\n return 'translate(' + d.x + ',' + d.y + ')';\n })\n .each(function (d) {\n svg_helper_1.addClickHelper(d3.select(this), self.getOptions(), diagram.onClick, diagram.onDoubleClick, diagram.contextMenuItems, self._dataTooltip, diagram, d);\n })\n .call(d3.drag()\n .subject(function (d) {\n // put this here because on click isn't hit for\n // the sankey nodes otherwise\n if (!self.getOptions().disableSelection) {\n svg_helper_1.onSelectHelper(self._element, d, d.key);\n }\n return d;\n })\n .on('start', function () {\n svg_helper_1.SVGRenderer.IS_RESIZING = true;\n this.parentNode.appendChild(this);\n })\n .on('drag', dragMove)\n .on('end', function () {\n svg_helper_1.SVGRenderer.IS_RESIZING = false;\n }));\n // add the rectangles for the nodes\n let colorMgr = self._renderer.getColorManager();\n nodes.append('rect')\n .attr('height', function (d) { return d.dy; })\n .attr('width', self._sankey.nodeWidth())\n .attr('class', function (d) {\n if (d.type) {\n return d.type + ' ' + d.key;\n }\n return d.key;\n })\n .classed('node', true)\n .style('fill', function (d) {\n if (d.type) {\n return colorMgr.getColor(d.type);\n }\n return colorMgr.getColor(d.key);\n })\n .style('stroke', function (d) {\n return d3.rgb(d.color).darker(2);\n })\n .on('mouseenter', self.nodeHoverStart)\n .on('mouseleave', self.hoverEnd);\n // add in the title for the nodes\n nodes.append('text')\n .attr('x', -6)\n .attr('y', function (d) { return d.dy / 2; })\n .attr('dy', '.35em')\n .attr('text-anchor', 'end')\n .attr('transform', null)\n .text(function (d) { return d.key; })\n .filter(function (d) { return d.x < width / 2; })\n .attr('x', 6 + self._sankey.nodeWidth())\n .attr('text-anchor', 'start');\n self._dataTooltip.setTarget(nodes);\n return nodes;\n }\n render(options) {\n let self = this;\n let diagram = self._element;\n this.getHeightWidth(this._options);\n let width = this._options.width;\n let height = this._options.height;\n // Set the sankey diagram properties\n if (d3.sankey !== undefined) {\n self._sankey = d3.sankey()\n .size([width, height]);\n }\n else {\n self._sankey = d3_sankey_1.sankey()\n .size([width, height]);\n }\n var path = self._sankey.link();\n this._sankey\n .nodes(diagram.nodes)\n .links(diagram.links)\n .layout(32);\n // add in the nodes\n // the function for moving the nodes\n function dragMove(d) {\n d3.select(this).attr('transform', 'translate(' + (d.x = Math.max(0, Math.min(width - d.dx, d3.event.x)))\n + ',' + (d.y = Math.max(0, Math.min(height - d.dy, d3.event.y))) + ')');\n self._sankey.relayout();\n links.attr('d', path);\n }\n let graphArea = self.initializeGraphArea(options);\n let links = this.renderLinks(graphArea);\n this.renderNodes(graphArea, dragMove);\n self.configureView();\n }\n}\nexports.D3SankeyDiagram = D3SankeyDiagram;\nrenderer_1.D3Renderer.register(ui_base_1.UIType.FlowDiagram, D3SankeyDiagram);\n\n\n//# sourceURL=webpack://UWT/./src/core/connected-graph/sankey.ts?");
/***/ }),
/***/ "./src/core/connected-graph/simple.ts":
/*!********************************************!*\
!*** ./src/core/connected-graph/simple.ts ***!
\********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ui_base_1 = __webpack_require__(/*! ../../interface/ui-base */ \"./src/interface/ui-base.ts\");\nconst svg_helper_1 = __webpack_require__(/*! ../svg-helper */ \"./src/core/svg-helper.ts\");\nconst renderer_1 = __webpack_require__(/*! ../renderer */ \"./src/core/renderer.ts\");\nconst d3 = __webpack_require__(/*! d3 */ \"d3\");\nconst base_1 = __webpack_require__(/*! ./base */ \"./src/core/connected-graph/base.ts\");\nclass D3SimpleGraph extends base_1.D3ConnectedGraphSVG {\n constructor(element, renderer, parent) {\n super(element, renderer, parent);\n base_1.ConnectedGraphBase.prototype.initializeGraph.call(this, element);\n // here we convert link.source/link.target to their actual nodes to match as\n // this is what the base graph helpers expect\n let graph = this._element;\n graph.links.forEach(function (link) {\n if (typeof link.source === 'number') {\n link.source = graph.nodes[link.source];\n }\n if (typeof link.target === 'number') {\n link.target = graph.nodes[link.target];\n }\n });\n }\n renderLinks(graphArea) {\n let self = this;\n let graph = self._element;\n let links = graphArea.append('g')\n .classed('links', true)\n .selectAll('line')\n .data(graph.links)\n .enter().append('line')\n .attr('x1', function (d) { return d.source.x; })\n .attr('y1', function (d) { return d.source.y; })\n .attr('x2', function (d) { return d.target.x; })\n .attr('y2', function (d) { return d.target.y; })\n .attr('stroke-width', 1)\n .attr('class', function (d) {\n return d.source.key + '-' + d.target.key +\n ' ' + d.source.key +\n ' ' + d.target.key;\n })\n .classed('link', true)\n .on('mouseenter', self.linkHoverStart)\n .on('mouseleave', self.hoverEnd)\n .each(function (d) {\n svg_helper_1.addClickHelper(d3.select(this), self.getOptions(), graph.onClick, graph.onDoubleClick, graph.contextMenuItems, self._dataTooltip, graph, d.key, d.key);\n });\n self._dataTooltip.setTarget(links);\n return links;\n }\n renderNodes(graphArea, dragStart, dragMove, dragEnd) {\n let self = this;\n let graph = self._element;\n let colorMgr = self._renderer.getColorManager();\n let nodes = graphArea.append('g')\n .classed('nodes', true)\n .selectAll('circle')\n .data(graph.nodes)\n .enter().append('circle')\n .attr('r', 5)\n .attr('cx', function (d) { return d.x; })\n .attr('cy', function (d) { return d.y; })\n .attr('fill', function (d) {\n if (d.type) {\n return colorMgr.getColor(d.type);\n }\n return colorMgr.getColor(d.key);\n })\n .attr('class', function (d) {\n if (d.type) {\n return d.type + ' ' + d.key;\n }\n return d.key;\n })\n .each(function (d) {\n svg_helper_1.addClickHelper(d3.select(this), self.getOptions(), graph.onClick, graph.onDoubleClick, graph.contextMenuItems, self._dataTooltip, graph, d.key, d.key);\n })\n .classed('node', true)\n .on('mouseenter', self.nodeHoverStart)\n .on('mouseleave', self.hoverEnd)\n .call(d3.drag()\n .on('start', dragStart)\n .on('drag', dragMove)\n .on('end', dragEnd));\n self._dataTooltip.setTarget(nodes);\n return nodes;\n }\n render(options) {\n let self = this;\n this.getHeightWidth(options);\n // the function for moving the nodes\n function dragMove(node) {\n d3.select(this)\n .attr('cx', d3.event.x)\n .attr('cy', d3.event.y);\n node.x = d3.event.x;\n node.y = d3.event.y;\n graphArea.selectAll('.' + node.key + '.link')\n .each(function (link) {\n // Transform to d3 Object\n if (node.key === link.source.key) {\n d3.select(this).attr('x1', function (d) { return d.source.x; })\n .attr('y1', function (d) { return d.source.y; });\n }\n else {\n d3.select(this)\n .attr('x2', function (d) { return d.target.x; })\n .attr('y2', function (d) { return d.target.y; });\n }\n });\n }\n let graphArea = self.initializeGraphArea(options);\n this.renderLinks(graphArea);\n this.renderNodes(graphArea, undefined, dragMove, undefined);\n self.configureView();\n }\n}\nexports.D3SimpleGraph = D3SimpleGraph;\nrenderer_1.D3Renderer.register(ui_base_1.UIType.SimpleGraph, D3SimpleGraph);\n\n\n//# sourceURL=webpack://UWT/./src/core/connected-graph/simple.ts?");
/***/ }),
/***/ "./src/core/context-menu.ts":
/*!**********************************!*\
!*** ./src/core/context-menu.ts ***!
\**********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction positionMenu(div, rect) {\n let bodyWidth = document.body.clientWidth;\n let bodyHeight = document.body.clientHeight;\n // these points define the top left of our menu\n let divX = rect.left;\n let divY = rect.top;\n // if we draw on the right we do\n if (rect.right + div.clientWidth < bodyWidth) {\n divX = rect.right;\n }\n else {\n divX = rect.left - div.clientWidth;\n }\n // if we cannot draw down we draw up\n if (rect.top + div.clientHeight > bodyHeight) {\n divY = rect.top - div.clientHeight;\n }\n div.style.left = (divX - 2) + 'px';\n div.style.top = (divY - 2) + 'px';\n}\nfunction createMenu(event, data, contextMenuItems, rect, propogateEvent) {\n let menuDiv;\n menuDiv = document.createElement('div');\n menuDiv.setAttribute('class', 'context-menu');\n menuDiv.oncontextmenu = function (e) {\n removeMenu();\n e.preventDefault();\n };\n document.body.appendChild(menuDiv);\n if (contextMenuItems.length > 0) {\n let menuList = document.createElement('ul');\n menuDiv.appendChild(menuList);\n for (let i = 0; i < contextMenuItems.length; ++i) {\n let item = contextMenuItems[i];\n let li = document.createElement('li');\n if (item.divider) {\n li.className += ' is-divider';\n li.innerHTML = '<hr>';\n }\n else {\n if (!item.title) {\n console.error('No title attribute set. Check the spelling of your options.');\n }\n if (item.disabled) {\n li.className += ' is-disabled';\n }\n if (!item.action && !item.submenu) {\n li.className += ' is-header';\n }\n if (item.submenu) {\n li.innerHTML = `<span><text>${item.title}</text>` +\n '<text style=\"width: 5px; float: right; color: #000000A0\">►</text></span>';\n }\n else {\n li.innerHTML = item.title;\n }\n li.onclick = function (d) {\n if (item.disabled)\n return; // do nothing if disabled\n if (!item.action)\n return; // headers have no \"action\"\n item.action(li, data, i);\n removeMenu();\n };\n li.onmouseenter = function () {\n removeSubmenu(contextMenuItems);\n if (item.submenu) {\n let relativeRect = li.getBoundingClientRect();\n let rect = {\n top: relativeRect.top + window.scrollY,\n bottom: relativeRect.bottom + window.scrollY,\n left: relativeRect.left + window.scrollX,\n right: relativeRect.right + window.scrollX,\n height: relativeRect.height,\n width: relativeRect.width\n };\n item.submenuDiv = createMenu(event, data, item.submenu, rect, propogateEvent);\n }\n };\n }\n menuList.appendChild(li);\n }\n menuDiv.style.display = 'block';\n positionMenu(menuDiv, rect);\n if (!propogateEvent) {\n event.stopPropagation();\n }\n }\n return menuDiv;\n}\nfunction removeMenuItem(item) {\n if (item.submenuDiv) {\n document.body.removeChild(item.submenuDiv);\n delete item.submenuDiv;\n }\n if (item.submenu) {\n removeSubmenu(item.submenu);\n }\n}\nfunction removeSubmenu(items) {\n items.forEach(function (item, index, items) {\n removeMenuItem(item);\n });\n}\nfunction removeMenu() {\n removeSubmenu(lastMenu);\n let menus = document.getElementsByClassName('context-menu');\n while (menus.length) {\n document.body.removeChild(menus[0]);\n }\n}\nfunction keyupListener() {\n window.onkeyup = function (e) {\n if (e.keyCode === 27) {\n removeMenu();\n }\n };\n}\nlet lastMenu = [];\nfunction showContextMenu(event, data, contextMenuItems, propogateEvent = false) {\n if (event) {\n keyupListener();\n removeMenu();\n lastMenu = contextMenuItems;\n createMenu(event, data, contextMenuItems, {\n left: event.pageX,\n top: event.pageY,\n right: event.pageX,\n bottom: event.pageY,\n height: 0,\n width: 0\n }, propogateEvent);\n event.preventDefault();\n }\n}\nexports.showContextMenu = showContextMenu;\n\n\n//# sourceURL=webpack://UWT/./src/core/context-menu.ts?");
/***/ }),
/***/ "./src/core/element-manager.ts":
/*!*************************************!*\
!*** ./src/core/element-manager.ts ***!
\*************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utilities_1 = __webpack_require__(/*! ./utilities */ \"./src/core/utilities.ts\");\nconst ui_base_1 = __webpack_require__(/*! ../interface/ui-base */ \"./src/interface/ui-base.ts\");\nvar GroupType;\n(function (GroupType) {\n GroupType[GroupType[\"Tooltip\"] = 0] = \"Tooltip\";\n GroupType[GroupType[\"Highlight\"] = 1] = \"Highlight\";\n GroupType[GroupType[\"Render\"] = 2] = \"Render\";\n GroupType[GroupType[\"Focus\"] = 3] = \"Focus\";\n GroupType[GroupType[\"Select\"] = 4] = \"Select\";\n GroupType[GroupType[\"None\"] = 5] = \"None\";\n})(GroupType || (GroupType = {}));\nclass GroupInfo {\n constructor() {\n this._nameMap = {};\n this._objectMap = new Map();\n }\n}\nexports.GroupInfo = GroupInfo;\nfunction addTooltipCallback(elem) {\n if (!elem.getTooltip) {\n elem.getTooltip = function (event) {\n if (elem.renderer && elem.renderer.getTooltipData) {\n return elem.renderer.getTooltipData(elem, event);\n }\n return [{ source: elem, group: '', metrics: {} }];\n };\n }\n}\nfunction addClickCallback(elem) {\n if (!elem.api) {\n elem.api = {};\n }\n if (!elem.api.select) {\n elem.api.select = function (event) {\n if (elem.renderer && elem.renderer.select) {\n return elem.renderer.select(elem, event);\n }\n };\n }\n}\nfunction addHoverCallback(elem) {\n if (!elem.api) {\n elem.api = {};\n }\n if (!elem.api.cursorChange) {\n elem.api.cursorChange = function (event) {\n if (elem.renderer && elem.renderer.cursorChange) {\n return elem.renderer.cursorChange(elem, event);\n }\n };\n }\n if (!elem.api.focus) {\n elem.api.focus = function (event) {\n /** @deprecated ('Deprecated since 1.14.0 in favor of focus. Will be removed in 2.x') */\n if (elem.renderer && !elem.renderer.focus && elem.renderer.hover) {\n return elem.renderer.hover(elem, event);\n }\n // end deprecated\n if (elem.renderer && elem.renderer.focus) {\n return elem.renderer.focus(elem, event);\n }\n };\n elem.api.hover = elem.api.focus;\n }\n if (!elem.api.brush) {\n elem.api.brush = function (event) {\n if (elem.renderer && elem.renderer.brush) {\n return elem.renderer.brush(elem, event);\n }\n };\n }\n if (!elem.api.zoom) {\n elem.api.zoom = function (event) {\n if (elem.renderer && elem.renderer.zoom) {\n return elem.renderer.zoom(elem, event);\n }\n };\n }\n}\nfunction addRenderCallback(elem) {\n if (!elem.api) {\n elem.api = {};\n }\n if (!elem.api.brush) {\n elem.api.brush = function (event) {\n if (elem.renderer && elem.renderer.brush) {\n return elem.renderer.brush(elem, event);\n }\n };\n }\n if (!elem.api.render) {\n elem.api.render = function (renderer, options) {\n if (!renderer) {\n renderer = elem.renderer;\n }\n else {\n elem.renderer = renderer;\n }\n return new Promise(function (resolve, reject) {\n if (renderer) {\n elem.renderer.render(elem, options);\n resolve('Ok');\n }\n reject('No renderer available');\n });\n };\n }\n}\n/** adds some default callbacks to a given UI object */\nfunction addCallbacks(elem) {\n addTooltipCallback(elem);\n addHoverCallback(elem);\n addClickCallback(elem);\n addRenderCallback(elem);\n}\nexports.addCallbacks = addCallbacks;\n/** used to group UI elements together. Can be used to sync\n * selection/tooltips\n */\nclass ElementManager {\n constructor() {\n /** the list of elements managed by this manager */\n this._elems = [];\n let self = this;\n this._groupInfo = [];\n for (let i = 0; i < 5 /* None */; ++i) {\n this._groupInfo.push(new GroupInfo());\n }\n this._onHoverCallback = function (event) {\n if (!event.caller) {\n console.warn('Warning no caller specified for this event, cannot propoate changes', event);\n }\n let elems = self._groupInfo[3 /* Focus */]._objectMap.get(event.caller);\n if (elems) {\n if (self._hoverCallback) {\n self._hoverCallback(elems, event);\n }\n else {\n for (let i = 0; i < elems.length; ++i) {\n let elem = elems[i];\n /** @deprecated to remove in 2.x */\n if (event.caller !== elem && elem.api && !elem.api.focus && elem.api.hover) {\n elem.api.hover(event);\n }\n // end deprecated\n if (event.caller !== elem && elem.api && elem.api.focus) {\n elem.api.focus(event);\n }\n }\n }\n }\n };\n let dispatch = function (groupType, callback, apiName) {\n return function (event) {\n if (!event.caller) {\n console.warn('Warning no caller specified for this event, cannot propagate changes', event);\n }\n let elems = self._groupInfo[groupType]._objectMap.get(event.caller);\n if (elems) {\n if (callback) {\n callback(elems, event);\n }\n else {\n for (let i = 0; i < elems.length; ++i) {\n let elem = elems[i];\n if (event.caller !== elem && elem.api && elem.api[apiName]) {\n elem.api[apiName](event);\n }\n }\n }\n }\n };\n };\n this._onZoomCallback = dispatch(1 /* Highlight */, this._zoomCallback, 'zoom');\n this._onCursorChangeCallback = dispatch(1 /* Highlight */, this._cursorChangeCallback, 'cursorChange');\n this._onBrushCallback = dispatch(1 /* Highlight */, this._brushCallback, 'brush');\n this._onClickCallback = dispatch(4 /* Select */, this._clickCallback, 'select');\n this._onTooltipCallback = function (event) {\n if (!event.caller) {\n console.warn('Warning no caller specified for this event, cannot propoate changes', event);\n }\n let ret = [];\n let elems = self._groupInfo[0 /* Tooltip */]._objectMap.get(event.caller);\n if (elems) {\n if (self._tooltipCallback) {\n ret = ret.concat(self._tooltipCallback(elems, event));\n }\n else {\n for (let i = 0; i < elems.length; ++i) {\n let elem = elems[i];\n let data = elem.getTooltip(event);\n ret = ret.concat(data);\n }\n }\n if (event.data && event.data.tooltip) {\n event.data.tooltip.setData(event.data.tooltip.getTitle(), ret);\n }\n return ret;\n }\n };\n this._onUpdateCallback = function (caller, options) {\n if (!caller) {\n console.warn('Warning no caller specified for this event, cannot propoate changes');\n }\n let elems = self._groupInfo[2 /* Render */]._objectMap.get(caller);\n if (elems) {\n for (let i = 0; i < elems.length; ++i) {\n let elem = elems[i];\n if (elem.renderer) {\n // use the previous renderer\n elem.renderer.render(elem, options);\n }\n }\n }\n };\n }\n removeFromGroup(elem, type) {\n let list = this._groupInfo[type]._objectMap.get(elem);\n if (list) {\n utilities_1.removeFromList(elem, list);\n }\n }\n addToGroup(elem, groupName, type) {\n if (!this._groupInfo[type]._nameMap.hasOwnProperty(groupName)) {\n this._groupInfo[type]._nameMap[groupName] = [];\n }\n this._groupInfo[type]._nameMap[groupName].push(elem);\n this._groupInfo[type]._objectMap.set(elem, this._groupInfo[type]._nameMap[groupName]);\n }\n /**\n * add a elem to the manager\n *\n * @param elem - the elem that should should be added\n * @param tooltipGroupName - Name of the group that this elem should be \"ganged\"\n * with when showing tooltips. If not specified, this elem will not be \"ganged\" with any\n * other elem.\n * @param highlightGroupName - Name of the group that this elem should be \"ganged\"\n * with when doing highlighting. If not specified, this elem will not be \"ganged\" with any\n * other elem.\n * @param renderGroupName - Name of the group that this elem should be \"ganged\"\n * with when rerendering. If not specified, this elem will not be \"ganged\" with any\n * other elem.\n * @return - The elem manager instance.\n */\n addElement(elem, tooltipGroupName, highlightGroupName, renderGroupName) {\n if (!elem) {\n return this;\n }\n let index = this._elems.indexOf(elem);\n if (index === -1) {\n addCallbacks(elem);\n this._elems.push(elem);\n let renderedElements;\n if (!elem.getElements) {\n elem.getElements = function () { return [elem]; };\n }\n renderedElements = elem.getElements();\n for (let i = 0; i < renderedElements.length; ++i) {\n let renderedElement = renderedElements[i];\n if (tooltipGroupName) {\n this.addToTooltipGroup(renderedElement, tooltipGroupName);\n }\n if (highlightGroupName) {\n this.addToHighlightGroup(renderedElement, highlightGroupName);\n }\n if (renderGroupName) {\n this.addToRenderGroup(renderedElement, renderGroupName);\n }\n }\n }\n else {\n throw 'Element already exists in this manager';\n }\n elem.manager = this;\n return this;\n }\n /**\n * remove a elem from the manager, removes it from all groups\n *\n * @param elem - the elem that should should be removed\n *\n * @return - The elem manager instance.\n */\n removeElement(elem) {\n if (!elem) {\n return this;\n }\n let renderedElements;\n if (elem.getElements) {\n renderedElements = elem.getElements();\n }\n else {\n renderedElements = [elem];\n }\n for (let i = 0; i < renderedElements.length; ++i) {\n let renderedElement = renderedElements[i];\n this.removeFromTooltipGroup(renderedElement);\n this.removeFromHighlightGroup(renderedElement);\n this.removeFromRenderGroup(renderedElement);\n }\n utilities_1.removeFromList(elem, this._elems);\n delete elem.manager;\n return this;\n }\n /**\n * Return all the elems in this list\n * @return the list of elems\n */\n getElements() {\n return this._elems;\n }\n /**\n * user callback called when a tooltip is created\n *\n * @param the functiotn to be called\n */\n setZoomCallback(callback) {\n this._zoomCallback = callback;\n return this;\n }\n /**\n * user callback called when a hover event happens\n *\n * @param the function to be called\n */\n setHoverCallback(callback) {\n this._hoverCallback = callback;\n return this;\n }\n /**\n * user callback called when a hover event happens\n *\n * @param the function to be called\n */\n setClickCallback(callback) {\n this._clickCallback = callback;\n return this;\n }\n /**\n * user callback called when a tooltip is created\n *\n * @param the functiotn to be called\n */\n setTooltipCallback(callback) {\n this._tooltipCallback = callback;\n return this;\n }\n /**\n * user callback called when a selection event happens\n *\n * @param the function to be called\n */\n setBrushCallback(callback) {\n this._brushCallback = callback;\n return this;\n }\n /**\n * set the group this tooltip is associated with\n *\n * @param elem - the elem that should should be \"ganged\"\n * @param groupName - Name of the group that this elem should be \"ganged\"\n * with.\n *\n * @return - The elem manager instance.\n */\n addToTooltipGroup(elem, groupName) {\n addTooltipCallback(elem);\n this.removeFromTooltipGroup(elem);\n this.addToGroup(elem, groupName, 0 /* Tooltip */);\n let self = this;\n if (elem.onTooltip) {\n let func = elem.onTooltip;\n elem.onTooltip = function (event) {\n self._onTooltipCallback(event);\n func(event);\n };\n }\n else {\n elem.onTooltip = this._onTooltipCallback;\n }\n return this;\n }\n /**\n * remove the elem from the tooltip group it is in\n *\n * @param elem - the elem that should should be \"unganged\"\n *\n * @return - The elem manager instance.\n */\n removeFromTooltipGroup(elem) {\n this.removeFromGroup(elem, 0 /* Tooltip */);\n return this;\n }\n /**\n * set the group to sync this elem with\n *\n * @param elem - the elem that should should be \"ganged\"\n * @param groupName - Name of the group that this elem should be \"ganged\"\n * with.\n *\n * @return - The elem manager instance.\n */\n addToFocusGroup(elem, groupName) {\n addHoverCallback(elem);\n this.removeFromFocusGroup(elem);\n let self = this;\n if (elem.onHover) {\n let func = elem.onHover;\n elem.onHover = function (event) {\n self._onHoverCallback(event);\n func(event);\n };\n }\n else {\n elem.onHover = self._onHoverCallback;\n }\n this.addToGroup(elem, groupName, 3 /* Focus */);\n return this;\n }\n /**\n * remove the elem from the zoom group it is in\n *\n * @param elem - the elem that should should be \"unganged\"\n *\n * @return - The elem manager instance.\n */\n removeFromFocusGroup(elem) {\n this.removeFromGroup(elem, 3 /* Focus */);\n return this;\n }\n /**\n * set the group to sync this elem with\n *\n * @param elem - the elem that should should be \"ganged\"\n * @param groupName - Name of the group that this elem should be \"ganged\"\n * with.\n *\n * @return - The elem manager instance.\n */\n addToSelectGroup(elem, groupName) {\n addClickCallback(elem);\n this.removeFromSelectGroup(elem);\n let self = this;\n if (elem.onClick) {\n let func = elem.onClick;\n elem.onClick = function (event) {\n self._onClickCallback(event);\n func(event);\n };\n }\n else {\n elem.onClick = self._onClickCallback;\n }\n this.addToGroup(elem, groupName, 4 /* Select */);\n return this;\n }\n /**\n * remove the elem from the zoom group it is in\n *\n * @param elem - the elem that should should be \"unganged\"\n *\n * @return - The elem manager instance.\n */\n removeFromSelectGroup(elem) {\n this.removeFromGroup(elem, 4 /* Select */);\n return this;\n }\n /**\n * set the group to sync this elem with\n *\n * @param elem - the elem that should should be \"ganged\"\n * @param groupName - Name of the group that this elem should be \"ganged\"\n * with.\n *\n * @return - The elem manager instance.\n */\n addToHighlightGroup(elem, groupName) {\n addHoverCallback(elem);\n this.removeFromHighlightGroup(elem);\n this.addToFocusGroup(elem, groupName);\n this.addToSelectGroup(elem, groupName);\n let self = this;\n if (elem.onBrush) {\n let func = elem.onBrush;\n elem.onBrush = function (event) {\n self._onBrushCallback(event);\n func(event);\n };\n }\n else {\n elem.onBrush = self._onBrushCallback;\n }\n if (elem.onCursorChanged) {\n let func = elem.onCursorChanged;\n elem.onCursorChanged = function (event) {\n self._onCursorChangeCallback(event);\n func(event);\n };\n }\n else {\n elem.onCursorChanged = this._onCursorChangeCallback;\n }\n if (elem.onZoom) {\n let func = elem.onZoom;\n elem.onZoom = function (event) {\n self._onZoomCallback(event);\n func(event);\n };\n }\n else {\n elem.onZoom = this._onZoomCallback;\n }\n let elems = this._groupInfo[1 /* Highlight */]._nameMap[groupName];\n if (elems && elems.length) {\n let oldElem = elems[0];\n if (oldElem.api.getOptions && elem.api && elem.api.zoom) {\n let options = oldElem.api.getOptions();\n let zoomEvent = utilities_1.copy(options);\n zoomEvent.event = ui_base_1.EventType.Zoom;\n setTimeout(() => {\n elem.api.zoom(zoomEvent);\n });\n }\n }\n this.addToGroup(elem, groupName, 1 /* Highlight */);\n return this;\n }\n /**\n * remove the elem from the zoom group it is in\n *\n * @param elem - the elem that should should be \"unganged\"\n *\n * @return - The elem manager instance.\n */\n removeFromHighlightGroup(elem) {\n this.removeFromFocusGroup(elem);\n this.removeFromSelectGroup(elem);\n this.removeFromGroup(elem, 1 /* Highlight */);\n return this;\n }\n /**\n * set the group to select this elem with\n *\n * @param elem - the elem that should should be \"ganged\"\n * @param groupName - Name of the group that this elem should be \"ganged\"\n * with.\n *\n * @return - The elem manager instance.\n */\n addToRenderGroup(elem, groupName) {\n addRenderCallback(elem);\n this.removeFromRenderGroup(elem);\n this.addToGroup(elem, groupName, 2 /* Render */);\n let self = this;\n if (elem.handleUpdate) {\n let func = elem.handleUpdate;\n elem.handleUpdate = function (caller, options) {\n self._onUpdateCallback(caller, options);\n func(caller, options);\n };\n }\n else {\n elem.handleUpdate = this._onUpdateCallback;\n }\n return this;\n }\n /**\n * remove the elem from the zoom group it is in\n *\n * @param elem - the elem that should should be \"unganged\"\n *\n * @return - The elem manager instance.\n */\n removeFromRenderGroup(elem) {\n this.removeFromGroup(elem, 2 /* Render */);\n return this;\n }\n /** clear all the elements in this list */\n clear() {\n this._elems.length = 0;\n this._groupInfo.length = 0;\n for (let i = 0; i < 5 /* None */; ++i) {\n this._groupInfo.push(new GroupInfo());\n }\n }\n}\nexports.ElementManager = ElementManager;\n\n\n//# sourceURL=webpack://UWT/./src/core/element-manager.ts?");
/***/ }),
/***/ "./src/core/interaction-state.ts":
/*!***************************************!*\
!*** ./src/core/interaction-state.ts ***!
\***************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utilities_1 = __webpack_require__(/*! ./utilities */ \"./src/core/utilities.ts\");\nconst ui_base_1 = __webpack_require__(/*! ../interface/ui-base */ \"./src/interface/ui-base.ts\");\nconst d3 = __webpack_require__(/*! d3 */ \"d3\");\nclass InteractionState {\n constructor(focus, unfocus, doBlink = false, select = undefined, unselect = undefined) {\n this._currFocus = [];\n this._currSelection = [];\n this._focus = focus;\n this._unfocus = unfocus;\n this._select = select;\n this._unselect = unselect;\n this._doBlink = doBlink;\n }\n static getFocusColor(input) {\n let color = d3.color(input);\n let hoverColor = d3.color(color).darker(2).toString();\n if (hoverColor === color.toString()) {\n color.opacity = color.opacity * .6;\n hoverColor = color.toString();\n }\n return hoverColor;\n }\n /** add a selection from all of the elements */\n _addFocusHelper(selection) {\n let self = this;\n this._focus(selection);\n if (self._doBlink) {\n clearTimeout(this._highlightTimer);\n this._highlightTimer = setTimeout(function () {\n self._unfocusHelper(selection, true);\n }, 500);\n }\n }\n /** remove a selection from all of the elements */\n _unfocusHelper(selection, isFlashing = false) {\n let self = this;\n this._unfocus(selection);\n if (this._doBlink) {\n if (isFlashing) {\n clearTimeout(this._highlightTimer);\n this._highlightTimer = setTimeout(function () {\n self._addFocusHelper(selection);\n }, 500);\n }\n }\n }\n /** add a selection from all of the elements */\n _addSelectionHelper(selection) {\n let self = this;\n this._select(selection);\n if (self._doBlink) {\n clearTimeout(this._highlightTimer);\n this._highlightTimer = setTimeout(function () {\n self._removeSelectionHelper(selection, true);\n }, 500);\n }\n }\n /** remove a selection from all of the elements */\n _removeSelectionHelper(selection, isFlashing = false) {\n let self = this;\n this._unselect(selection);\n if (this._doBlink) {\n if (isFlashing) {\n clearTimeout(this._highlightTimer);\n this._highlightTimer = setTimeout(function () {\n self._addSelectionHelper(selection);\n }, 500);\n }\n }\n }\n focus(event) {\n if (!isNaN(Number(event.selection))) {\n if (event.selection === undefined) {\n console.debug('Chart unable to fire focus event with undefined selection');\n }\n else if (event.selection.length === 0) {\n console.debug('Chart unable to fire focus event with an empty string selection');\n }\n else {\n console.debug('Chart unable to fire focus event using a number ' +\n 'as the selection class due to CSS limitations');\n }\n return;\n }\n let selection = utilities_1.getSelectionName(event.selection);\n let selectionIdx = this._currFocus.indexOf(selection);\n switch (event.event) {\n case ui_base_1.EventType.SelectAdd: // here for legacy reasons\n case ui_base_1.EventType.HoverStart:\n case ui_base_1.EventType.FocusStart:\n if (selectionIdx === -1) {\n this._currFocus.push(selection);\n this._addFocusHelper(selection);\n }\n break;\n case ui_base_1.EventType.SelectRemove: // here for legacy reasons\n case ui_base_1.EventType.HoverEnd:\n case ui_base_1.EventType.FocusEnd:\n if (selectionIdx !== -1) {\n clearTimeout(this._highlightTimer);\n this._currFocus.splice(selectionIdx, 1);\n this._unfocusHelper(selection);\n }\n break;\n case ui_base_1.EventType.SelectClear: // here for legacy reasons\n case ui_base_1.EventType.HoverClear:\n case ui_base_1.EventType.FocusClear:\n clearTimeout(this._highlightTimer);\n for (let i = 0; i < this._currFocus.length; ++i) {\n this._unfocusHelper(this._currFocus[i]);\n }\n this._currFocus = [];\n break;\n }\n }\n select(event) {\n if (!isNaN(Number(event.selection))) {\n if (event.selection === undefined) {\n console.debug('Chart unable to fire focus event with undefined selection');\n }\n else if (event.selection.length === 0) {\n console.debug('Chart unable to fire focus event with an empty string selection');\n }\n else {\n console.debug('Chart unable to fire focus event using a number ' +\n 'as the selection class due to CSS limitations');\n }\n return;\n }\n let selection = utilities_1.getSelectionName(event.selection);\n let selectionIdx = this._currSelection.indexOf(selection);\n switch (event.event) {\n case ui_base_1.EventType.SelectAdd:\n if (selectionIdx === -1) {\n this._currSelection.push(selection);\n this._addSelectionHelper(selection);\n }\n break;\n case ui_base_1.EventType.SelectRemove:\n if (selectionIdx !== -1) {\n clearTimeout(this._highlightTimer);\n this._currSelection.splice(selectionIdx, 1);\n this._removeSelectionHelper(selection);\n }\n break;\n case ui_base_1.EventType.SelectClear:\n clearTimeout(this._highlightTimer);\n for (let i = 0; i < this._currSelection.length; ++i) {\n this._removeSelectionHelper(this._currSelection[i]);\n }\n this._currSelection = [];\n break;\n }\n }\n /** used to restore any selections on a redraw */\n onRedraw() {\n this._currFocus.forEach((selection) => {\n // we have this code here because normally we don't\n // allow reselecting the same event over and over for\n // performance reasons\n this._addFocusHelper(selection);\n });\n this._currSelection.forEach((selection) => {\n // we have this code here because normally we don't\n // allow reselecting the same event over and over for\n // performance reasons\n this._addSelectionHelper(selection);\n });\n }\n}\nexports.InteractionState = InteractionState;\n/** @deprecated to be renamed to StateHelper in 2.x */\nexports.SelectionHelper = InteractionState;\n\n\n//# sourceURL=webpack://UWT/./src/core/interaction-state.ts?");
/***/ }),
/***/ "./src/core/pixi-helper.ts":
/*!*********************************!*\
!*** ./src/core/pixi-helper.ts ***!
\*********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ui_base_1 = __webpack_require__(/*! ../interface/ui-base */ \"./src/interface/ui-base.ts\");\nconst svg_helper_1 = __webpack_require__(/*! ./svg-helper */ \"./src/core/svg-helper.ts\");\nconst context_menu_1 = __webpack_require__(/*! ./context-menu */ \"./src/core/context-menu.ts\");\nconst PIXI = __webpack_require__(/*! pixi.js */ \"pixi.js\");\nfunction getChromeVersion() {\n let pieces = navigator.userAgent.match(/Chrom(?:e|ium)\\/([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)/);\n if (pieces == null || pieces.length != 5) {\n return undefined;\n }\n let splitVersion = pieces.map(piece => parseInt(piece, 10));\n return {\n major: splitVersion[1],\n minor: splitVersion[2],\n build: splitVersion[3]\n };\n}\nclass GraphicsManager {\n constructor(renderer) {\n this._graphicsMap = {};\n this._renderer = renderer;\n }\n add(mainKey, altKey, scaleMode, resolution, create) {\n // create a texture and save it for faster rendering\n let sprite;\n if (mainKey) {\n if (!this._graphicsMap[mainKey]) {\n this._graphicsMap[mainKey] = this._renderer.generateTexture(create(), scaleMode, resolution);\n }\n sprite = new PIXI.Sprite(this._graphicsMap[mainKey]);\n }\n else {\n if (!this._graphicsMap[altKey]) {\n this._graphicsMap[altKey] = this._renderer.generateTexture(create(), scaleMode, resolution);\n }\n sprite = new PIXI.Sprite(this._graphicsMap[altKey]);\n }\n return sprite;\n }\n}\nexports.GraphicsManager = GraphicsManager;\nclass PIXIHelper {\n constructor(useWebGLRenderer = true) {\n this._selectionItems = {};\n PIXI.utils.skipHello();\n if (useWebGLRenderer) {\n this._renderer = new PIXI.Renderer({ transparent: true, antialias: true });\n }\n else {\n /** to use this you need to use the pixi.js-legacy script */\n this._renderer = new PIXI.CanvasRenderer({ transparent: true, antialias: true });\n }\n let rect = new PIXI.Graphics();\n rect.beginFill(0xFFFFFF);\n rect.drawRect(0, 0, 1, 1); // draw rect)\n rect.endFill();\n this._rectTexture = this._renderer.generateTexture(rect, PIXI.SCALE_MODES.LINEAR, 128);\n }\n getRenderer() {\n return this._renderer;\n }\n createGraphicsManager() {\n return new GraphicsManager(this._renderer);\n }\n addPixiSvg(svg, classes, width, height) {\n let oldNodes = svg.node().getElementsByClassName(classes);\n for (let i = 0; i < oldNodes.length; ++i) {\n let node = oldNodes[i];\n node.parentNode.removeChild(node);\n }\n let foreignObject = svg\n .append('foreignObject')\n .attr('class', classes)\n .attr('width', width)\n .attr('height', height); // just for legend\n let foreignObjectElem = foreignObject.node();\n let canvas = foreignObjectElem\n .appendChild(this._renderer.view);\n let chromeVersion = getChromeVersion();\n if (chromeVersion !== undefined && chromeVersion.major < 75) {\n // this is a workaround to fix the fact that transforms aren't working\n // in chrome resulting in the canvas being mis positioned\n canvas.style.position = 'fixed';\n canvas.style.top = -window.scrollY + 'px';\n let top = -window.scrollY;\n let oldY = window.scrollY;\n document.addEventListener('scroll', function () {\n top = top - (window.scrollY - oldY);\n canvas.style.top = top + 'px';\n oldY = window.scrollY;\n });\n // end workaround\n }\n this._renderer.resize(width, height);\n return foreignObject;\n }\n createRectange(width, height, backgroundColor) {\n var rect = new PIXI.Sprite(this._rectTexture);\n rect.width = width;\n rect.height = height;\n rect.tint = backgroundColor;\n return rect;\n }\n createRectangleContainer(x, y, width, height, backgroundColor) {\n var box = new PIXI.Container();\n let background = this.createRectange(width, height, backgroundColor);\n box.addChild(background);\n box.position.x = x;\n box.position.y = y;\n return box;\n }\n ;\n renderText(name, parent, color = 0, resolution = 2, scaling = .5) {\n if (!this._useWebGLRenderer) {\n resolution = 1;\n scaling = 1;\n }\n // double font resolution for sharpness\n let fontSize = parent.style('font-size');\n fontSize =\n Number(fontSize.substring(0, fontSize.length - 2)) * resolution + 'px';\n let text = new PIXI.Text(name, {\n fill: color,\n fontFamily: parent.style('font-family'),\n fontSize: fontSize,\n fontWeight: parent.style('font-weight')\n });\n // scale text down\n text.scale = new PIXI.Point(scaling, scaling);\n return text;\n }\n addInteractionHelper(target, options, onClick, onDoubleClick, contextMenuItems, hoverStart, hoverEnd, tooltip, caller, value, selectionValue) {\n target.interactive = true;\n let self = this;\n let wait;\n if (onClick || onDoubleClick) {\n target.on('click', function (e) {\n e.stopPropagation();\n if (onDoubleClick) {\n if (wait) {\n window.clearTimeout(wait);\n wait = null;\n onDoubleClick({\n caller: caller, event: ui_base_1.EventType.DoubleClick, data: value\n });\n }\n else {\n wait = setTimeout(function () {\n if (wait) {\n if (!options.disableSelection) {\n svg_helper_1.onSelectHelper(caller, value, selectionValue ? selectionValue : value);\n }\n onClick({\n caller: caller, event: ui_base_1.EventType.Click, data: value\n });\n wait = null;\n }\n }, 300);\n }\n }\n else {\n if (!options.disableSelection) {\n svg_helper_1.onSelectHelper(caller, value, selectionValue ? selectionValue : value);\n }\n onClick({\n caller: caller, event: ui_base_1.EventType.Click, data: value\n });\n }\n });\n }\n function showMenu(e) {\n e.stopPropagation();\n if (tooltip) {\n tooltip.onMouseLeave(e);\n }\n context_menu_1.showContextMenu(e.data.originalEvent, value, contextMenuItems);\n }\n if (contextMenuItems && contextMenuItems.length) {\n target\n .on('rightupoutside', showMenu)\n .on('rightup', showMenu);\n }\n if (hoverStart) {\n target\n .on('mouseover', function (e) {\n if (e.target) {\n this.__data__ = value;\n hoverStart.call(this);\n if (tooltip) {\n self._tooltipTarget = e.target;\n tooltip.onMouseEnter(value);\n tooltip.onMouseMove(value, e.data.originalEvent);\n }\n }\n });\n }\n if (hoverEnd) {\n target.on('mouseout', function (e) {\n hoverEnd.call(this);\n if (tooltip && e.currentTarget === self._tooltipTarget) {\n tooltip.onMouseLeave(value);\n }\n });\n }\n }\n clearSelections() {\n this._selectionItems = {};\n }\n addSelection(key, item) {\n if (!this._selectionItems.hasOwnProperty(key)) {\n this._selectionItems[key] = [];\n }\n this._selectionItems[key].push(item);\n }\n getSelection(key) {\n return this._selectionItems[key];\n }\n getStage() {\n return this._stage;\n }\n render(stage) {\n if (!stage) {\n if (this._stage) {\n this._renderer.render(this._stage);\n }\n return;\n }\n this._stage = stage;\n this._renderer.render(stage);\n }\n}\nexports.PIXIHelper = PIXIHelper;\n\n\n//# sourceURL=webpack://UWT/./src/core/pixi-helper.ts?");
/***/ }),
/***/ "./src/core/renderer.ts":
/*!******************************!*\
!*** ./src/core/renderer.ts ***!
\******************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ui_base_1 = __webpack_require__(/*! ../interface/ui-base */ \"./src/interface/ui-base.ts\");\nconst color_manager_1 = __webpack_require__(/*! ./color-manager */ \"./src/core/color-manager.ts\");\nconst d3 = __webpack_require__(/*! d3 */ \"d3\");\nlet UIRendererMap = {};\nlet testContext;\nif (typeof document !== 'undefined') {\n testContext = document.createElement('canvas').getContext('2d');\n}\nfunction getTextWidth(text, font, size) {\n testContext.font = size + 'px ' + font;\n return testContext.measureText(text).width;\n}\nexports.getTextWidth = getTextWidth;\n;\nclass UIElementRenderer {\n /**\n * get the options the renderer is using for the given element\n *\n * @param the element to invalidate\n */\n getOptions() { return this._options; }\n /**\n * get the colors the renderer is using for the given element\n *\n * @param the element to invalidate\n */\n getColorManager() { return this._colorMgr; }\n setColorManager(colorMgr) { this._colorMgr = colorMgr; }\n}\nexports.UIElementRenderer = UIElementRenderer;\nclass D3Renderer {\n constructor(parentId, colorMgr = new color_manager_1.ColorManager()) {\n if (parentId) {\n this._parentId = parentId;\n this._parent = d3.select('body').select(parentId);\n }\n if (colorMgr) {\n this._colorMgr = colorMgr;\n }\n this._rendererMap = new WeakMap();\n }\n static register(type, renderer) {\n UIRendererMap[type] = renderer;\n }\n setOnRenderCallback(callback) {\n this.onRender = callback;\n }\n clearDiv(parentDiv) {\n if (parentDiv) {\n while (parentDiv.firstChild) {\n parentDiv.removeChild(parentDiv.firstChild);\n }\n }\n }\n setDiv(parentDiv) {\n this._parent = d3.select(parentDiv);\n }\n /**\n * Get the css actually rendered. This is useful for legend swatches\n * and the like.\n *\n * @param the element to get the rendered CSS information for\n *\n * @return The css rendered, or undefined if called before the chart is\n * rendered\n */\n getRenderedCss(element) {\n if (this._rendererMap.has(element)) {\n return this._rendererMap.get(element).getRenderedCss();\n }\n return new ui_base_1.Css();\n }\n /**\n * @deprecated ('Deprecated since 1.14.0 in favor of focus. Will be removed in 2.x')\n * hover event\n *\n * @param element to fire the hover event on\n * @param event the event to pass to the renderer\n */\n hover(element, event) {\n this.focus(element, event);\n }\n /**\n * bring an item into focus\n *\n * @param element to fire the focus event on\n * @param event the event to pass to the renderer\n */\n focus(element, event) {\n if (this._rendererMap.has(element)) {\n if (!this._rendererMap.get(element).focus) {\n this._rendererMap.get(element).hover(event);\n }\n return this._rendererMap.get(element).focus(event);\n }\n }\n /**\n * select an item\n *\n * @param element to fire the select event on\n * @param event the event to pass to the renderer\n */\n select(element, event) {\n if (this._rendererMap.has(element)) {\n this._rendererMap.get(element).select(event);\n }\n }\n /**\n * zoom event\n *\n * @param element to fire the zoom event on\n * @param event the event to pass to the renderer\n */\n zoom(element, event) {\n if (this._rendererMap.has(element)) {\n this._rendererMap.get(element).zoom(event);\n }\n }\n /**\n * tooltip the element.\n *\n * @param renderer an IRenderer object that has the tooltip\n * @param event the event to pass to the renderer\n */\n getTooltipData(element, event) {\n if (this._rendererMap.has(element)) {\n return this._rendererMap.get(element).getTooltipData(event);\n }\n return [{ source: element, group: '', metrics: {} }];\n }\n /**\n * hover event\n *\n * @param element to fire the hover event on\n * @param event the event to pass to the renderer\n */\n cursorChange(element, event) {\n if (this._rendererMap.has(element)) {\n return this._rendererMap.get(element).cursorChange(event);\n }\n }\n /**\n * brush event\n *\n * @param element to fire the brush event on\n * @param event the event to pass to the renderer\n */\n brush(element, event) {\n if (this._rendererMap.has(element)) {\n return this._rendererMap.get(element).brush(event);\n }\n }\n configureElement(element) {\n let self = this;\n element.renderer = this;\n if (!this._rendererMap.has(element)) {\n let node = this._parent.node();\n if (!node) {\n this._parent = d3.select(this._parentId);\n }\n let Renderer = UIRendererMap[element.type];\n if (Renderer) {\n let r = new Renderer(element, this, this._parent);\n r.setColorManager(this._colorMgr);\n this._rendererMap.set(element, r);\n }\n }\n }\n /**\n * Render the given element\n *\n * @param the element to render\n */\n render(element, options = {}) {\n let self = this;\n element.renderer = this;\n this.configureElement(element);\n if (this._rendererMap.has(element)) {\n this._rendererMap.get(element).render(options);\n if (element.onRender) {\n element.onRender(options);\n }\n if (this.onRender) {\n this.onRender(element, options);\n }\n }\n }\n /**\n * invalidate the given element\n *\n * @param the element to invalidate\n */\n invalidate(element, options = {}) {\n let self = this;\n element.renderer = this;\n this.configureElement(element);\n if (this._rendererMap.has(element)) {\n this._rendererMap.get(element).invalidate(options);\n if (element.onRender) {\n element.onRender(options);\n }\n if (this.onRender) {\n this.onRender(element, options);\n }\n }\n }\n setColorManager(colorManager) {\n this._colorMgr = colorManager;\n }\n /**\n * get color manager for this renderer\n */\n getColorManager() {\n return this._colorMgr;\n }\n /**\n * free the resources used by the renderer for this element\n */\n destroy(element) {\n this._rendererMap.delete(element);\n }\n /**\n * get the options the renderer is using for the given element\n *\n * @param the element to invalidate\n */\n getOptions(element) {\n if (this._rendererMap.has(element)) {\n return this._rendererMap.get(element).getOptions();\n }\n }\n}\nexports.D3Renderer = D3Renderer;\nexports.D3ChartRenderer = D3Renderer;\nexports.D3GraphRenderer = D3Renderer;\n\n\n//# sourceURL=webpack://UWT/./src/core/renderer.ts?");
/***/ }),
/***/ "./src/core/svg-helper.ts":
/*!********************************!*\
!*** ./src/core/svg-helper.ts ***!
\********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utilities_1 = __webpack_require__(/*! ./utilities */ \"./src/core/utilities.ts\");\nconst ui_base_1 = __webpack_require__(/*! ../interface/ui-base */ \"./src/interface/ui-base.ts\");\nconst context_menu_1 = __webpack_require__(/*! ./context-menu */ \"./src/core/context-menu.ts\");\nconst interaction_state_1 = __webpack_require__(/*! ./interaction-state */ \"./src/core/interaction-state.ts\");\nconst d3_legend_master_1 = __webpack_require__(/*! ../../third-party/d3-legend-master */ \"./third-party/d3-legend-master/indexRollupNext.js\");\nconst renderer_1 = __webpack_require__(/*! ./renderer */ \"./src/core/renderer.ts\");\nconst d3 = __webpack_require__(/*! d3 */ \"d3\");\nfunction getStyle(target) {\n let node = target.node();\n let style = window.getComputedStyle(node);\n return style;\n}\nexports.getStyle = getStyle;\n/**\n* take two lists of strings and merge them into one list with only unique values\n* note this changes the original list\n*/\nfunction mergeKeys(arr1, arr2) {\n let keys = {};\n for (let i = 0; i < arr1.length; ++i) {\n keys[arr1[i]] = true;\n }\n for (let i = 0; i < arr2.length; ++i) {\n if (!keys.hasOwnProperty(arr2[i])) {\n arr1.push(arr2[i]);\n }\n }\n}\nexports.mergeKeys = mergeKeys;\nfunction getKeys(data, accessor) {\n let keyMap = {};\n let keyList = [];\n for (let i = 0; i < data.length; ++i) {\n let keys = accessor(data[i]);\n for (let i = 0; i < keys.length; ++i) {\n if ((typeof keys[i] === 'string' || typeof keys[i] === 'number') &&\n !keyMap.hasOwnProperty(keys[i])) {\n keyMap[keys[i]] = true;\n keyList.push(keys[i]);\n }\n }\n }\n return keyList;\n}\nexports.getKeys = getKeys;\nfunction getColor(d3Obj, map, color = undefined) {\n color = color && color !== 'none' ? color : undefined;\n if (!map.has(d3Obj.node())) {\n map.set(d3Obj.node(), color);\n }\n return map.get(d3Obj.node());\n}\nfunction focus(d3Obj, fillColors, strokeColors) {\n // if you don't own the style then when you save the\n // colors save null so we restore this DOM object to\n // the same state (aka it removes the style)\n let fillColor = d3Obj.style('fill');\n fillColor = getColor(d3Obj, fillColors, fillColor);\n // always save the color even if it's not defined so we have the original later\n if (fillColor) {\n let hoverColor = interaction_state_1.InteractionState.getFocusColor(fillColor);\n d3Obj.style('fill', hoverColor);\n }\n if (!d3Obj.classed('selected')) {\n let strokeColor = d3Obj.style('stroke');\n strokeColor = getColor(d3Obj, strokeColors, strokeColor);\n if (strokeColor) {\n let hoverColor = interaction_state_1.InteractionState.getFocusColor(strokeColor);\n d3Obj.style('stroke', hoverColor);\n }\n }\n d3Obj.classed('hover', true);\n}\nexports.focus = focus;\nfunction unfocus(d3Obj, fillColors, strokeColors) {\n let fillColor = getColor(d3Obj, fillColors);\n if (fillColor) {\n d3Obj.style('fill', fillColor);\n }\n if (!d3Obj.classed('selected')) {\n let strokeColor = d3Obj.style('stroke');\n if (strokeColor) {\n strokeColor = getColor(d3Obj, strokeColors);\n if (strokeColor) {\n d3Obj.style('stroke', strokeColor);\n }\n }\n }\n d3Obj.classed('hover', false);\n}\nexports.unfocus = unfocus;\nfunction select(d3Obj, fillColors, strokeColors) {\n /** if no fill then we only have strokes to deal with we change the color of the stroke */\n let fillColor = d3Obj.style('fill');\n fillColor = getColor(d3Obj, fillColors, fillColor);\n let isStrokeOnly = !fillColor || fillColor === 'none';\n let strokeColor = d3Obj.style('stroke');\n strokeColor = getColor(d3Obj, strokeColors, strokeColor);\n if (strokeColor || isStrokeOnly) {\n // use the CSS value for selected stroke\n d3Obj.style('stroke', null);\n }\n d3Obj.classed('selected', true);\n}\nexports.select = select;\nfunction unselect(d3Obj, fillColors, strokeColors) {\n let color = getColor(d3Obj, strokeColors);\n if (color) {\n d3Obj.style('stroke', color);\n }\n d3Obj.classed('selected', false);\n}\nexports.unselect = unselect;\nfunction onSelectHelper(caller, value, selectionValue) {\n let clearEvent = { caller: caller, data: value, event: ui_base_1.EventType.SelectClear };\n let selectEvent = {\n caller: caller, event: ui_base_1.EventType.SelectAdd, data: value, selection: selectionValue\n };\n caller.api.select(clearEvent);\n caller.api.select(selectEvent);\n if (caller.onClick) {\n caller.onClick(clearEvent);\n caller.onClick(selectEvent);\n }\n}\nexports.onSelectHelper = onSelectHelper;\nfunction addClickHelper(target, options, onClick, onDoubleClick, contextMenuItems, tooltip, caller, value, selectionValue) {\n let wait;\n target.on('click', function (d) {\n if (value !== undefined) {\n d = value;\n }\n if (onDoubleClick) {\n wait = setTimeout(function () {\n if (wait) {\n if (!options.disableSelection) {\n onSelectHelper(caller, value, selectionValue);\n }\n if (onClick) {\n onClick({ caller: caller, event: ui_base_1.EventType.Click, data: d });\n }\n wait = null;\n }\n }, 300);\n }\n else {\n if (!options.disableSelection) {\n onSelectHelper(caller, value, selectionValue);\n }\n if (onClick) {\n onClick({ caller: caller, event: ui_base_1.EventType.Click, data: d });\n }\n }\n });\n if (onDoubleClick) {\n target.on('dblclick', function (d) {\n if (value !== undefined) {\n d = value;\n }\n window.clearTimeout(wait);\n wait = null;\n onDoubleClick({ caller: caller, event: ui_base_1.EventType.DoubleClick, data: d });\n });\n }\n if (contextMenuItems && contextMenuItems.length) {\n target.on('contextmenu', function (d) {\n if (!event) {\n event = d3.event;\n }\n context_menu_1.showContextMenu(d3.event, value, contextMenuItems);\n });\n }\n}\nexports.addClickHelper = addClickHelper;\nfunction getSVGPoint(svg, elem, point) {\n if (svg.getScreenCTM && svg.getScreenCTM()) {\n // if getScreenCTM is not working right (aka Firefox...?)\n let matrix = svg.getScreenCTM().inverse();\n let svgPoint = point.matrixTransform(matrix);\n return svgPoint;\n }\n return { x: point.x, y: point.y };\n}\n/** Note this is very expensive due to the getBoudingClientRect() call so\n * you should cache this result if possible\n */\nfunction convertToSVGCoords(svg, element) {\n let clientRect = element.node().getBoundingClientRect();\n let svgNode = svg.node();\n let elemNode = element.node();\n let p = svgNode.createSVGPoint();\n p.x = clientRect.left;\n p.y = clientRect.top;\n let topLeft = getSVGPoint(svgNode, elemNode, p);\n p.x = clientRect.right;\n p.y = clientRect.bottom;\n let bottomRight = getSVGPoint(svgNode, elemNode, p);\n return {\n x: topLeft.x,\n y: topLeft.y,\n width: bottomRight.x - topLeft.x,\n height: bottomRight.y - topLeft.y,\n right: bottomRight.x,\n bottom: bottomRight.y\n };\n}\nexports.convertToSVGCoords = convertToSVGCoords;\nfunction getTextRect(svg, text) {\n // temporarily append to DOM to get text size\n let textRenderer = svg\n .append('text')\n .text(text);\n let ret = convertToSVGCoords(svg, textRenderer);\n textRenderer.remove();\n return ret;\n}\nexports.getTextRect = getTextRect;\nfunction animatePath(path, duration) {\n let pathLength = path.node().getTotalLength();\n path\n .attr('stroke-dasharray', pathLength)\n .attr('stroke-dashoffset', pathLength)\n .transition('add')\n .duration(duration)\n .attr('stroke-dashoffset', 0);\n}\nexports.animatePath = animatePath;\nclass Arrow {\n static getAngle(start, end) {\n return Math.atan2(end.y - start.y, end.x - start.x) * 180 / Math.PI;\n }\n // Returns an attrTween for translating along the specified path element.\n static translateArrow(path) {\n // Approximate tangent\n return function (d, i, a) {\n return function (t) {\n var l = path.getTotalLength();\n var pos = path.getPointAtLength(t * l);\n var start = path.getPointAtLength(Math.max(l - 0.01, 0) * t);\n var end = path.getPointAtLength((l + 0.01) * t);\n return 'translate(' + pos.x + ', ' + pos.y + ') rotate( ' +\n Arrow.getAngle(start, end) + ')';\n };\n };\n }\n static createArrow(group, size = 4) {\n let doubleSize = size * 2;\n return group.append('path')\n .attr('d', `M -${doubleSize}, -${size} L0,0 L-${doubleSize},${size} z`);\n }\n static animateArrow(path, arrow, duration) {\n arrow.transition()\n .duration(duration)\n .attrTween('transform', Arrow.translateArrow(path.node()));\n }\n}\nexports.Arrow = Arrow;\nclass Spinner {\n constructor(svg, rect) {\n let self = this;\n let radius = Math.min(rect.width, rect.height) / 2;\n let tau = 2 * Math.PI;\n self._svg = svg;\n let arc = d3.arc()\n .innerRadius(radius * 0.5)\n .outerRadius(radius * 0.9)\n .startAngle(0);\n let background = self._svg.append('path')\n .classed('spinner', true)\n .datum({ endAngle: 0.66 * tau })\n .style('fill', 'rgb(0,113,197)')\n .attr('d', arc)\n .call(spin, 1500);\n function spin(selection, duration) {\n selection.transition()\n .ease(d3.easeLinear)\n .duration(duration)\n .attrTween('transform', function () {\n return d3.interpolateString('rotate(0)', 'rotate(360)');\n });\n setTimeout(function () {\n if (self._svg) {\n spin(selection, duration);\n }\n }, duration);\n }\n }\n}\nexports.Spinner = Spinner;\n/**\n * The Brush class uses D3's brush behavior to implement zooming\n * for Configuration Analyzer graphs where the X axis is time.\n *\n */\nclass Brush {\n /**\n * Construct a Brush instance.\n */\n constructor() {\n // Put 'this' into a variable that will be visible in the callbacks\n let self = this;\n self._isXY = false;\n // BrushMove function - called when an 'on mousemove' event occurs\n this.onBrushStart = function (d) {\n if (self._onStartCallback) {\n let dataBounds = d3.brushSelection(this);\n self._onStartCallback.call(this, dataBounds);\n }\n }; // BrushMove\n // BrushMove function - called when an 'on mousemove' event occurs\n this.onBrushMove = function (d) {\n if (self._onMoveCallback) {\n let dataBounds = d3.brushSelection(this);\n self._onMoveCallback.call(this, dataBounds);\n }\n }; // BrushMove\n // BrushEnd - Called an 'on mouseup' event\n this.onBrushEnd = function (d) {\n // Call the brush call-back function with the selected domain\n // (most commonly, the graph will be 'zoomed' to the extent)\n if (self._onEndCallback) {\n let dataBounds = d3.brushSelection(this);\n self._onEndCallback.call(this, dataBounds);\n }\n }; // BrushEnd\n } // constructor\n moveToFront() {\n this._brushTargetGraph.each(function () {\n this.parentNode.appendChild(this);\n });\n }\n moveToBack() {\n this._brushTargetGraph.each(function () {\n let firstChild = this.parentNode.firstChild;\n if (firstChild) {\n this.parentNode.insertBefore(this, firstChild);\n }\n });\n }\n enableCallbacks() {\n let self = this;\n this._brush\n .on('start', self.onBrushStart)\n .on('brush', self.onBrushMove)\n .on('end', self.onBrushEnd);\n return this;\n }\n disableCallbacks() {\n this._brush\n .on('start', undefined)\n .on('brush', undefined)\n .on('end', undefined);\n return this;\n }\n brushStart(domain) {\n this._brushTargetGraph.call(this._brush.move, null);\n }\n brushMove(domain) {\n this._brushTargetGraph.call(this._brush.move, domain);\n }\n brushEnd() {\n // clear brush from graph\n this._brushTargetGraph.call(this._brush.move, null);\n }\n setXY(isXY) {\n this._isXY = isXY;\n return this;\n }\n setTarget(graphSVG) {\n this._brushTargetGraph = graphSVG;\n return this;\n }\n setStartCallback(startFunc) {\n this._onStartCallback = startFunc;\n return this;\n }\n setMoveCallback(moveFunc) {\n this._onMoveCallback = moveFunc;\n return this;\n }\n setEndCallback(endFunc) {\n this._onEndCallback = endFunc;\n return this;\n }\n setRect(rect) {\n this._rect = rect;\n return this;\n }\n ready() {\n if (this._isXY) {\n this._brush = d3.brush()\n .on('start', this.onBrushStart)\n .on('brush', this.onBrushMove)\n .on('end', this.onBrushEnd);\n }\n else {\n this._brush = d3.brushX()\n .extent([[0, 0], [this._rect.width, this._rect.height]])\n .on('start', this.onBrushStart)\n .on('brush', this.onBrushMove)\n .on('end', this.onBrushEnd);\n }\n // append brush to graph SVG\n this._brushTargetGraph\n .call(this._brush);\n return this;\n }\n /**\n * Release all brush listeners on the target. Failure to release the\n * listeners can prevent the target from being freed.\n *\n * @param target - The object to have any tooltip listeners reset.\n */\n static releaseListeners(target) {\n target\n .on('brush', null)\n .on('brushend', null)\n .on('brushstart', null);\n } // ReleaseListeners\n} // class Brush\nexports.Brush = Brush;\nclass D3Legend {\n constructor(svg, legend, title, rect) {\n this._title = title ? title : '';\n this._legend = legend;\n this._itemMap = {};\n this._items = [];\n if (legend.definition) {\n let items = [];\n for (let i = 0; i < legend.definition.items.length; ++i) {\n let defItem = legend.definition.items[i];\n items.push({\n key: defItem.key,\n name: defItem.name ? defItem.name : defItem.key,\n color: defItem.color,\n shape: this.getShapeString(defItem.shape),\n opacity: ''\n });\n }\n this.addItems(items);\n }\n let type = 'ordinal';\n if (this._legend.definition &&\n this._legend.definition.type === ui_base_1.LegendType.Gradient) {\n type = 'gradient';\n }\n this._classes = `legend ${type} ${this._title} align-${this._legend.alignment}`;\n this._legendSvg = svg.append('g')\n .classed(this._classes, true);\n this.setPosition(rect);\n }\n getShapeString(shape) {\n if (typeof (shape) === 'string') {\n return shape;\n }\n switch (shape) {\n case ui_base_1.LegendItemShape.Rectangle:\n return 'rect';\n case ui_base_1.LegendItemShape.Line:\n return 'line';\n case ui_base_1.LegendItemShape.Circle:\n return 'circle';\n }\n }\n setPosition(rect) {\n this._position = rect;\n }\n getPosition() {\n return this._position;\n }\n setItems(items) {\n this._items = [];\n this._itemMap = {};\n this.addItems(items);\n }\n addItems(items) {\n for (let i = 0; i < items.length; ++i) {\n let item = items[i];\n if (!this._itemMap.hasOwnProperty(item.key)) {\n if (!item.name) {\n item.name = item.key;\n if (this._legend.showValue) {\n if (item.value !== undefined) {\n item.name += ': ' + item.value;\n if (item.units !== undefined) {\n item.name += item.units;\n }\n }\n }\n }\n this._itemMap[item.key] = item;\n this._items.push(item);\n }\n else {\n this._itemMap[item.key].color = item.color;\n this._itemMap[item.key].opacity = item.opacity;\n }\n }\n }\n getAlignment() {\n return this._legend.alignment;\n }\n getRenderedRect() {\n return this._renderedRect;\n }\n getRows() {\n if (this._legend.orientation === ui_base_1.LegendOrientation.Vertical) {\n return this._items.length;\n }\n else {\n return this._legendSvg.selectAll('.legendCells').size();\n }\n }\n renderDiscreteLegend(orientation) {\n let names = [];\n let colors = [];\n for (let i = 0; i < this._items.length; ++i) {\n let name = this._items[i].name;\n let color = this._items[i].color;\n let opacity = this._items[i].opacity;\n if (opacity) {\n if (color.startsWith('rgb')) {\n color = 'rgba' + color.substr(3, color.length - 4) + ' , ' + opacity + ')';\n }\n }\n names.push(this._items[i].name);\n colors.push(color);\n }\n let itemPadding = 2;\n let itemSize = 0;\n let self = this;\n let addLegend = function (group, names, colors) {\n let ordinal = d3.scaleOrdinal()\n .domain(names)\n .range(colors);\n // any cast is just to make typescript happy as there are no\n // typescript definitions for the legend component\n let legendOrdinal = d3_legend_master_1.legendColor();\n legendOrdinal\n .on('cellover', function (d) {\n this.setAttribute('title', d);\n })\n .orient(orientation)\n .labelPosition('right')\n .shape('rect')\n .shapeWidth(10)\n .shapeHeight(10)\n .shapePadding(itemPadding)\n .scale(ordinal);\n if (self._legend.onClick) {\n legendOrdinal.on('cellclick', function (d) {\n self._legend.onClick({\n event: ui_base_1.EventType.Click,\n data: d\n });\n });\n }\n if (self._legend.contextMenuItems) {\n legendOrdinal.on('cellcontextmenu', function (d) {\n context_menu_1.showContextMenu(d3.event, d, self._legend.contextMenuItems);\n });\n }\n group.call(legendOrdinal);\n };\n addLegend(this._legendSvg, names, colors);\n let xPixelOffset = this._position.x;\n if ((this._legend.alignment === ui_base_1.Alignment.Top ||\n this._legend.alignment === ui_base_1.Alignment.Bottom) &&\n this._legend.orientation !== ui_base_1.LegendOrientation.Vertical) {\n itemPadding = 0;\n let cells = this._legendSvg.select('.legendCells').selectAll('.cell').each(function () {\n let rect = this.getBBox();\n itemPadding = Math.max(itemPadding, rect.width);\n });\n itemSize = itemPadding + 10;\n this._legendSvg.selectAll('*').remove();\n let itemsPerRow = Math.max(1, Math.min(names.length, Math.floor(this._position.width / itemSize)));\n Math.ceil(names.length / itemsPerRow);\n xPixelOffset = this._position.x + this._position.width / 2 -\n itemSize * itemsPerRow / 2;\n let nextRowYOffset = 0;\n for (let i = 0; i < names.length; i += itemsPerRow) {\n let rowSvg = this._legendSvg.append('g').classed(this._classes, true);\n addLegend(rowSvg, names.slice(i, i + itemsPerRow), colors.slice(i, i + itemsPerRow));\n if (nextRowYOffset) {\n rowSvg.attr('transform', 'translate(' + 0 + ',' + nextRowYOffset + ')');\n }\n let node = rowSvg.node();\n nextRowYOffset += node.getBoundingClientRect().height;\n }\n }\n xPixelOffset = Math.max(0, xPixelOffset);\n this._legendSvg\n .attr('transform', 'translate(' + xPixelOffset + ',' + this._position.y + ')');\n }\n renderGradientLegend() {\n this._legendSvg.selectAll('*').remove();\n let items = this._legend.definition.items;\n let id = utilities_1.getSelectionName(`${this._title}align-${this._legend.alignment}`);\n let gradient = this._legendSvg\n .append('linearGradient')\n .attr('id', id)\n .attr('x1', '0%')\n .attr('y1', '0%');\n items.forEach((item) => {\n gradient.append('stop')\n .attr('offset', `${item.key}%`)\n .attr('style', `stop-color:${item.color};stop-opacity:${item.opacity}`);\n });\n let scale = d3.scaleLinear()\n .domain(d3.extent(items, (datum) => {\n return Number(datum.key);\n }));\n let rect = this._legendSvg.append('rect');\n let axisSVG = this._legendSvg.append('g');\n let legend;\n let barWidth = 40;\n let barPadding = 5;\n switch (this._legend.alignment) {\n case ui_base_1.Alignment.Left:\n gradient.attr('x2', '0%')\n .attr('y2', '100%');\n rect.attr('x', 30)\n .attr('width', barWidth)\n .attr('y', 0)\n .attr('height', this._position.height);\n scale.range([0, this._position.height]);\n axisSVG.attr('transform', `translate(30, 0)`);\n legend = d3.axisLeft(scale);\n break;\n case ui_base_1.Alignment.Right:\n gradient.attr('x2', '0%')\n .attr('y2', '100%');\n rect.attr('x', barPadding)\n .attr('width', barWidth)\n .attr('y', 0)\n .attr('height', this._position.height);\n scale.range([0, this._position.height]);\n axisSVG.attr('transform', `translate(${barWidth + barPadding}, 0)`);\n legend = d3.axisRight(scale);\n break;\n case ui_base_1.Alignment.Top:\n gradient.attr('x2', '100%')\n .attr('y2', '0%');\n rect.attr('x', 0)\n .attr('width', this._position.width)\n .attr('y', 10)\n .attr('height', barWidth);\n scale.range([0, this._position.width]);\n axisSVG.attr('transform', 'translate(0, 10)');\n legend = d3.axisTop(scale);\n break;\n case ui_base_1.Alignment.Bottom:\n gradient.attr('x2', '100%')\n .attr('y2', '0%');\n rect.attr('x', 0)\n .attr('width', this._position.width)\n .attr('y', 5)\n .attr('height', barWidth);\n scale.range([0, this._position.width]);\n axisSVG.attr('transform', `translate(0, ${barWidth + barPadding})`);\n legend = d3.axisBottom(scale);\n break;\n }\n rect.attr('fill', `url(#${id})`);\n axisSVG.call(legend);\n this._legendSvg\n .attr('transform', 'translate(' + this._position.x + ',' + this._position.y + ')');\n }\n render() {\n let orientation;\n if (this._legend.orientation === ui_base_1.LegendOrientation.Vertical) {\n orientation = 'vertical';\n }\n else if (this._legend.orientation === ui_base_1.LegendOrientation.Horizontal) {\n orientation = 'horizontal';\n }\n else if (this._legend.alignment === ui_base_1.Alignment.Left ||\n this._legend.alignment === ui_base_1.Alignment.Right) {\n orientation = 'vertical';\n }\n else {\n orientation = 'horizontal';\n }\n this._legendSvg.selectAll('*').remove();\n if (this._legend.definition && this._legend.definition.type &&\n this._legend.definition.type === ui_base_1.LegendType.Gradient) {\n this.renderGradientLegend();\n // this is here duplicated because it's not seeing\n // the rect when it measures so we add 40\n let node = this._legendSvg.node();\n let svgRect = node.getBoundingClientRect();\n this._renderedRect = new ui_base_1.Rect(svgRect.left, svgRect.top, svgRect.right - svgRect.left + 40, svgRect.bottom - svgRect.top);\n }\n else {\n this.renderDiscreteLegend(orientation);\n let node = this._legendSvg.node();\n let svgRect = node.getBoundingClientRect();\n this._renderedRect = new ui_base_1.Rect(svgRect.left, svgRect.top, svgRect.right - svgRect.left, svgRect.bottom - svgRect.top);\n }\n }\n}\nexports.D3Legend = D3Legend;\nclass SVGRenderer extends renderer_1.UIElementRenderer {\n constructor() {\n super();\n this.MIN_MARGIN = { TOP: 0, BOTTOM: 10, LEFT: 0, RIGHT: 10 };\n this.LEGEND_PADDING = { X: 10, Y: { TOP: 10, BOTTOM: 10 } };\n this.AXIS_PADDING = { X: 10, Y: { TOP: 10, BOTTOM: 10 } };\n /** stores the original fill colors for an series */\n this._fillColors = new WeakMap();\n /** stores the original stroke colors for an series */\n this._strokeColors = new WeakMap();\n let self = this;\n this._options = {};\n this._minSvgWidth = 0;\n this._maxGraphWidth = Number.MAX_VALUE;\n this._maxSvgWidth = Number.MAX_VALUE;\n this._interactionState = new interaction_state_1.InteractionState(function (selection) {\n self._focus(selection);\n }, function (selection) {\n self._unfocus(selection);\n }, false, function (selection) {\n self._select(selection);\n }, function (selection) {\n self._unselect(selection);\n });\n }\n cursorChange(event) { }\n zoom(event) { }\n brush(event) { }\n render(options) { }\n configureTooltip() { }\n createLayout() { }\n setColorManager(colorManager) {\n this._colorMgr = colorManager;\n }\n initialize(element, renderer, parent) {\n this._element = element;\n this._renderer = renderer;\n this._tooltipId = 'd3-tooltip';\n this._tooltipAnalyticsName = 'd3-ui-widget-toolkit';\n this._parent = parent;\n let node = parent.node();\n if (node) {\n if (!this._options.width) {\n this._options.width = node.getBoundingClientRect().width;\n }\n this._svgRect = new ui_base_1.Rect(0, 0, this._options.width, 0);\n this._svg = parent.append('svg');\n //.attr('preserveAspectRatio', 'xMidYMid meet');\n }\n this._handleWidth = 10;\n this._graphRect = new ui_base_1.Rect(0, 0, 0, this.DEFAULT_GRAPH_HEIGHT);\n this._requiresRelayout = true;\n }\n loadOptions(options) {\n if (options === undefined) {\n return;\n }\n if (options.width && options.width !== this._options.width) {\n this._requiresRelayout = true;\n }\n if (options.height && options.height !== this._options.height) {\n this._requiresRelayout = true;\n }\n if (options.topMargin && options.topMargin !== this._options.topMargin) {\n this._requiresRelayout = true;\n }\n if (options.bottomMargin && options.bottomMargin !== this._options.bottomMargin) {\n this._requiresRelayout = true;\n }\n if (options.leftMargin && options.leftMargin !== this._options.leftMargin) {\n this._requiresRelayout = true;\n }\n if (options.rightMargin && options.rightMargin !== this._options.rightMargin) {\n this._requiresRelayout = true;\n }\n utilities_1.merge(this._options, options);\n }\n getElement() {\n return this._element;\n }\n getOptions() {\n return this._options;\n }\n getAnimateDuration() {\n return this._options.animateDuration !== undefined ? this._options.animateDuration : 1000;\n }\n /**\n * Get the css actually rendered. This is useful for legend swatches\n * and the like.\n *\n * @param the element to get the rendered CSS information for\n *\n * @return The css rendered, or undefined if called before the chart is\n * rendered\n */\n getRenderedCss() {\n return new ui_base_1.Css();\n }\n /**\n * tooltip the element.\n *\n * @param renderer an IRenderer object that has the tooltip\n * @param event the event to pass to the renderer\n */\n getTooltipData(event) {\n return [{ source: this._element, group: '', metrics: {} }];\n }\n /**\n * @deprecated ('Deprecated since 1.14.0 in favor of focus. Will be removed in 2.x')\n * hover event\n *\n * @param event the event to pass to the renderer\n */\n hover(event) {\n this.focus(event);\n }\n /**\n * bring an item into focus\n *\n * @param event the event to focus on\n */\n focus(event) {\n this._interactionState.focus(event);\n }\n /**\n * select an item\n *\n * @param event the event to focus on\n */\n select(event) {\n this._interactionState.select(event);\n }\n _focus(selection) {\n let self = this;\n if (selection) {\n self._svg.selectAll('.' + selection)\n .each(function () {\n let d3Obj = d3.select(this);\n focus(d3Obj, self._fillColors, self._strokeColors);\n });\n }\n }\n _unfocus(selection) {\n let self = this;\n if (selection.length > 0) {\n self._svg.selectAll('.' + selection)\n .each(function () {\n let d3Obj = d3.select(this);\n unfocus(d3Obj, self._fillColors, self._strokeColors);\n });\n ;\n }\n }\n _select(selection) {\n let self = this;\n if (selection) {\n self._svg.selectAll('.' + selection)\n .each(function () {\n let d3Obj = d3.select(this);\n select(d3Obj, self._fillColors, self._strokeColors);\n });\n }\n }\n _unselect(selection) {\n let self = this;\n if (selection.length > 0) {\n self._svg.selectAll('.' + selection)\n .each(function () {\n let d3Obj = d3.select(this);\n unselect(d3Obj, self._fillColors, self._strokeColors);\n });\n ;\n }\n }\n invalidate(options) {\n // clear the SVG\n this.loadOptions(options);\n this.createLayout();\n if (!options.disableResize) {\n this.createHandles();\n }\n this.configureTooltip();\n this.render(options);\n }\n updateHandles() {\n let self = this;\n // update handle positions\n self._svg.select('.chart-handle.bottom')\n .attr('x', self._graphRect.x)\n .attr('y', self._graphRect.y + self._graphRect.height)\n .attr('width', self._graphRect.width);\n self._svg.select('.chart-handle.left')\n .attr('x', self._graphRect.x - this._handleWidth - 1)\n .attr('y', self._graphRect.y)\n .attr('height', self._graphRect.height);\n // update handle positions\n self._svg.select('.chart-handle.right')\n .attr('x', self._graphRect.x + self._graphRect.width + 1)\n .attr('y', self._graphRect.y)\n .attr('height', self._graphRect.height);\n }\n createHandles() {\n let self = this;\n if (!self._options.disableResizeLeft) {\n self._svg.append('rect')\n .attr('opacity', 0)\n .attr('width', self._handleWidth)\n .attr('cursor', 'ew-resize')\n .classed('chart-handle vertical left', true)\n .call(d3.drag()\n .on('start', function () {\n SVGRenderer.IS_RESIZING = true;\n })\n .on('drag', function () {\n if (d3.event.dx === 0) {\n return;\n }\n let leftMargin = Math.min(self._options.leftMargin + self._graphRect.width, Math.max(self.MIN_MARGIN.LEFT, self._options.leftMargin + d3.event.dx));\n let node = self._svg.node(); // this is just to make typescript happy\n let options = {\n width: node.getBoundingClientRect().width,\n leftMargin: leftMargin,\n xStart: self._options.xStart,\n xEnd: self._options.xEnd,\n animateDuration: 0\n };\n // rerender the graph\n if (self._element.handleUpdate) {\n self._element.handleUpdate(self._element, options);\n }\n else {\n self.render(options);\n }\n })\n .on('end', function () {\n SVGRenderer.IS_RESIZING = false;\n }));\n }\n if (!self._options.disableResizeRight) {\n self._svg.append('rect')\n .attr('opacity', 0)\n .attr('width', self._handleWidth)\n .attr('cursor', 'ew-resize')\n .classed('chart-handle vertical right', true)\n .call(d3.drag()\n .on('start', function () {\n SVGRenderer.IS_RESIZING = true;\n })\n .on('drag', function () {\n if (d3.event.dx === 0) {\n return;\n }\n let node = self._svg.node(); // this is just to make typescript happy\n let width = self._options.width + d3.event.dx;\n width = Math.max(self._minSvgWidth, width);\n width = Math.min(self._maxSvgWidth, width);\n let options = {\n width: width,\n xStart: self._options.xStart,\n xEnd: self._options.xEnd,\n animateDuration: 0\n };\n // rerender the graph\n if (self._element.handleUpdate) {\n self._element.handleUpdate(self._element, options);\n }\n else {\n self.render(options);\n }\n })\n .on('end', function () {\n SVGRenderer.IS_RESIZING = false;\n }));\n }\n }\n // pulled and modified from http://bl.ocks.org/Rokotyan/0556f8facbaf344507cdc45dc3622177\n createImage() {\n let self = this;\n return new Promise(function (resolve, reject) {\n // Below are the functions that handle actual exporting:\n // getSVGString ( svgNode ) and svgString2Image( svgString, width, height, format, callback )\n function getSVGString(svgNode) {\n svgNode.setAttribute('xlink', 'http://www.w3.org/1999/xlink');\n let cssStyleText = getCSSStyles(svgNode);\n appendCSS(cssStyleText, svgNode);\n let serializer = new XMLSerializer();\n let svgString = serializer.serializeToString(svgNode);\n svgString = svgString.replace(/(\\w+)?:?xlink=/g, 'xmlns:xlink='); // Fix root xlink without namespace\n svgString = svgString.replace(/NS\\d+:href/g, 'xlink:href'); // Safari NS namespace fix\n return svgString;\n function getCSSStyles(parentElement) {\n let selectorTextArr = [];\n // Add Parent element Id and Classes to the list\n selectorTextArr.push('#' + parentElement.id);\n for (let c = 0; c < parentElement.classList.length; c++)\n if (!contains('.' + parentElement.classList[c], selectorTextArr))\n selectorTextArr.push('.' + parentElement.classList[c]);\n // Add Children element Ids and Classes to the list\n let nodes = parentElement.getElementsByTagName('*');\n for (let i = 0; i < nodes.length; i++) {\n let id = nodes[i].id;\n if (!contains('#' + id, selectorTextArr))\n selectorTextArr.push('#' + id);\n let classes = nodes[i].classList;\n for (let c = 0; c < classes.length; c++)\n if (!contains('.' + classes[c], selectorTextArr))\n selectorTextArr.push('.' + classes[c]);\n }\n // Extract CSS Rules\n let extractedCSSText = '';\n for (let i = 0; i < document.styleSheets.length; i++) {\n let s = document.styleSheets[i];\n try {\n if (!s.cssRules)\n continue;\n }\n catch (e) {\n if (e.name !== 'SecurityError')\n throw e; // for Firefox\n continue;\n }\n let cssRules = s.cssRules;\n for (let r = 0; r < cssRules.length; r++) {\n if (contains(cssRules[r].selectorText, selectorTextArr))\n extractedCSSText += cssRules[r].cssText;\n }\n }\n return extractedCSSText;\n function contains(str, arr) {\n return arr.indexOf(str) === -1 ? false : true;\n }\n }\n function appendCSS(cssText, element) {\n let styleElement = document.createElement('style');\n styleElement.setAttribute('type', 'text/css');\n styleElement.innerHTML = cssText;\n let refNode = element.hasChildNodes() ? element.children[0] : null;\n element.insertBefore(styleElement, refNode);\n }\n }\n let svg = self._svg;\n let width = Number(svg.attr('width'));\n let height = Number(svg.attr('height'));\n let html = getSVGString(svg.node());\n //console.log(html);\n let imgsrc = 'data:image/svg+xml;base64,' + btoa(html);\n let image = new Image;\n image.src = imgsrc;\n image.onload = function () {\n let canvas = document.createElement('canvas');\n canvas.height = height;\n canvas.width = width;\n let context = canvas.getContext('2d');\n context.drawImage(image, 0, 0, width, height);\n let canvasdata = canvas.toDataURL('image/png');\n resolve({\n image: canvasdata,\n type: 'image/png',\n height: height,\n width: width\n });\n };\n });\n }\n saveImage() {\n this.createImage().then(function (imageData) {\n let pngimg = `<img src=\"${imageData.image}\" height=\"${imageData.height}\" width=\"${imageData.width}\">`;\n d3.select('#pngdataurl').html(pngimg);\n let a = document.createElement('a');\n a.download = 'chart.png';\n a.href = imageData.image;\n a.click();\n });\n }\n}\nexports.SVGRenderer = SVGRenderer;\n\n\n//# sourceURL=webpack://UWT/./src/core/svg-helper.ts?");
/***/ }),
/***/ "./src/core/tooltip.ts":
/*!*****************************!*\
!*** ./src/core/tooltip.ts ***!
\*****************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst d3 = __webpack_require__(/*! d3 */ \"d3\");\n/**\n * The tooltip class provides a mechanism to display a tooltip, usually in\n * response to the mouse entering some region.\n */\nclass BaseTooltip {\n /**\n * Create at tooltip instance.\n *\n * @params tooltipDivId - The ID for the div that is to be filled with the\n * tooltip information.\n * @param tooltipStyle - css class that describes tooltip format. Defaults\n * to tooltip-t.\n */\n constructor(tooltipDivId, tooltipStyle = 'tooltip-t') {\n if (!document.getElementById(tooltipDivId)) {\n this._tooltipDiv = document.createElement('div');\n this._tooltipDiv.style.overflow = 'auto';\n this._tooltipDiv.id = tooltipDivId;\n document.querySelector('body')\n .appendChild(this._tooltipDiv);\n }\n else {\n // Make sure the div ID has the leading '#' we need for selecting\n // a DOM object by id.\n let id = tooltipDivId;\n if ('#' !== tooltipDivId.charAt(0)) {\n id = '#' + tooltipDivId;\n }\n this._tooltipDiv = document.querySelector(id);\n }\n this._targets = [];\n this._analyticsName = '';\n this._disabled = false;\n this._visibilityTimeoutSecs = 0;\n this._visibilityTimeoutCallLeaveFunction = true;\n this._delayMS = BaseTooltip._defaultDelayMS;\n this._tooltipPlacementFunc = this.defaultTooltipPlacement;\n this._alwaysRecalcWidth = false;\n this._tooltipLeftOfMouse = true;\n this._lastShowTs = Date.now();\n // Debugging aid\n this._counter = BaseTooltip._counter;\n BaseTooltip._counter++;\n this._hide = 'none'; // Value display property will be set to\n // Use the default offsets\n this._tooltipOffset = 0;\n // Note that we'll need to get the tooltip size on the first move\n this._tooltipHeight = 0;\n this._tooltipWidth = 0;\n this._windowWidth = 0;\n this._windowHeight = 0;\n // Ensure that the div has the tooltip-t class\n this._tooltipDiv.classList.add(tooltipStyle);\n // Default tooltip textures (null value results in css to be used)\n this._tooltipBackgroundColor = null;\n this._tooltipFontColor = null;\n this._tooltipFontType = null;\n this._tooltipFontSize = null;\n // Put 'this' into a variable that will be visible in the Mouse\n // callbacks which will have the entity being entered as their 'this'\n let self = this;\n // Since this is a callback, 'this' will be the selected object that\n // the mouse has just entered\n this.onMouseEnter = function (d) {\n // If this tooltip is disabled, we're done\n if (self._disabled) {\n return;\n }\n // If there's an _enterfunc, call it. If it returns\n // false, there's been a failure\n if (undefined !== self._enterfunc) {\n if (!self._enterfunc.call(this, d)) {\n self.onMouseLeave.call(this, d);\n return;\n }\n }\n // Delay making the tooltip visible\n self.displayTooltip(self._delayMS);\n // Note that we'll need to get the tooltip size on the first move\n self._tooltipHeight = 0;\n self._tooltipWidth = 0;\n self._windowWidth = 0;\n self._windowHeight = 0;\n }; // onMouseEnter\n // Since this is a callback, 'this' will be the selected object that\n // the mouse has just entered\n this.onMouseLeave = function (d) {\n // Cancel the timer, if it hasn't gone off yet\n if (undefined != self._timerId) {\n window.clearTimeout(self._timerId);\n }\n self._timerId = undefined;\n if (undefined != self._visibilityTimerId) {\n window.clearTimeout(self._visibilityTimerId);\n }\n // If we've got an exit function, call it, unless we're hiding the\n // tooltip after a visibility timeout and we've been told not to.\n // This is really ugly. We're depending on the fact that the\n // timeout is calling us with a null event.\n if (undefined !== self._leavefunc) {\n let callLeaveFunction = true;\n if (null === d) {\n callLeaveFunction = self._visibilityTimeoutCallLeaveFunction;\n }\n if (callLeaveFunction) {\n self._leavefunc.call(this, d);\n }\n }\n // Hide the tooltip div\n self.hideTooltip();\n }; // MouseLeave\n // Since this is a callback, 'this' will be the selected object that\n // the mouse has just entered\n this.onMouseMove = function (d, pos) {\n // If this tooltip is disabled, we're done\n if (self._disabled) {\n return;\n }\n // If we've got a move function, call it\n if (undefined !== self._movefunc) {\n self._movefunc.call(this, d);\n }\n // If we haven't yet, get the width & height of the tooltip, including\n // the margins\n if (self._alwaysRecalcWidth || (0 === self._tooltipWidth)) {\n self._tooltipWidth = self._tooltipDiv.offsetWidth;\n let outerWidth = self._tooltipDiv.offsetHeight;\n let top = parseInt(self._tooltipDiv.style.marginTop);\n let bottom = parseInt(self._tooltipDiv.style.marginBottom);\n if (top) {\n outerWidth += top;\n }\n if (bottom) {\n outerWidth += bottom;\n }\n self._tooltipHeight = outerWidth;\n }\n // If we haven't yet, get the width & height of the window\n if (0 == self._windowWidth) {\n // Get the window's inner width, which doesn't include scrollbars or\n // or the like. Allow a little fudge, just to be safe\n self._windowWidth = window.innerWidth;\n // And the window's inner height\n self._windowHeight = window.innerHeight;\n }\n if (!pos || !pos.clientY) {\n pos = d3.event.clientY ? d3.event : d3.event.sourceEvent;\n }\n self._tooltipPlacementFunc(pos);\n }; // MouseMove\n } // constructor\n adjustVerticalPosition(top, bottom) {\n // Now set the top edge\n top -= this._tooltipHeight / 2;\n // Make sure we're not off the top of the window\n if (top < window.pageYOffset) {\n top = window.pageYOffset;\n }\n // Make sure we're not off the bottom of the window\n bottom = top + this._tooltipHeight;\n if (bottom > (this._windowHeight + window.pageYOffset)) {\n top -= bottom - (this._windowHeight + window.pageYOffset);\n }\n if (top < 0) {\n top = 0;\n // THIS CAUSES TOOLTIP TO NOT RESIZE RIGHT IF IT GETS TOO BIG...\n // NEED TO UPDATE LOGIC THAT GETS TOOLTIP HEIGHT AND THEN COMMENT\n // THIS BACK IN\n // height of tooltip minux 30 for scrollbar\n // if (this._tooltipHeight > this._windowHeight) {\n // this._tooltipDiv.style.height =\n // Math.min(this._tooltipHeight, this._windowHeight) - 30 + 'px';\n // } else {\n // this._tooltipDiv.style.height = 'auto';\n // }\n }\n // Set the tooltip div position.\n this._tooltipDiv.style.top = top + 'px';\n }\n /**\n * Tooltip placement routine to place the tooltip to the left of\n * the mouse. Designed to be used for the chart value tooltip.\n */\n placeTooltipLeft(event) {\n // Start by trying to put the tooltip above or below the pointer\n let top, bottom, right, left;\n // Cast the event the mouse event we know that it is. After all,\n // this is the MouseMove callback!\n top = window.pageYOffset + event.clientY;\n left = window.pageXOffset + event.clientX;\n // Put the tooltip in the left half of the window. The 10 is\n // an offset to allow some space between the tooltip and the\n // pointer\n left -= this._tooltipWidth + 10;\n // Make sure the tooltip isn't off the left edge\n if (left < window.pageXOffset) {\n left = window.pageXOffset;\n }\n this._tooltipDiv.style.left = left + 'px';\n this.adjustVerticalPosition(top, bottom);\n }\n /**\n * Tooltip placement routine to place the tooltip to the right or left of\n * the mouse. Designed to be used for the chart value tooltip.\n *\n * The placement (left or right of the mouse) is changed if the mouse is\n * in the left or right third of the window. Placement is left alone in\n * the middle third.\n */\n placeTooltipLeftRight(event) {\n // Start by trying to put the tooltip above or below the pointer\n let top, bottom, right, left;\n // Cast the event the mouse event we know that it is. After all,\n // this is the MouseMove callback!\n top = window.pageYOffset + event.clientY;\n left = window.pageXOffset + event.clientX;\n // If the mouse is in the left third of the screen, show the tooltip\n // to the right of the mouse. If the mouse is in the right third of\n // the screen, show the tooltip to the left of the mouse. Otherwise,\n // just keep the existing placement\n if (left < this._windowWidth / 3) {\n this._tooltipLeftOfMouse = false;\n }\n if (left > 2 * (this._windowWidth / 3)) {\n this._tooltipLeftOfMouse = true;\n }\n if (this._tooltipLeftOfMouse) {\n // Put the tooltip in the left half of the window. The 10 is\n // an offset to allow some space between the tooltip and the\n // pointer\n left -= this._tooltipWidth + 10;\n }\n else {\n left += 10;\n }\n // Make sure the tooltip isn't off the left edge\n if (left < window.pageXOffset) {\n left = window.pageXOffset;\n }\n this._tooltipDiv.style.left = left + 'px';\n this.adjustVerticalPosition(top, bottom);\n }\n /**\n * Default Tooltip placement routine. Attempts to make the entire\n * tooltip visibile without covering the mouse.\n */\n defaultTooltipPlacement(event) {\n // Start by trying to put the tooltip above or below the pointer\n let top, bottom, right, left;\n // Cast the event the mouse event we know that it is. After all,\n // this is the MouseMove callback!\n top = window.pageYOffset + event.clientY;\n left = window.pageXOffset + event.clientX;\n // If the pointer is in the upper half of the screen, try to put\n // the tooltip below the pointer\n if (event.y < (this._windowHeight / 2)) {\n // Put the top of the tooltip below the pointer. The 20 is a\n // guess for how much to offset so the tooltip isn't obscured\n // by the cursor. Unfortunately there's no API to query the\n // cursor, and it can be an arbitrary shape, with an arbitary\n // hotspot\n top += 20 + this._tooltipOffset;\n bottom = top + this._tooltipHeight;\n // Make sure the bottom of the tooltip is visible\n if (bottom < (this._windowHeight + window.pageYOffset)) {\n // We're good. Now set the left edge\n left -= this._tooltipWidth / 2;\n // Make sure we're not off the left or right edge of the window\n right = left + this._tooltipWidth;\n if (right > this._windowWidth) {\n left -= right - this._windowWidth;\n }\n if (left < window.pageXOffset) {\n left = window.pageXOffset;\n }\n this._tooltipDiv.style.left = left + 'px';\n this.adjustVerticalPosition(top, bottom);\n return;\n }\n }\n else {\n // Initially guess the tooltip goes above the pointer. The\n // 10 gives some space between the tooltip and the pointer\n top -= this._tooltipHeight + 10 + this._tooltipOffset;\n // Make sure the top of the tooltip is visible\n if (top >= window.pageYOffset) {\n // We're good. Now set the left edge\n left -= this._tooltipWidth / 2;\n // Make sure we're not off the left or right edge of the window\n right = left + this._tooltipWidth;\n if (right > this._windowWidth) {\n left -= right - this._windowWidth;\n }\n if (left < window.pageXOffset) {\n left = window.pageXOffset;\n }\n this._tooltipDiv.style.left = left + 'px';\n this.adjustVerticalPosition(top, bottom);\n return;\n }\n }\n // If we got here, putting the tooltip in the upper or lower half\n // of the window didn't work. Try for the right or left half\n // Choose the left or right half\n if (event.clientX > (this._windowWidth / 2)) {\n // Put the tooltip in the left half of the window. The 10 is\n // an offset to allow some space between the tooltip and the\n // pointer\n left -= this._tooltipWidth + 10;\n // Make sure the tooltip isn't off the left edge\n if (left < window.pageXOffset) {\n left = window.pageXOffset;\n }\n }\n else {\n // Try putting the tooltip in the right half of the window\n // Put the tooltip in the left half of the window. The 10 is\n // an offset to allow some space between the tooltip and the\n // pointer\n left += 10;\n right = left + this._tooltipWidth;\n // Make sure the tooltip isn't off the right edge\n if (right > this._windowWidth) {\n left -= right - this._windowWidth;\n }\n }\n // Set the tooltip div position.\n this._tooltipDiv.style.left = left + 'px';\n this.adjustVerticalPosition(top, bottom);\n } // _DefaultTooltipPlacement\n /**\n * Override the default offset of the tooltip from the mouse.\n */\n setOffset(value) {\n this._tooltipOffset = value;\n return this;\n }\n setEnabled(enable) {\n this._disabled = !enable;\n return this;\n }\n /**\n * HideDisplayValue\n *\n * The value the CSS 'display' attribute will be set to to hide the\n * tooltip. This defaults to 'none'. 'display' will be set to 'block'\n * when the tooltip is to be visible.\n */\n setHideDisplayValue(hide) {\n this._hide = hide;\n return this;\n }\n /**\n * When the mouse enters the target region, instead of instantly showing\n * the tooltip, there's a small delay. This prevents the tooltip from\n * popping up and disappearing if the user is just moving the mouse over\n * the target region instead of waiting for information. By default, the\n * delay is 1 second.\n *\n * @param milliseconds - The number of milliseconds to delay showing the\n * tooltip after the mouse enters the target region.\n *\n * @return - The tooltip instance.\n */\n setDelay(milliseconds) {\n this._delayMS = milliseconds;\n return this;\n }\n setPlaceTooltipLeft() {\n this._tooltipPlacementFunc = this.placeTooltipLeft;\n return this;\n }\n setPlaceTooltipLeftRight() {\n this._tooltipPlacementFunc = this.placeTooltipLeftRight;\n return this;\n }\n /**\n * Release all tooltip listeners on the target. Failure to release the\n * listeners can prevent the target from being freed.\n *\n * @param target - The object to have any tooltip listeners reset.\n */\n releaseListeners() {\n this._targets.forEach(target => {\n target\n .on('mouseenter.tooltip', null)\n .on('mouseleave.tooltip', null)\n .on('mousemove.tooltip', null);\n });\n this._targets = [];\n }\n /**\n * Sets a limit on the time a tooltip is visible.\n *\n * @param seconds - Seconds the tooltip should be visible\n * @param callLeaveFunctionOnTimeout - True if the leave function should\n * be called when the timeout occurs.\n *\n * @return - The tooltip instance.\n */\n setVisibilityTimeout(seconds, callLeaveFunctionOnTimeout = true) {\n this._visibilityTimeoutSecs = seconds;\n this._visibilityTimeoutCallLeaveFunction = callLeaveFunctionOnTimeout;\n return this;\n }\n /**\n * Set whether to recalculate the tooltip width every time the cursor moves.\n *\n * Defaults to false\n *\n * @param value - Whether to recalculate the tooltip width every time the\n * cursor moves.\n */\n alwaysRecalcWidth(value) {\n this._alwaysRecalcWidth = value;\n return this;\n }\n /**\n * Override tooltip background color. The background color is applied to\n * the tooltip div immediately.\n *\n * @param value - color encoding, for example '#000000'\n *\n * @returns - The tooltip instance.\n */\n setBackgroundColor(color) {\n this._tooltipBackgroundColor = color;\n this._tooltipDiv.style['background-color'] =\n this._tooltipBackgroundColor;\n return this;\n }\n /**\n * Override tooltip font color. The font color is applied to\n * the tooltip div immediately.\n *\n * @param value - color encoding, for example '#000000'\n *\n * @returns - The tooltip instance.\n */\n setFontColor(color) {\n this._tooltipFontColor = color;\n this._tooltipDiv.style.color = this._tooltipFontColor;\n return this;\n }\n /**\n * Override tooltip font type. The font family is applied to\n * the tooltip div immediately.\n *\n * @param value - string, for example 'Segoe UI'\n *\n * @returns - The tooltip instance.\n */\n setFontType(font) {\n this._tooltipFontType = font;\n this._tooltipDiv.style.font = this._tooltipFontType;\n return this;\n }\n /**\n * Override tooltip font size. The font size is applied to\n * the tooltip div immediately.\n *\n * @param value - font size in pixels, for example '8px'\n *\n * @returns - The tooltip instance.\n */\n setFontSize(size) {\n this._tooltipFontSize = size;\n this._tooltipDiv.style.font = this._tooltipFontSize;\n return this;\n } // FontSize\n /**\n * Set the analytics name for the tooltip. Not currently used.\n *\n * @param value - The analytics name to report when this tooltip is shown\n * or hidden.\n *\n * @returns - The tooltip instance.\n */\n setAnalyticsName(value) {\n this._analyticsName = value;\n return this;\n } // AnalyticsName\n /**\n * Set the CSS class for the tooltip. The class is applied immediately.\n *\n * @param cssClass - The CSS class(es) to apply to this tooltip.\n *\n * @returns - The tooltip instance.\n */\n setCssClass(cssClass) {\n this._tooltipDiv.classList.add(cssClass);\n return this;\n } // CssClass\n /**\n * Set the target for the tooltip\n *\n * @param target - The selection of DOM objects that should cause the\n * tooltip to appear.\n *\n * @returns - The tooltip instance.\n */\n setTarget(target) {\n if (target) {\n target\n .on('mouseenter.tooltip', this.onMouseEnter)\n .on('mouseleave.tooltip', this.onMouseLeave)\n .on('mousemove.tooltip', this.onMouseMove);\n this._targets.push(target);\n }\n return this;\n } // Target\n /**\n * Set the function to be called when the mouse moves into the target\n * DOM object(s)\n *\n * @param enterfunc - The function to be called when the mouse moves into\n * the target DOM object. If the tooltip will only be shown if the\n * enterfunc returns true.\n *\n * @returns - The tooltip instance.\n */\n setEnterCallback(enterfunc) {\n this._enterfunc = enterfunc;\n return this;\n } // EnterFunc\n /**\n * Set the function to be called when the mouse moves off of the target\n * DOM object(s)\n *\n * @param leavefunc - The function to be called when the mouse moves off of\n * the target DOM object.\n *\n * @returns - The tooltip instance.\n */\n setLeaveCallback(leavefunc) {\n this._leavefunc = leavefunc;\n return this;\n } // LeaveFunc\n /**\n * Set the function to be called when the mouse moves while it is on the\n * target DOM object(s)\n *\n * @param movefunc - The function to be called when the mouse moves while\n * it is on the target DOM object.\n *\n * @returns - The tooltip instance.\n */\n setMoveCallback(moveFunc) {\n this._movefunc = moveFunc;\n return this;\n } // MoveFunc\n /**\n * Display the tooltip div after a delay\n *\n * @param delayMS - milliseconds to delay before showing the tooltip\n *\n * @returns - The tooltip instance.\n */\n displayTooltip(delayMS) {\n // If tooltips are disabled, don't do anything\n if (this._disabled) {\n return this;\n }\n // Save this for callbacks\n let self = this;\n // If there's no delay display the tooltip now\n if (0 === delayMS) {\n displayTooltipNow();\n return this;\n }\n // If there's already a timer running, don't start another\n if (undefined !== this._timerId) {\n return this;\n }\n // Display the tooltip 'in a bit'\n this._timerId = window.setTimeout(displayTooltipNow, delayMS);\n return this;\n // Make the tooltip div visible\n function displayTooltipNow() {\n // If tooltips are dispabled, don't do anything\n if (self._disabled) {\n return;\n }\n // Display the tooltip\n self._tooltipDiv.style.display = 'block';\n // If the tooltip is supposed to 'self hide', start a timer\n if (self._visibilityTimeoutSecs > 0) {\n self._visibilityTimerId = window.setTimeout(hideTooltip, self._visibilityTimeoutSecs * 1000);\n }\n // Function to hide the tooltip\n function hideTooltip() {\n self.onMouseLeave(null);\n }\n } // function DisplayTooltipNow\n } // _DisplayTooltip\n /**\n * Hide the tooltip div\n *\n * @returns - The tooltip instance.\n */\n hideTooltip() {\n // If there's a delayed display pending, cancel it\n if (this._timerId) {\n window.clearTimeout(this._timerId);\n }\n // Reset the timerid so we can display the tooltip next time\n this._timerId = undefined;\n this._tooltipDiv.style.display = this._hide;\n return this;\n } // _HideTooltip\n} // class Tooltip\nexports.BaseTooltip = BaseTooltip;\n/** Default delay for showing a tooltip (.5 second) */\nBaseTooltip._defaultDelayMS = 500; // Milliseconds to delay displaying tooltip (1 sec)\n/** Counter used to generate a unique value for each tooltip */\nBaseTooltip._counter = 0;\nclass OneLineTooltip extends BaseTooltip {\n constructor(tooltipDivId, tooltipStyle = 'tooltip-t') {\n super(tooltipDivId, tooltipStyle);\n }\n getTitle() {\n return this._title;\n }\n setData(title, data) {\n // If the data already exists, remove any children\n while (this._tooltipDiv.hasChildNodes()) {\n this._tooltipDiv.removeChild(this._tooltipDiv.lastChild);\n }\n this._title = title;\n let table = document.createElement('table');\n table.classList.add('tooltip-table');\n this._tooltipDiv.appendChild(table);\n let tr = document.createElement('tr');\n table.appendChild(tr);\n let td = document.createElement('td');\n td.classList.add('tooltip-title');\n td.setAttribute('colspan', '2');\n td.textContent = title;\n tr.appendChild(td);\n if (data != undefined) {\n // now get text from any associated graphs\n tr = document.createElement('tr');\n table.appendChild(tr);\n td = document.createElement('td');\n td.setAttribute('colspan', '2');\n td.textContent = data;\n tr.appendChild(td);\n }\n }\n}\nexports.OneLineTooltip = OneLineTooltip;\nclass MetricListTooltip extends BaseTooltip {\n constructor(tooltipDivId, tooltipStyle = 'tooltip-t') {\n super(tooltipDivId, tooltipStyle);\n }\n getTitle() {\n return this._title;\n }\n setData(title, ttList) {\n // If the data already exists, remove any children\n while (this._tooltipDiv.hasChildNodes()) {\n this._tooltipDiv.removeChild(this._tooltipDiv.lastChild);\n }\n this._title = title;\n let table = document.createElement('table');\n table.classList.add('tooltip-table');\n this._tooltipDiv.appendChild(table);\n let tr = document.createElement('tr');\n table.appendChild(tr);\n let td = document.createElement('td');\n td.classList.add('tooltip-title');\n td.setAttribute('colspan', '2');\n td.textContent = title;\n tr.appendChild(td);\n // now get text from any associated graphs\n // check if there are multiple chart sources involved\n let multipleSources = false;\n if (ttList.length > 0) {\n let firstSource = ttList[0].source;\n for (let i = 1; i < ttList.length; ++i) {\n if (ttList[i].source !== firstSource) {\n multipleSources = true;\n }\n }\n }\n for (let i = 0; i < ttList.length; ++i) {\n let data = ttList[i];\n if (Object.keys(data.metrics).length > 0) {\n let sourceChart = data.source;\n if (sourceChart && sourceChart.title && multipleSources) {\n let tr = document.createElement('tr');\n table.appendChild(tr);\n let td = document.createElement('td');\n td.classList.add('tooltip-group-title');\n td.setAttribute('colspan', '2');\n td.textContent = sourceChart.title;\n tr.appendChild(td);\n }\n if (data.group && data.group.length > 0) {\n let tr = document.createElement('tr');\n table.appendChild(tr);\n let td = document.createElement('td');\n td.classList.add('tooltip-group-title');\n td.setAttribute('colspan', '2');\n td.textContent = data.group;\n tr.appendChild(td);\n }\n for (let metricName in data.metrics) {\n let tr = document.createElement('tr');\n table.appendChild(tr);\n let td = document.createElement('td');\n td.classList.add('tooltip-metric-name');\n td.textContent = metricName;\n tr.appendChild(td);\n td = document.createElement('td');\n td.classList.add('tooltip-metric-value');\n td.textContent = data.metrics[metricName];\n tr.appendChild(td);\n }\n }\n }\n }\n}\nexports.MetricListTooltip = MetricListTooltip;\nclass CustomDivTooltip extends MetricListTooltip {\n constructor(tooltipDivId, tooltipStyle = 'tooltip-t') {\n super(tooltipDivId, tooltipStyle);\n }\n clearTooltip() {\n // If the data already exists, remove any children\n while (this._tooltipDiv.hasChildNodes()) {\n this._tooltipDiv.removeChild(this._tooltipDiv.lastChild);\n }\n }\n getTooltipDiv() {\n return this._tooltipDiv;\n }\n}\nexports.CustomDivTooltip = CustomDivTooltip;\n\n\n//# sourceURL=webpack://UWT/./src/core/tooltip.ts?");
/***/ }),
/***/ "./src/core/utilities.ts":
/*!*******************************!*\
!*** ./src/core/utilities.ts ***!
\*******************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction getSelectionName(className) {\n if (typeof (className) === 'number') {\n return 'n' + className;\n }\n if (!className) {\n return '';\n }\n if (className.length > 0 && !isNaN(Number(className[0]))) {\n className = 'z' + className;\n }\n className = className.replace(/[\\*\\%\\#\\[\\]\\/\\>\\<\\s\\+\\(\\)\\;\\@\\:\\?\\\"=.,]/g, '-');\n return className;\n}\nexports.getSelectionName = getSelectionName;\nfunction removeFromList(value, arr) {\n if (value) {\n let index = arr.indexOf(value);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n }\n}\nexports.removeFromList = removeFromList;\n/** taken from d3-array */\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n/** taken from d3-array */\nfunction ascendingComparator(f) {\n return function (d, x) {\n return ascending(f(d), x);\n };\n}\n/** modified from d3-array */\nfunction bisect(compare) {\n if (!compare)\n compare = ascending;\n if (compare.length === 1)\n compare = ascendingComparator(compare);\n return {\n left: function (a, x, lo, hi) {\n if (lo == null)\n lo = 0;\n if (hi == null)\n hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0)\n lo = mid + 1;\n else\n hi = mid;\n }\n return lo;\n },\n right: function (a, x, lo, hi) {\n if (lo == null)\n lo = 0;\n if (hi == null)\n hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0)\n hi = mid;\n else\n lo = mid + 1;\n }\n return lo;\n }\n };\n}\nexports.bisect = bisect;\n/** puts all raw data into buckets based on thresholds and values */\nfunction bucketData(values, thresholds, accessor) {\n let findRight = bisect().right;\n let buckets = [];\n // need one less bucket than thresholds\n for (let i = 0; i < thresholds.length - 1; ++i) {\n buckets[i] = [];\n }\n let min = thresholds[0];\n let max = thresholds[thresholds.length - 1];\n let usedThresholds = thresholds.slice(1);\n for (let i = 0; i < values.length; ++i) {\n let compareValue = accessor(values[i]);\n if (compareValue < min || compareValue > max) {\n continue;\n }\n let valueIdx = findRight(usedThresholds, compareValue);\n buckets[valueIdx].push(values[i]);\n }\n // name the return buckets\n let ret = {};\n for (let i = 0; i < thresholds.length - 1; ++i) {\n let bucketName = thresholds[i] + '-' + thresholds[i + 1];\n ret[bucketName] = buckets[i];\n }\n return ret;\n}\nexports.bucketData = bucketData;\nfunction copy(obj) {\n let ret = {};\n for (let key in obj) {\n ret[key] = obj[key];\n }\n return ret;\n}\nexports.copy = copy;\nfunction merge(obj1, obj2) {\n for (let key in obj2) {\n obj1[key] = obj2[key];\n }\n}\nexports.merge = merge;\nfunction convertTraceToTrees(input) {\n let roots = [];\n let stack = []; // used to represent the current stack state\n let nodeStack = []; // used to represent the current stack state\n for (let i = 0; i < input.length; i++) {\n let value = input[i];\n let parent = stack[stack.length - 1];\n // pop stuff off the stack\n while (stack.length && value.x > parent.x + parent.dx) {\n --stack.length;\n --nodeStack.length;\n parent = stack[stack.length - 1];\n }\n let parentNode = nodeStack[nodeStack.length - 1];\n let node = {\n key: value.key,\n value: value.dx,\n children: [],\n parent: parentNode\n };\n if (value.name) {\n node.name = value.name;\n }\n if (parentNode) {\n parentNode.children.push(node);\n }\n else {\n roots.push(node);\n }\n stack.push(value);\n nodeStack.push(node);\n }\n return roots;\n}\nexports.convertTraceToTrees = convertTraceToTrees;\nclass SimpleBuffer {\n constructor(data) {\n if (data) {\n this._data = data;\n }\n else {\n this._data = [];\n }\n }\n push(d) {\n this._data.push(d);\n }\n get(index) {\n return this._data[index];\n }\n length() {\n return this._data.length;\n }\n getData() {\n return this._data;\n }\n}\nexports.SimpleBuffer = SimpleBuffer;\nclass RingBuffer {\n constructor(size) {\n this._data = new Array(size);\n this._startIdx = 0;\n this._count = 0;\n this._isRotating = false;\n }\n /** add a new value to the buffer */\n push(d) {\n if (this._isRotating) {\n // the buffer is rotating\n this._data[this._startIdx] = d;\n ++this._startIdx;\n if (this._startIdx === this._count) {\n this._startIdx = 0;\n }\n this._isRotating = true;\n }\n else if (this._count === this._data.length - 1) {\n // here the buffer will start rotating as the buffer is full\n this._data[this._count] = d;\n ++this._count;\n this._isRotating = true;\n }\n else {\n // here the buffer has not been filled yet\n this._data[this._count] = d;\n ++this._count;\n }\n }\n /** return the value offset index from the start index\n * @param index the offset from the start of the buffer\n */\n get(index) {\n if (this._isRotating) {\n // the buffer is rotating\n index = index + this._startIdx;\n if (index >= this._count) {\n index = index - this._count;\n }\n }\n return this._data[index];\n }\n /** get the number of items in the buffer */\n length() {\n return this._count;\n }\n getData() {\n if (this._isRotating) {\n // the buffer is rotating\n let ret = [];\n for (let i = this._startIdx; i < this._data.length; ++i) {\n ret.push(this._data[i]);\n }\n for (let i = 0; i < this._startIdx; ++i) {\n ret.push(this._data[i]);\n }\n return ret;\n }\n return this._data;\n }\n}\nexports.RingBuffer = RingBuffer;\nfunction bisectBuffer(compare) {\n if (!compare)\n compare = ascending;\n if (compare.length === 1)\n compare = ascendingComparator(compare);\n return {\n left: function (a, x, lo, hi) {\n if (lo == null)\n lo = 0;\n if (hi == null)\n hi = a.length();\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a.get(mid), x) < 0)\n lo = mid + 1;\n else\n hi = mid;\n }\n return lo;\n },\n right: function (a, x, lo, hi) {\n if (lo == null)\n lo = 0;\n if (hi == null)\n hi = a.length();\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a.get(mid), x) > 0)\n hi = mid;\n else\n lo = mid + 1;\n }\n return lo;\n }\n };\n}\nexports.bisectBuffer = bisectBuffer;\nfunction transposeKeys(data) {\n // this is used to map the keys to their indicies in the output summary data\n let keyIdxMapping = {};\n function transposeHelper(output, parentKeys, value, level) {\n let myKeys = [];\n for (let i = 0; i < parentKeys.length; ++i) {\n myKeys[i] = parentKeys[i];\n }\n myKeys.push(value.key);\n if (Array.isArray(value.data)) {\n for (let i = 0; i < value.data.length; ++i) {\n transposeHelper(output, myKeys, value.data[i], level + 1);\n }\n }\n else {\n let currSummaryArray = output;\n for (let keyIdx = myKeys.length - 1; keyIdx >= 0; --keyIdx) {\n let key = myKeys[keyIdx];\n let dataIdx;\n if (!keyIdxMapping.hasOwnProperty(key)) {\n dataIdx = currSummaryArray.length;\n keyIdxMapping[key] = dataIdx;\n }\n else {\n dataIdx = keyIdxMapping[key];\n }\n // create the summary data if it doesn't exist yet\n if (!currSummaryArray[dataIdx]) {\n currSummaryArray[dataIdx] = { key: key, data: [] };\n }\n // if we are the leaf add the data, else just move to the next level\n if (keyIdx === 0) {\n currSummaryArray[dataIdx].data = value.data;\n }\n else {\n currSummaryArray = currSummaryArray[dataIdx].data;\n }\n }\n }\n }\n let output = [];\n for (let i = 0; i < data.length; ++i) {\n transposeHelper(output, [], data[i], 0);\n }\n return output;\n}\nexports.transposeKeys = transposeKeys;\nfunction runFunctionOnLeaf(node, func) {\n if (node && node.children && node.children.length > 0) {\n for (let i = 0; i < node.children.length; ++i) {\n runFunctionOnLeaf(node.children[i], func);\n }\n }\n else {\n func(node);\n }\n}\nexports.runFunctionOnLeaf = runFunctionOnLeaf;\nfunction isOverlapping(rect1, rect2) {\n return rect1.x <= rect2.right && rect1.right >= rect2.x &&\n rect1.y <= rect2.bottom && rect1.bottom >= rect2.y;\n}\nexports.isOverlapping = isOverlapping;\n\n\n//# sourceURL=webpack://UWT/./src/core/utilities.ts?");
/***/ }),
/***/ "./src/core/web-utilities.ts":
/*!***********************************!*\
!*** ./src/core/web-utilities.ts ***!
\***********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst es6_promise_1 = __webpack_require__(/*! es6-promise */ \"es6-promise\");\n/**\n* detect IE\n* returns version of IE or false, if browser is not Internet Explorer\n*/\n// from https://codepen.io/gapcode/pen/vEJNZN\nfunction detectIE() {\n let ua = window.navigator.userAgent;\n // Test values; Uncomment to check result …\n // IE 10\n // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';\n // IE 11\n // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';\n // Edge 12 (Spartan)\n // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';\n // Edge 13\n // ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';\n let msie = ua.indexOf('MSIE ');\n if (msie > 0) {\n es6_promise_1.polyfill();\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function (searchString, position) {\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n }\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n let trident = ua.indexOf('Trident/');\n if (trident > 0) {\n es6_promise_1.polyfill();\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function (searchString, position) {\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n }\n // IE 11 => return version number\n let rv = ua.indexOf('rv:');\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n }\n let edge = ua.indexOf('Edge/');\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n }\n // other browser\n return false;\n}\nexports.detectIE = detectIE;\ndocument.addEventListener('DOMContentLoaded', function () {\n 0;\n detectIE();\n}, false);\n// from https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent\n// polyfill for old version of IE\nfunction useIEPolyfill(window) {\n try {\n new CustomEvent('test'); // No need to polyfill\n }\n catch (e) {\n // Polyfills DOM4 CustomEvent\n let MouseEvent = function (eventType, params) {\n params = params || { bubbles: false, cancelable: false };\n var mouseEvent = document.createEvent('MouseEvent');\n mouseEvent.initMouseEvent(eventType, params.bubbles, params.cancelable, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n return mouseEvent;\n };\n MouseEvent.prototype = Event.prototype;\n window.MouseEvent = MouseEvent;\n }\n}\nexports.useIEPolyfill = useIEPolyfill;\n\n\n//# sourceURL=webpack://UWT/./src/core/web-utilities.ts?");
/***/ }),
/***/ "./src/interface/graph.ts":
/*!********************************!*\
!*** ./src/interface/graph.ts ***!
\********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkType;\n(function (LinkType) {\n LinkType[LinkType[\"Linear\"] = 1] = \"Linear\";\n LinkType[LinkType[\"Elbow\"] = 2] = \"Elbow\";\n /** adds an arrow from the input to the output */\n LinkType[LinkType[\"Directional\"] = 4] = \"Directional\";\n /** adds an arrow from the input to the output and vice versa */\n LinkType[LinkType[\"Bidirectional\"] = 8] = \"Bidirectional\";\n /** render the link as a curve */\n LinkType[LinkType[\"Curve\"] = 16] = \"Curve\";\n})(LinkType = exports.LinkType || (exports.LinkType = {}));\nvar NodeType;\n(function (NodeType) {\n /** render port nodes as a circle */\n NodeType[NodeType[\"NodeSimple\"] = 0] = \"NodeSimple\";\n /** render port nodes as a rectangle putting the type as the title */\n NodeType[NodeType[\"NodeRectangle\"] = 1] = \"NodeRectangle\";\n})(NodeType = exports.NodeType || (exports.NodeType = {}));\n\n\n//# sourceURL=webpack://UWT/./src/interface/graph.ts?");
/***/ }),
/***/ "./src/interface/ui-base.ts":
/*!**********************************!*\
!*** ./src/interface/ui-base.ts ***!
\**********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\n;\n/**\n * Represents a relative alignment\n*/\nvar Alignment;\n(function (Alignment) {\n Alignment[Alignment[\"Left\"] = 1] = \"Left\";\n Alignment[Alignment[\"Right\"] = 2] = \"Right\";\n Alignment[Alignment[\"Top\"] = 4] = \"Top\";\n Alignment[Alignment[\"Bottom\"] = 8] = \"Bottom\";\n Alignment[Alignment[\"None\"] = 0] = \"None\";\n})(Alignment = exports.Alignment || (exports.Alignment = {}));\n; // bitmask Position\nvar EventType;\n(function (EventType) {\n EventType[EventType[\"CursorStart\"] = 0] = \"CursorStart\";\n EventType[EventType[\"CursorMove\"] = 1] = \"CursorMove\";\n EventType[EventType[\"CursorEnd\"] = 2] = \"CursorEnd\";\n EventType[EventType[\"BrushStart\"] = 3] = \"BrushStart\";\n EventType[EventType[\"BrushMove\"] = 4] = \"BrushMove\";\n EventType[EventType[\"BrushEnd\"] = 5] = \"BrushEnd\";\n EventType[EventType[\"HoverStart\"] = 6] = \"HoverStart\";\n EventType[EventType[\"HoverEnd\"] = 7] = \"HoverEnd\";\n EventType[EventType[\"HoverClear\"] = 8] = \"HoverClear\";\n EventType[EventType[\"FocusStart\"] = 6] = \"FocusStart\";\n EventType[EventType[\"FocusEnd\"] = 7] = \"FocusEnd\";\n EventType[EventType[\"FocusClear\"] = 8] = \"FocusClear\";\n EventType[EventType[\"SelectAdd\"] = 9] = \"SelectAdd\";\n EventType[EventType[\"SelectRemove\"] = 10] = \"SelectRemove\";\n EventType[EventType[\"SelectStart\"] = 9] = \"SelectStart\";\n EventType[EventType[\"SelectEnd\"] = 10] = \"SelectEnd\";\n EventType[EventType[\"SelectClear\"] = 11] = \"SelectClear\";\n EventType[EventType[\"Zoom\"] = 12] = \"Zoom\";\n EventType[EventType[\"Click\"] = 13] = \"Click\";\n EventType[EventType[\"DoubleClick\"] = 14] = \"DoubleClick\";\n EventType[EventType[\"RangeUpdate\"] = 15] = \"RangeUpdate\";\n})(EventType = exports.EventType || (exports.EventType = {}));\nvar UIType;\n(function (UIType) {\n UIType[UIType[\"Unrendered\"] = 0] = \"Unrendered\";\n UIType[UIType[\"Cartesian\"] = 1] = \"Cartesian\";\n UIType[UIType[\"Pie\"] = 2] = \"Pie\";\n UIType[UIType[\"Grid\"] = 3] = \"Grid\";\n UIType[UIType[\"FlowDiagram\"] = 4] = \"FlowDiagram\";\n UIType[UIType[\"ForceDirectedGraph\"] = 5] = \"ForceDirectedGraph\";\n UIType[UIType[\"Sunburst\"] = 6] = \"Sunburst\";\n UIType[UIType[\"HierarchyGraph\"] = 7] = \"HierarchyGraph\";\n UIType[UIType[\"PortDiagram\"] = 8] = \"PortDiagram\";\n UIType[UIType[\"SimpleGraph\"] = 9] = \"SimpleGraph\";\n UIType[UIType[\"TreeMap\"] = 10] = \"TreeMap\";\n UIType[UIType[\"Axis\"] = 11] = \"Axis\";\n UIType[UIType[\"Radar\"] = 12] = \"Radar\";\n})(UIType = exports.UIType || (exports.UIType = {}));\nvar LegendType;\n(function (LegendType) {\n LegendType[LegendType[\"Discrete\"] = 0] = \"Discrete\";\n LegendType[LegendType[\"Gradient\"] = 1] = \"Gradient\";\n})(LegendType = exports.LegendType || (exports.LegendType = {}));\nvar LegendOrientation;\n(function (LegendOrientation) {\n LegendOrientation[LegendOrientation[\"Vertical\"] = 0] = \"Vertical\";\n LegendOrientation[LegendOrientation[\"Horizontal\"] = 1] = \"Horizontal\";\n})(LegendOrientation = exports.LegendOrientation || (exports.LegendOrientation = {}));\nvar LegendItemShape;\n(function (LegendItemShape) {\n LegendItemShape[LegendItemShape[\"Rectangle\"] = 0] = \"Rectangle\";\n LegendItemShape[LegendItemShape[\"Line\"] = 1] = \"Line\";\n LegendItemShape[LegendItemShape[\"Circle\"] = 2] = \"Circle\";\n})(LegendItemShape = exports.LegendItemShape || (exports.LegendItemShape = {}));\n// Represents a rectangular area.\nclass Rect {\n constructor(x, y, width, height) {\n this.x = 0;\n this.y = 0;\n this.width = 0;\n this.height = 0;\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n // Returns true if the rectangle contains (x,y).\n contains(x, y) {\n return (x >= this.x && x <= this.x + this.width &&\n y >= this.y && y <= this.y + this.height);\n }\n}\nexports.Rect = Rect;\n/**\n * Used to manipulate CSS class and style information\n */\nclass Css {\n constructor(classes, style) {\n if (classes) {\n this.addClasses(classes);\n }\n else {\n this.classes = {};\n }\n if (style) {\n this.style = style;\n }\n else {\n this.style = {};\n }\n }\n /**\n * add a class to the class list\n * @param classes to add, can be strings separated by spaces\n *\n * @return the manager instance\n */\n addClasses(classesStr) {\n let classes = classesStr.split(' ');\n for (let i = 0; i < classes.length; ++i) {\n this.classes[classes[i]] = true;\n }\n return this;\n }\n /**\n * add a set of styles to the style object\n * @param style a style object\n *\n * @return the manager instance\n */\n addStyles(style) {\n for (let key in style) {\n this.style[key] = style[key];\n }\n return this;\n }\n /** set the color value\n *\n * @param color a string representing the color to use\n */\n setColor(color) {\n this.addStyles({ color: color });\n return this;\n }\n /** set the opcaity value\n *\n * @param opcaity a string representing the color to use\n */\n setOpacity(opacity) {\n this.addStyles({ opacity: opacity });\n return this;\n }\n /**\n * remove a class from the class list\n * @param className the class to remove\n *\n * @return the manager instance\n */\n removeClass(className) {\n delete this.classes[className];\n return this;\n }\n /**\n * remove a style from the style map\n * @param key the name of the style to remove\n *\n * @return the manager instance\n */\n removeStyle(key) {\n delete this.style[key];\n return this;\n }\n /**\n * get the list of classes\n *\n * @return a list of classes for this manager\n */\n getClasses() {\n return Object.keys(this.classes);\n }\n /**\n * helper to get a space separated list of classes\n *\n * @return a string list of classes for this manager\n */\n getClassString() {\n let ret = '';\n for (let className in this.classes) {\n ret += className + ' ';\n }\n return ret;\n }\n /**\n * get the style map\n *\n * @return an object that contains key/value style pairs\n */\n getStyles() {\n return this.style;\n }\n /**\n * helper to get a json representation of the style map\n *\n * @return the json string of the style map\n */\n getStyleString() {\n return JSON.stringify(this.style);\n }\n}\nexports.Css = Css;\n;\n/**\n * implemented a basic API on top of the IRange object\n */\nclass Range {\n constructor(min, max) {\n this.min = min;\n this.max = max;\n }\n /**\n * set the min value for the range\n *\n * @return the min range value\n */\n setMin(min) {\n this.min = min;\n return this;\n }\n /**\n * get the min value for the range\n *\n * @return the min range value\n */\n getMin() {\n return this.min;\n }\n /**\n * set the max value for the range\n *\n * @return the max range value\n */\n setMax(max) {\n this.max = max;\n return this;\n }\n /**\n * get the max value for the range\n *\n * @return the max range value\n */\n getMax() {\n return this.max;\n }\n}\nexports.Range = Range;\n\n\n//# sourceURL=webpack://UWT/./src/interface/ui-base.ts?");
/***/ }),
/***/ "./third-party/d3-legend-master/indexRollupNext.js":
/*!*********************************************************!*\
!*** ./third-party/d3-legend-master/indexRollupNext.js ***!
\*********************************************************/
/*! exports provided: legendColor, legendSize, legendSymbol, legendHelpers, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"legendColor\", function() { return color; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"legendSize\", function() { return size; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"legendSymbol\", function() { return symbol; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"legendHelpers\", function() { return legendHelpers; });\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"./node_modules/d3-selection/src/index.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-format */ \"./node_modules/d3-format/src/index.js\");\n/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-dispatch */ \"./node_modules/d3-dispatch/src/index.js\");\n/* harmony import */ var d3_scale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-scale */ \"./node_modules/d3-scale/src/index.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n\n\n\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar d3_identity = function d3_identity(d) {\n return d;\n};\n\nvar d3_reverse = function d3_reverse(arr) {\n var mirror = [];\n for (var i = 0, l = arr.length; i < l; i++) {\n mirror[i] = arr[l - i - 1];\n }\n return mirror;\n};\n\n//Text wrapping code adapted from Mike Bostock\nvar d3_textWrapping = function d3_textWrapping(text, width) {\n text.each(function () {\n var text = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(this),\n words = text.text().split(/\\s+/).reverse(),\n word,\n line = [],\n lineNumber = 0,\n lineHeight = 1.2,\n //ems\n y = text.attr(\"y\"),\n dy = parseFloat(text.attr(\"dy\")) || 0,\n tspan = text.text(null).append(\"tspan\").attr(\"x\", 0).attr(\"dy\", dy + \"em\");\n\n while (word = words.pop()) {\n line.push(word);\n tspan.text(line.join(\" \"));\n if (tspan.node().getComputedTextLength() > width && line.length > 1) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text.append(\"tspan\").attr(\"x\", 0).attr(\"dy\", lineHeight + dy + \"em\").text(word);\n }\n }\n });\n};\n\nvar d3_mergeLabels = function d3_mergeLabels() {\n var gen = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var labels = arguments[1];\n var domain = arguments[2];\n var range = arguments[3];\n var labelDelimiter = arguments[4];\n\n if ((typeof labels === \"undefined\" ? \"undefined\" : _typeof(labels)) === \"object\") {\n if (labels.length === 0) return gen;\n\n var i = labels.length;\n for (; i < gen.length; i++) {\n labels.push(gen[i]);\n }\n return labels;\n } else if (typeof labels === \"function\") {\n var customLabels = [];\n var genLength = gen.length;\n for (var _i = 0; _i < genLength; _i++) {\n customLabels.push(labels({\n i: _i,\n genLength: genLength,\n generatedLabels: gen,\n domain: domain,\n range: range,\n labelDelimiter: labelDelimiter\n }));\n }\n return customLabels;\n }\n\n return gen;\n};\n\nvar d3_linearLegend = function d3_linearLegend(scale, cells, labelFormat) {\n var data = [];\n\n if (cells.length > 1) {\n data = cells;\n } else {\n var domain = scale.domain(),\n increment = (domain[domain.length - 1] - domain[0]) / (cells - 1);\n var i = 0;\n\n for (; i < cells; i++) {\n data.push(domain[0] + i * increment);\n }\n }\n\n var labels = data.map(labelFormat);\n return {\n data: data,\n labels: labels,\n feature: function feature(d) {\n return scale(d);\n }\n };\n};\n\nvar d3_quantLegend = function d3_quantLegend(scale, labelFormat, labelDelimiter) {\n var labels = scale.range().map(function (d) {\n var invert = scale.invertExtent(d);\n return labelFormat(invert[0]) + \" \" + labelDelimiter + \" \" + labelFormat(invert[1]);\n });\n\n return {\n data: scale.range(),\n labels: labels,\n feature: d3_identity\n };\n};\n\nvar d3_ordinalLegend = function d3_ordinalLegend(scale) {\n return {\n data: scale.domain(),\n labels: scale.domain(),\n feature: function feature(d) {\n return scale(d);\n }\n };\n};\n\nvar d3_cellOver = function d3_cellOver(cellDispatcher, d, obj) {\n cellDispatcher.call(\"cellover\", obj, d);\n};\n\nvar d3_cellOut = function d3_cellOut(cellDispatcher, d, obj) {\n cellDispatcher.call(\"cellout\", obj, d);\n};\n\nvar d3_cellClick = function d3_cellClick(cellDispatcher, d, obj) {\n cellDispatcher.call(\"cellclick\", obj, d);\n};\n\nvar d3_contextmenu = function d3_contextmenu(cellDispatcher, d, obj) {\n cellDispatcher.call(\"cellcontextmenu\", obj, d);\n};\n\nvar helper = {\n d3_drawShapes: function d3_drawShapes(shape, shapes, shapeHeight, shapeWidth, shapeRadius, path) {\n if (shape === \"rect\") {\n shapes.attr(\"height\", shapeHeight).attr(\"width\", shapeWidth);\n } else if (shape === \"circle\") {\n shapes.attr(\"r\", shapeRadius);\n } else if (shape === \"line\") {\n shapes.attr(\"x1\", 0).attr(\"x2\", shapeWidth).attr(\"y1\", 0).attr(\"y2\", 0);\n } else if (shape === \"path\") {\n shapes.attr(\"d\", path);\n }\n },\n\n d3_addText: function d3_addText(svg, enter, labels, classPrefix, labelWidth) {\n enter.append(\"text\").attr(\"class\", classPrefix + \"label\");\n var text = svg.selectAll(\"g.\" + classPrefix + \"cell text.\" + classPrefix + \"label\").data(labels).text(d3_identity);\n\n if (labelWidth) {\n svg.selectAll(\"g.\" + classPrefix + \"cell text.\" + classPrefix + \"label\").call(d3_textWrapping, labelWidth);\n }\n\n return text;\n },\n\n d3_calcType: function d3_calcType(scale, ascending, cells, labels, labelFormat, labelDelimiter) {\n var type = scale.invertExtent ? d3_quantLegend(scale, labelFormat, labelDelimiter) : scale.ticks ? d3_linearLegend(scale, cells, labelFormat) : d3_ordinalLegend(scale);\n\n //for d3.scaleSequential that doesn't have a range function\n var range = scale.range && scale.range() || scale.domain();\n type.labels = d3_mergeLabels(type.labels, labels, scale.domain(), range, labelDelimiter);\n\n if (ascending) {\n type.labels = d3_reverse(type.labels);\n type.data = d3_reverse(type.data);\n }\n\n return type;\n },\n\n d3_filterCells: function d3_filterCells(type, cellFilter) {\n var filterCells = type.data.map(function (d, i) {\n return { data: d, label: type.labels[i] };\n }).filter(cellFilter);\n var dataValues = filterCells.map(function (d) {\n return d.data;\n });\n var labelValues = filterCells.map(function (d) {\n return d.label;\n });\n type.data = type.data.filter(function (d) {\n return dataValues.indexOf(d) !== -1;\n });\n type.labels = type.labels.filter(function (d) {\n return labelValues.indexOf(d) !== -1;\n });\n return type;\n },\n\n d3_placement: function d3_placement(orient, cell, cellTrans, text, textTrans, labelAlign, labelPosition) {\n cell.attr(\"transform\", cellTrans);\n text.attr(\"transform\", textTrans);\n if (orient === \"horizontal\" && labelPosition === \"below\") {\n text.style(\"text-anchor\", labelAlign);\n }\n },\n\n d3_addEvents: function d3_addEvents(cells, dispatcher) {\n cells.on(\"mouseover.legend\", function (d) {\n d3_cellOver(dispatcher, d, this);\n }).on(\"mouseout.legend\", function (d) {\n d3_cellOut(dispatcher, d, this);\n }).on(\"click.legend\", function (d) {\n d3_cellClick(dispatcher, d, this);\n }).on(\"contextmenu.legend\", function (d) {\n d3_contextmenu(dispatcher, d, this);\n });\n },\n\n d3_title: function d3_title(svg, title, classPrefix, titleWidth) {\n if (title !== \"\") {\n var titleText = svg.selectAll(\"text.\" + classPrefix + \"legendTitle\");\n\n titleText.data([title]).enter().append(\"text\").attr(\"class\", classPrefix + \"legendTitle\");\n\n svg.selectAll(\"text.\" + classPrefix + \"legendTitle\").text(title);\n\n if (titleWidth) {\n svg.selectAll(\"text.\" + classPrefix + \"legendTitle\").call(d3_textWrapping, titleWidth);\n }\n\n var cellsSvg = svg.select(\".\" + classPrefix + \"legendCells\");\n var yOffset = svg.select(\".\" + classPrefix + \"legendTitle\").nodes().map(function (d) {\n return d.getBBox().height;\n })[0],\n xOffset = -cellsSvg.nodes().map(function (d) {\n return d.getBBox().x;\n })[0];\n cellsSvg.attr(\"transform\", \"translate(\" + xOffset + \",\" + yOffset + \")\");\n }\n },\n\n d3_defaultLocale: {\n format: d3_format__WEBPACK_IMPORTED_MODULE_1__[\"format\"],\n formatPrefix: d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatPrefix\"]\n },\n\n d3_defaultFormatSpecifier: \".01f\",\n\n d3_defaultDelimiter: \"to\"\n};\n\nfunction color() {\n var scale = Object(d3_scale__WEBPACK_IMPORTED_MODULE_3__[\"scaleLinear\"])(),\n shape = \"rect\",\n shapeWidth = 15,\n shapeHeight = 15,\n shapeRadius = 10,\n shapePadding = 2,\n cells = [5],\n cellFilter = void 0,\n labels = [],\n classPrefix = \"\",\n useClass = false,\n title = \"\",\n locale = helper.d3_defaultLocale,\n specifier = helper.d3_defaultFormatSpecifier,\n labelOffset = 10,\n labelAlign = \"middle\",\n labelPosition = \"below\",\n labelDelimiter = helper.d3_defaultDelimiter,\n labelWrap = void 0,\n orient = \"vertical\",\n ascending = false,\n path = void 0,\n titleWidth = void 0,\n legendDispatcher = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_2__[\"dispatch\"])(\"cellover\", \"cellout\", \"cellclick\", \"cellcontextmenu\");\n\n function legend(svg) {\n var type = helper.d3_calcType(scale, ascending, cells, labels, locale.format(specifier), labelDelimiter),\n legendG = svg.selectAll(\"g\").data([scale]);\n\n legendG.enter().append(\"g\").attr(\"class\", classPrefix + \"legendCells\");\n\n if (cellFilter) {\n helper.d3_filterCells(type, cellFilter);\n }\n\n var cell = svg.select(\".\" + classPrefix + \"legendCells\").selectAll(\".\" + classPrefix + \"cell\").data(type.data);\n\n var cellEnter = cell.enter().append(\"g\").attr(\"class\", classPrefix + \"cell\");\n cellEnter.append(shape).attr(\"class\", classPrefix + \"swatch\");\n\n var shapes = svg.selectAll(\"g.\" + classPrefix + \"cell \" + shape + \".\" + classPrefix + \"swatch\").data(type.data);\n\n //add event handlers\n helper.d3_addEvents(cellEnter, legendDispatcher);\n\n cell.exit().transition().style(\"opacity\", 0).remove();\n shapes.exit().transition().style(\"opacity\", 0).remove();\n\n shapes = shapes.merge(shapes);\n\n helper.d3_drawShapes(shape, shapes, shapeHeight, shapeWidth, shapeRadius, path);\n var text = helper.d3_addText(svg, cellEnter, type.labels, classPrefix, labelWrap);\n\n // we need to merge the selection, otherwise changes in the legend (e.g. change of orientation) are applied only to the new cells and not the existing ones.\n cell = cellEnter.merge(cell);\n\n // sets placement\n var textSize = text.nodes().map(function (d) {\n return d.getBBox();\n }),\n shapeSize = shapes.nodes().map(function (d) {\n return d.getBBox();\n });\n //sets scale\n //everything is fill except for line which is stroke,\n if (!useClass) {\n if (shape == \"line\") {\n shapes.style(\"stroke\", type.feature);\n } else {\n shapes.style(\"fill\", type.feature);\n }\n } else {\n shapes.attr(\"class\", function (d) {\n return classPrefix + \"swatch \" + type.feature(d);\n });\n }\n\n var cellTrans = void 0,\n textTrans = void 0,\n textAlign = labelAlign == \"start\" ? 0 : labelAlign == \"middle\" ? 0.5 : 1;\n\n //positions cells and text\n if (orient === \"vertical\") {\n var cellSize = textSize.map(function (d, i) {\n return Math.max(d.height, shapeSize[i].height);\n });\n\n cellTrans = function cellTrans(d, i) {\n var height = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__[\"sum\"])(cellSize.slice(0, i));\n return \"translate(0, \" + (height + i * shapePadding) + \")\";\n };\n\n textTrans = function textTrans(d, i) {\n return \"translate( \" + (shapeSize[i].width + shapeSize[i].x + labelOffset) + \", \" + (shapeSize[i].y + shapeSize[i].height / 2 + 5) + \")\";\n };\n } else if (orient === \"horizontal\") {\n cellTrans = function cellTrans(d, i) {\n return \"translate(\" + i * (shapeSize[i].width + shapePadding) + \",0)\";\n };\n if (labelPosition === \"below\") {\n textTrans = function textTrans(d, i) {\n return \"translate(\" + (shapeSize[i].width * textAlign + shapeSize[i].x) + \",\\n \" + (shapeSize[i].height + shapeSize[i].y + labelOffset + 8) + \")\";\n };\n } else if (labelPosition === \"right\") {\n textTrans = function textTrans(d, i) {\n return \"translate(\" + (shapeSize[i].width + shapeSize[i].x + 4) + \",\\n \" + (shapeSize[i].height + shapeSize[i].y) + \")\";\n };\n }\n }\n helper.d3_placement(orient, cell, cellTrans, text, textTrans, labelAlign, labelPosition);\n helper.d3_title(svg, title, classPrefix, titleWidth);\n\n cell.transition().style(\"opacity\", 1);\n }\n\n legend.scale = function (_) {\n if (!arguments.length) return scale;\n scale = _;\n return legend;\n };\n\n legend.cells = function (_) {\n if (!arguments.length) return cells;\n if (_.length > 1 || _ >= 2) {\n cells = _;\n }\n return legend;\n };\n\n legend.cellFilter = function (_) {\n if (!arguments.length) return cellFilter;\n cellFilter = _;\n return legend;\n };\n\n legend.shape = function (_, d) {\n if (!arguments.length) return shape;\n if (_ == \"rect\" || _ == \"circle\" || _ == \"line\" || _ == \"path\" && typeof d === \"string\") {\n shape = _;\n path = d;\n }\n return legend;\n };\n\n legend.shapeWidth = function (_) {\n if (!arguments.length) return shapeWidth;\n shapeWidth = +_;\n return legend;\n };\n\n legend.shapeHeight = function (_) {\n if (!arguments.length) return shapeHeight;\n shapeHeight = +_;\n return legend;\n };\n\n legend.shapeRadius = function (_) {\n if (!arguments.length) return shapeRadius;\n shapeRadius = +_;\n return legend;\n };\n\n legend.shapePadding = function (_) {\n if (!arguments.length) return shapePadding;\n shapePadding = +_;\n return legend;\n };\n\n legend.labels = function (_) {\n if (!arguments.length) return labels;\n labels = _;\n return legend;\n };\n\n legend.labelAlign = function (_) {\n if (!arguments.length) return labelAlign;\n if (_ == \"start\" || _ == \"end\" || _ == \"middle\") {\n labelAlign = _;\n }\n return legend;\n };\n\n legend.labelPosition = function (_) {\n if (!arguments.length) return labelPosition;\n if (_ == \"below\" || _ == \"right\") {\n labelPosition = _;\n }\n return legend;\n };\n\n legend.locale = function (_) {\n if (!arguments.length) return locale;\n locale = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatLocale\"])(_);\n return legend;\n };\n\n legend.labelFormat = function (_) {\n if (!arguments.length) return legend.locale().format(specifier);\n specifier = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatSpecifier\"])(_);\n return legend;\n };\n\n legend.labelOffset = function (_) {\n if (!arguments.length) return labelOffset;\n labelOffset = +_;\n return legend;\n };\n\n legend.labelDelimiter = function (_) {\n if (!arguments.length) return labelDelimiter;\n labelDelimiter = _;\n return legend;\n };\n\n legend.labelWrap = function (_) {\n if (!arguments.length) return labelWrap;\n labelWrap = _;\n return legend;\n };\n\n legend.useClass = function (_) {\n if (!arguments.length) return useClass;\n if (_ === true || _ === false) {\n useClass = _;\n }\n return legend;\n };\n\n legend.orient = function (_) {\n if (!arguments.length) return orient;\n _ = _.toLowerCase();\n if (_ == \"horizontal\" || _ == \"vertical\") {\n orient = _;\n }\n return legend;\n };\n\n legend.ascending = function (_) {\n if (!arguments.length) return ascending;\n ascending = !!_;\n return legend;\n };\n\n legend.classPrefix = function (_) {\n if (!arguments.length) return classPrefix;\n classPrefix = _;\n return legend;\n };\n\n legend.title = function (_) {\n if (!arguments.length) return title;\n title = _;\n return legend;\n };\n\n legend.titleWidth = function (_) {\n if (!arguments.length) return titleWidth;\n titleWidth = _;\n return legend;\n };\n\n legend.textWrap = function (_) {\n if (!arguments.length) return textWrap;\n textWrap = _;\n return legend;\n };\n\n legend.on = function () {\n var value = legendDispatcher.on.apply(legendDispatcher, arguments);\n return value === legendDispatcher ? legend : value;\n };\n\n return legend;\n}\n\nfunction size() {\n var scale = Object(d3_scale__WEBPACK_IMPORTED_MODULE_3__[\"scaleLinear\"])(),\n shape = \"rect\",\n shapeWidth = 15,\n shapePadding = 2,\n cells = [5],\n cellFilter = void 0,\n labels = [],\n classPrefix = \"\",\n title = \"\",\n locale = helper.d3_defaultLocale,\n specifier = helper.d3_defaultFormatSpecifier,\n labelOffset = 10,\n labelAlign = \"middle\",\n labelPosition = \"below\",\n labelDelimiter = helper.d3_defaultDelimiter,\n labelWrap = void 0,\n orient = \"vertical\",\n ascending = false,\n path = void 0,\n titleWidth = void 0,\n legendDispatcher = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_2__[\"dispatch\"])(\"cellover\", \"cellout\", \"cellclick\", \"cellcontextmenu\");\n\n function legend(svg) {\n var type = helper.d3_calcType(scale, ascending, cells, labels, locale.format(specifier), labelDelimiter),\n legendG = svg.selectAll(\"g\").data([scale]);\n\n if (cellFilter) {\n helper.d3_filterCells(type, cellFilter);\n }\n\n legendG.enter().append(\"g\").attr(\"class\", classPrefix + \"legendCells\");\n\n var cell = svg.select(\".\" + classPrefix + \"legendCells\").selectAll(\".\" + classPrefix + \"cell\").data(type.data);\n var cellEnter = cell.enter().append(\"g\").attr(\"class\", classPrefix + \"cell\");\n cellEnter.append(shape).attr(\"class\", classPrefix + \"swatch\");\n\n var shapes = svg.selectAll(\"g.\" + classPrefix + \"cell \" + shape + \".\" + classPrefix + \"swatch\");\n\n //add event handlers\n helper.d3_addEvents(cellEnter, legendDispatcher);\n\n cell.exit().transition().style(\"opacity\", 0).remove();\n\n shapes.exit().transition().style(\"opacity\", 0).remove();\n shapes = shapes.merge(shapes);\n\n //creates shape\n if (shape === \"line\") {\n helper.d3_drawShapes(shape, shapes, 0, shapeWidth);\n shapes.attr(\"stroke-width\", type.feature);\n } else {\n helper.d3_drawShapes(shape, shapes, type.feature, type.feature, type.feature, path);\n }\n\n var text = helper.d3_addText(svg, cellEnter, type.labels, classPrefix, labelWrap);\n\n // we need to merge the selection, otherwise changes in the legend (e.g. change of orientation) are applied only to the new cells and not the existing ones.\n cell = cellEnter.merge(cell);\n\n //sets placement\n\n var textSize = text.nodes().map(function (d) {\n return d.getBBox();\n }),\n shapeSize = shapes.nodes().map(function (d, i) {\n var bbox = d.getBBox();\n var stroke = scale(type.data[i]);\n\n if (shape === \"line\" && orient === \"horizontal\") {\n bbox.height = bbox.height + stroke;\n } else if (shape === \"line\" && orient === \"vertical\") {\n bbox.width = bbox.width;\n }\n return bbox;\n });\n\n var maxH = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__[\"max\"])(shapeSize, function (d) {\n return d.height + d.y;\n }),\n maxW = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__[\"max\"])(shapeSize, function (d) {\n return d.width + d.x;\n });\n\n var cellTrans = void 0,\n textTrans = void 0,\n textAlign = labelAlign == \"start\" ? 0 : labelAlign == \"middle\" ? 0.5 : 1;\n\n //positions cells and text\n if (orient === \"vertical\") {\n var cellSize = textSize.map(function (d, i) {\n return Math.max(d.height, shapeSize[i].height);\n });\n var y = shape == \"circle\" || shape == \"line\" ? shapeSize[0].height / 2 : 0;\n cellTrans = function cellTrans(d, i) {\n var height = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__[\"sum\"])(cellSize.slice(0, i));\n\n return \"translate(0, \" + (y + height + i * shapePadding) + \")\";\n };\n\n textTrans = function textTrans(d, i) {\n return \"translate( \" + (maxW + labelOffset) + \",\\n \" + (shapeSize[i].y + shapeSize[i].height / 2 + 5) + \")\";\n };\n } else if (orient === \"horizontal\") {\n cellTrans = function cellTrans(d, i) {\n var width = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__[\"sum\"])(shapeSize.slice(0, i), function (d) {\n return d.width;\n });\n var y = shape == \"circle\" || shape == \"line\" ? maxH / 2 : 0;\n return \"translate(\" + (width + i * shapePadding) + \", \" + y + \")\";\n };\n\n var offset = shape == \"line\" ? maxH / 2 : maxH;\n textTrans = function textTrans(d, i) {\n return \"translate( \" + (shapeSize[i].width * textAlign + shapeSize[i].x) + \",\\n \" + (offset + labelOffset) + \")\";\n };\n }\n\n helper.d3_placement(orient, cell, cellTrans, text, textTrans, labelAlign);\n helper.d3_title(svg, title, classPrefix, titleWidth);\n\n cell.transition().style(\"opacity\", 1);\n }\n\n legend.scale = function (_) {\n if (!arguments.length) return scale;\n scale = _;\n return legend;\n };\n\n legend.cells = function (_) {\n if (!arguments.length) return cells;\n if (_.length > 1 || _ >= 2) {\n cells = _;\n }\n return legend;\n };\n\n legend.cellFilter = function (_) {\n if (!arguments.length) return cellFilter;\n cellFilter = _;\n return legend;\n };\n\n legend.shape = function (_, d) {\n if (!arguments.length) return shape;\n if (_ == \"rect\" || _ == \"circle\" || _ == \"line\") {\n shape = _;\n path = d;\n }\n return legend;\n };\n\n legend.shapeWidth = function (_) {\n if (!arguments.length) return shapeWidth;\n shapeWidth = +_;\n return legend;\n };\n\n legend.shapePadding = function (_) {\n if (!arguments.length) return shapePadding;\n shapePadding = +_;\n return legend;\n };\n\n legend.labels = function (_) {\n if (!arguments.length) return labels;\n labels = _;\n return legend;\n };\n\n legend.labelAlign = function (_) {\n if (!arguments.length) return labelAlign;\n if (_ == \"start\" || _ == \"end\" || _ == \"middle\") {\n labelAlign = _;\n }\n return legend;\n };\n\n legend.locale = function (_) {\n if (!arguments.length) return locale;\n locale = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatLocale\"])(_);\n return legend;\n };\n\n legend.labelFormat = function (_) {\n if (!arguments.length) return legend.locale().format(specifier);\n specifier = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatSpecifier\"])(_);\n return legend;\n };\n\n legend.labelOffset = function (_) {\n if (!arguments.length) return labelOffset;\n labelOffset = +_;\n return legend;\n };\n\n legend.labelDelimiter = function (_) {\n if (!arguments.length) return labelDelimiter;\n labelDelimiter = _;\n return legend;\n };\n\n legend.labelWrap = function (_) {\n if (!arguments.length) return labelWrap;\n labelWrap = _;\n return legend;\n };\n\n legend.orient = function (_) {\n if (!arguments.length) return orient;\n _ = _.toLowerCase();\n if (_ == \"horizontal\" || _ == \"vertical\") {\n orient = _;\n }\n return legend;\n };\n\n legend.ascending = function (_) {\n if (!arguments.length) return ascending;\n ascending = !!_;\n return legend;\n };\n\n legend.classPrefix = function (_) {\n if (!arguments.length) return classPrefix;\n classPrefix = _;\n return legend;\n };\n\n legend.title = function (_) {\n if (!arguments.length) return title;\n title = _;\n return legend;\n };\n\n legend.titleWidth = function (_) {\n if (!arguments.length) return titleWidth;\n titleWidth = _;\n return legend;\n };\n\n legend.on = function () {\n var value = legendDispatcher.on.apply(legendDispatcher, arguments);\n return value === legendDispatcher ? legend : value;\n };\n\n return legend;\n}\n\nfunction symbol() {\n var scale = Object(d3_scale__WEBPACK_IMPORTED_MODULE_3__[\"scaleLinear\"])(),\n shape = \"path\",\n shapeWidth = 15,\n shapeHeight = 15,\n shapeRadius = 10,\n shapePadding = 5,\n cells = [5],\n cellFilter = void 0,\n labels = [],\n classPrefix = \"\",\n title = \"\",\n locale = helper.d3_defaultLocale,\n specifier = helper.d3_defaultFormatSpecifier,\n labelAlign = \"middle\",\n labelPosition = \"below\",\n labelOffset = 10,\n labelDelimiter = helper.d3_defaultDelimiter,\n labelWrap = void 0,\n orient = \"vertical\",\n ascending = false,\n titleWidth = void 0,\n legendDispatcher = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_2__[\"dispatch\"])(\"cellover\", \"cellout\", \"cellclick\", \"cellcontextmenu\");\n\n function legend(svg) {\n var type = helper.d3_calcType(scale, ascending, cells, labels, locale.format(specifier), labelDelimiter),\n legendG = svg.selectAll(\"g\").data([scale]);\n\n if (cellFilter) {\n helper.d3_filterCells(type, cellFilter);\n }\n\n legendG.enter().append(\"g\").attr(\"class\", classPrefix + \"legendCells\");\n\n var cell = svg.select(\".\" + classPrefix + \"legendCells\").selectAll(\".\" + classPrefix + \"cell\").data(type.data);\n var cellEnter = cell.enter().append(\"g\").attr(\"class\", classPrefix + \"cell\");\n cellEnter.append(shape).attr(\"class\", classPrefix + \"swatch\");\n\n var shapes = svg.selectAll(\"g.\" + classPrefix + \"cell \" + shape + \".\" + classPrefix + \"swatch\");\n\n //add event handlers\n helper.d3_addEvents(cellEnter, legendDispatcher);\n\n //remove old shapes\n cell.exit().transition().style(\"opacity\", 0).remove();\n shapes.exit().transition().style(\"opacity\", 0).remove();\n shapes = shapes.merge(shapes);\n\n helper.d3_drawShapes(shape, shapes, shapeHeight, shapeWidth, shapeRadius, type.feature);\n var text = helper.d3_addText(svg, cellEnter, type.labels, classPrefix, labelWrap);\n\n // we need to merge the selection, otherwise changes in the legend (e.g. change of orientation) are applied only to the new cells and not the existing ones.\n cell = cellEnter.merge(cell);\n\n // sets placement\n var textSize = text.nodes().map(function (d) {\n return d.getBBox();\n }),\n shapeSize = shapes.nodes().map(function (d) {\n return d.getBBox();\n });\n\n var maxH = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__[\"max\"])(shapeSize, function (d) {\n return d.height;\n }),\n maxW = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__[\"max\"])(shapeSize, function (d) {\n return d.width;\n });\n\n var cellTrans = void 0,\n textTrans = void 0,\n textAlign = labelAlign == \"start\" ? 0 : labelAlign == \"middle\" ? 0.5 : 1;\n\n //positions cells and text\n if (orient === \"vertical\") {\n var cellSize = textSize.map(function (d, i) {\n return Math.max(maxH, d.height);\n });\n\n cellTrans = function cellTrans(d, i) {\n var height = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__[\"sum\"])(cellSize.slice(0, i));\n return \"translate(0, \" + (height + i * shapePadding) + \" )\";\n };\n textTrans = function textTrans(d, i) {\n return \"translate( \" + (maxW + labelOffset) + \",\\n \" + (shapeSize[i].y + shapeSize[i].height / 2 + 5) + \")\";\n };\n } else if (orient === \"horizontal\") {\n cellTrans = function cellTrans(d, i) {\n return \"translate( \" + i * (maxW + shapePadding) + \",0)\";\n };\n textTrans = function textTrans(d, i) {\n return \"translate( \" + (shapeSize[i].width * textAlign + shapeSize[i].x) + \",\\n \" + (maxH + labelOffset) + \")\";\n };\n }\n\n helper.d3_placement(orient, cell, cellTrans, text, textTrans, labelAlign);\n helper.d3_title(svg, title, classPrefix, titleWidth);\n cell.transition().style(\"opacity\", 1);\n }\n\n legend.scale = function (_) {\n if (!arguments.length) return scale;\n scale = _;\n return legend;\n };\n\n legend.cells = function (_) {\n if (!arguments.length) return cells;\n if (_.length > 1 || _ >= 2) {\n cells = _;\n }\n return legend;\n };\n\n legend.cellFilter = function (_) {\n if (!arguments.length) return cellFilter;\n cellFilter = _;\n return legend;\n };\n\n legend.shapePadding = function (_) {\n if (!arguments.length) return shapePadding;\n shapePadding = +_;\n return legend;\n };\n\n legend.labels = function (_) {\n if (!arguments.length) return labels;\n labels = _;\n return legend;\n };\n\n legend.labelAlign = function (_) {\n if (!arguments.length) return labelAlign;\n if (_ == \"start\" || _ == \"end\" || _ == \"middle\") {\n labelAlign = _;\n }\n return legend;\n };\n\n legend.locale = function (_) {\n if (!arguments.length) return locale;\n locale = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatLocale\"])(_);\n return legend;\n };\n\n legend.labelFormat = function (_) {\n if (!arguments.length) return legend.locale().format(specifier);\n specifier = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__[\"formatSpecifier\"])(_);\n return legend;\n };\n\n legend.labelOffset = function (_) {\n if (!arguments.length) return labelOffset;\n labelOffset = +_;\n return legend;\n };\n\n legend.labelDelimiter = function (_) {\n if (!arguments.length) return labelDelimiter;\n labelDelimiter = _;\n return legend;\n };\n\n legend.labelWrap = function (_) {\n if (!arguments.length) return labelWrap;\n labelWrap = _;\n return legend;\n };\n\n legend.orient = function (_) {\n if (!arguments.length) return orient;\n _ = _.toLowerCase();\n if (_ == \"horizontal\" || _ == \"vertical\") {\n orient = _;\n }\n return legend;\n };\n\n legend.ascending = function (_) {\n if (!arguments.length) return ascending;\n ascending = !!_;\n return legend;\n };\n\n legend.classPrefix = function (_) {\n if (!arguments.length) return classPrefix;\n classPrefix = _;\n return legend;\n };\n\n legend.title = function (_) {\n if (!arguments.length) return title;\n title = _;\n return legend;\n };\n\n legend.titleWidth = function (_) {\n if (!arguments.length) return titleWidth;\n titleWidth = _;\n return legend;\n };\n\n legend.on = function () {\n var value = legendDispatcher.on.apply(legendDispatcher, arguments);\n return value === legendDispatcher ? legend : value;\n };\n\n return legend;\n}\n\nvar thresholdLabels = function thresholdLabels(_ref) {\n var i = _ref.i,\n genLength = _ref.genLength,\n generatedLabels = _ref.generatedLabels,\n labelDelimiter = _ref.labelDelimiter;\n\n if (i === 0) {\n var values = generatedLabels[i].split(\" \" + labelDelimiter + \" \");\n return \"Less than \" + values[1];\n } else if (i === genLength - 1) {\n var _values = generatedLabels[i].split(\" \" + labelDelimiter + \" \");\n return _values[0] + \" or more\";\n }\n return generatedLabels[i];\n};\n\nvar legendHelpers = {\n thresholdLabels: thresholdLabels\n};\n\nvar index = {\n legendColor: color,\n legendSize: size,\n legendSymbol: symbol,\n legendHelpers: legendHelpers\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n//# sourceMappingURL=indexRollupNext.js.map\n\n\n//# sourceURL=webpack://UWT/./third-party/d3-legend-master/indexRollupNext.js?");
/***/ }),
/***/ "d3":
/*!*********************!*\
!*** external "d3" ***!
\*********************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = __WEBPACK_EXTERNAL_MODULE_d3__;\n\n//# sourceURL=webpack://UWT/external_%22d3%22?");
/***/ }),
/***/ "d3-sankey":
/*!***************************************************************************************************!*\
!*** external {"root":"Sankey","commonjs2":"d3-sankey","amd":"d3-sankey","commonjs":"d3-sankey"} ***!
\***************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = __WEBPACK_EXTERNAL_MODULE_d3_sankey__;\n\n//# sourceURL=webpack://UWT/external_%7B%22root%22:%22Sankey%22,%22commonjs2%22:%22d3-sankey%22,%22amd%22:%22d3-sankey%22,%22commonjs%22:%22d3-sankey%22%7D?");
/***/ }),
/***/ "dagre":
/*!************************!*\
!*** external "dagre" ***!
\************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = __WEBPACK_EXTERNAL_MODULE_dagre__;\n\n//# sourceURL=webpack://UWT/external_%22dagre%22?");
/***/ }),
/***/ "es6-promise":
/*!******************************!*\
!*** external "es6-promise" ***!
\******************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = __WEBPACK_EXTERNAL_MODULE_es6_promise__;\n\n//# sourceURL=webpack://UWT/external_%22es6-promise%22?");
/***/ }),
/***/ "pixi.js":
/*!*******************************************************************************************!*\
!*** external {"root":"PIXI","commonjs2":"pixi.js","amd":"pixi.js","commonjs":"pixi.js"} ***!
\*******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = __WEBPACK_EXTERNAL_MODULE_pixi_js__;\n\n//# sourceURL=webpack://UWT/external_%7B%22root%22:%22PIXI%22,%22commonjs2%22:%22pixi.js%22,%22amd%22:%22pixi.js%22,%22commonjs%22:%22pixi.js%22%7D?");
/***/ })
/******/ });
});