diff --git a/dist/L.Control.Heightgraph.css b/dist/L.Control.Heightgraph.css new file mode 100644 index 0000000..608ca0c --- /dev/null +++ b/dist/L.Control.Heightgraph.css @@ -0,0 +1,148 @@ +.heightgraph-container { + background-color: rgba(250,250,250,.8); + border-radius: 10px; + display: none; + cursor: default; + user-select: none; +} + +.heightgraph-toggle { + cursor: pointer; + box-shadow: 0 1px 7px rgba(0, 0, 0, .4); + border-radius: 5px; + width: 28px; + height: 28px; + background: #f8f8f9; + display: block; +} + +.heightgraph-toggle-icon { + background: url(img/area-chart.svg) no-repeat center center; + background-size: 14px 14px; + width: 26px; + height: 26px; + position: absolute; +} + +.heightgraph-close-icon { + background: url(img/remove.svg) no-repeat center center; + background-size: 14px 14px; + width: 26px; + height: 26px; + position: absolute; + right: 0; + display: none; + cursor: pointer; +} + +.border-top { + fill: none; +} + +.legend-hover { + cursor: pointer; +} + +.legend-text { + fill: #000; + font-size: 10px; + cursor: pointer; +} + +.tick, .tick text { + fill: #000; + pointer-events: none; +} + +.axis .tick line { + visibility: hidden; + pointer-events: none; +} + +.axis path { + stroke: black; + fill: none; + stroke-width: 2px; + shape-rendering: crispEdges; + pointer-events: none; +} + +.focusbox { + display: none; + font-size: 10px; + fill: #000; + pointer-events: none; +} + +.focusbox rect { + fill: rgba(255, 255, 255, 0.8); + stroke-width: 1px; + stroke: #888; + pointer-events: none; +} + +.focusbox text { + font-size: 12px; +} + +.focusLine line { + stroke-width: 1px; + stroke: rgb(20, 20, 20); + display: none; + cursor: default; + shape-rendering: crispEdges; +} + +.height-focus.label rect { + fill: rgba(255, 255, 255, 0.5); + stroke-width: 1px; + stroke: #888; + pointer-events: none; + shape-rendering: crispEdges; +} + +.height-focus.line { + stroke: rgb(20, 20, 20); + stroke-width: 1px; + shape-rendering: crispEdges; +} + +.height-focus.circle { + stroke: #FFF; + stroke-width: 1px; +} + +.mouse-height-box-text{ + font-size: 12px; +} + +.grid .tick { + pointer-events: none; +} + +.grid .tick line { + stroke: #EEE; + stroke-width: 1px; + shape-rendering: crispEdges; +} + +.grid path { + stroke-width: 0; + pointer-events: none; +} + +.tspan { + font-weight: bold; +} + +.select-symbol { + cursor: pointer; +} + +.select-info { + cursor: default; +} + +.lineSelection { + cursor: move; +} diff --git a/dist/L.Control.Heightgraph.js b/dist/L.Control.Heightgraph.js index 9d4f3c1..cd94e92 100644 --- a/dist/L.Control.Heightgraph.js +++ b/dist/L.Control.Heightgraph.js @@ -139,55 +139,55 @@ function _createForOfIteratorHelper(o, allowArrayLike) { }; } -var xhtml = "http://www.w3.org/1999/xhtml"; +var xhtml$1 = "http://www.w3.org/1999/xhtml"; -var namespaces = { +var namespaces$1 = { svg: "http://www.w3.org/2000/svg", - xhtml: xhtml, + xhtml: xhtml$1, xlink: "http://www.w3.org/1999/xlink", xml: "http://www.w3.org/XML/1998/namespace", xmlns: "http://www.w3.org/2000/xmlns/" }; -function namespace(name) { +function namespace$1(name) { var prefix = name += "", i = prefix.indexOf(":"); if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1); - return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; + return namespaces$1.hasOwnProperty(prefix) ? {space: namespaces$1[prefix], local: name} : name; } -function creatorInherit(name) { +function creatorInherit$1(name) { return function() { var document = this.ownerDocument, uri = this.namespaceURI; - return uri === xhtml && document.documentElement.namespaceURI === xhtml + return uri === xhtml$1 && document.documentElement.namespaceURI === xhtml$1 ? document.createElement(name) : document.createElementNS(uri, name); }; } -function creatorFixed(fullname) { +function creatorFixed$1(fullname) { return function() { return this.ownerDocument.createElementNS(fullname.space, fullname.local); }; } -function creator(name) { - var fullname = namespace(name); +function creator$1(name) { + var fullname = namespace$1(name); return (fullname.local - ? creatorFixed - : creatorInherit)(fullname); + ? creatorFixed$1 + : creatorInherit$1)(fullname); } -function none() {} +function none$1() {} -function selector(selector) { - return selector == null ? none : function() { +function selector$1(selector) { + return selector == null ? none$1 : function() { return this.querySelector(selector); }; } -function selection_select(select) { - if (typeof select !== "function") select = selector(select); +function selection_select$1(select) { + if (typeof select !== "function") select = selector$1(select); for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { @@ -198,21 +198,21 @@ function selection_select(select) { } } - return new Selection(subgroups, this._parents); + return new Selection$2(subgroups, this._parents); } -function empty() { +function empty$1() { return []; } -function selectorAll(selector) { - return selector == null ? empty : function() { +function selectorAll$1(selector) { + return selector == null ? empty$1 : function() { return this.querySelectorAll(selector); }; } -function selection_selectAll(select) { - if (typeof select !== "function") select = selectorAll(select); +function selection_selectAll$1(select) { + if (typeof select !== "function") select = selectorAll$1(select); for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { @@ -223,17 +223,17 @@ function selection_selectAll(select) { } } - return new Selection(subgroups, parents); + return new Selection$2(subgroups, parents); } -function matcher(selector) { +function matcher$1(selector) { return function() { return this.matches(selector); }; } -function selection_filter(match) { - if (typeof match !== "function") match = matcher(match); +function selection_filter$1(match) { + if (typeof match !== "function") match = matcher$1(match); for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { @@ -243,18 +243,18 @@ function selection_filter(match) { } } - return new Selection(subgroups, this._parents); + return new Selection$2(subgroups, this._parents); } -function sparse(update) { +function sparse$1(update) { return new Array(update.length); } -function selection_enter() { - return new Selection(this._enter || this._groups.map(sparse), this._parents); +function selection_enter$1() { + return new Selection$2(this._enter || this._groups.map(sparse$1), this._parents); } -function EnterNode(parent, datum) { +function EnterNode$1(parent, datum) { this.ownerDocument = parent.ownerDocument; this.namespaceURI = parent.namespaceURI; this._next = null; @@ -262,15 +262,15 @@ function EnterNode(parent, datum) { this.__data__ = datum; } -EnterNode.prototype = { - constructor: EnterNode, +EnterNode$1.prototype = { + constructor: EnterNode$1, appendChild: function(child) { return this._parent.insertBefore(child, this._next); }, insertBefore: function(child, next) { return this._parent.insertBefore(child, next); }, querySelector: function(selector) { return this._parent.querySelector(selector); }, querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); } }; -function constant(x) { +function constant$4(x) { return function() { return x; }; @@ -278,7 +278,7 @@ function constant(x) { var keyPrefix = "$"; // Protect against keys like “__proto__”. -function bindIndex(parent, group, enter, update, exit, data) { +function bindIndex$1(parent, group, enter, update, exit, data) { var i = 0, node, groupLength = group.length, @@ -292,7 +292,7 @@ function bindIndex(parent, group, enter, update, exit, data) { node.__data__ = data[i]; update[i] = node; } else { - enter[i] = new EnterNode(parent, data[i]); + enter[i] = new EnterNode$1(parent, data[i]); } } @@ -304,7 +304,7 @@ function bindIndex(parent, group, enter, update, exit, data) { } } -function bindKey(parent, group, enter, update, exit, data, key) { +function bindKey$1(parent, group, enter, update, exit, data, key) { var i, node, nodeByKeyValue = {}, @@ -336,7 +336,7 @@ function bindKey(parent, group, enter, update, exit, data, key) { node.__data__ = data[i]; nodeByKeyValue[keyValue] = null; } else { - enter[i] = new EnterNode(parent, data[i]); + enter[i] = new EnterNode$1(parent, data[i]); } } @@ -348,18 +348,18 @@ function bindKey(parent, group, enter, update, exit, data, key) { } } -function selection_data(value, key) { +function selection_data$1(value, key) { if (!value) { data = new Array(this.size()), j = -1; this.each(function(d) { data[++j] = d; }); return data; } - var bind = key ? bindKey : bindIndex, + var bind = key ? bindKey$1 : bindIndex$1, parents = this._parents, groups = this._groups; - if (typeof value !== "function") value = constant(value); + if (typeof value !== "function") value = constant$4(value); for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) { var parent = parents[j], @@ -385,17 +385,17 @@ function selection_data(value, key) { } } - update = new Selection(update, parents); + update = new Selection$2(update, parents); update._enter = enter; update._exit = exit; return update; } -function selection_exit() { - return new Selection(this._exit || this._groups.map(sparse), this._parents); +function selection_exit$1() { + return new Selection$2(this._exit || this._groups.map(sparse$1), this._parents); } -function selection_join(onenter, onupdate, onexit) { +function selection_join$1(onenter, onupdate, onexit) { var enter = this.enter(), update = this, exit = this.exit(); enter = typeof onenter === "function" ? onenter(enter) : enter.append(onenter + ""); if (onupdate != null) update = onupdate(update); @@ -403,7 +403,7 @@ function selection_join(onenter, onupdate, onexit) { return enter && update ? enter.merge(update).order() : update; } -function selection_merge(selection) { +function selection_merge$1(selection) { for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { @@ -417,10 +417,10 @@ function selection_merge(selection) { merges[j] = groups0[j]; } - return new Selection(merges, this._parents); + return new Selection$2(merges, this._parents); } -function selection_order() { +function selection_order$1() { for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) { for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) { @@ -434,8 +434,8 @@ function selection_order() { return this; } -function selection_sort(compare) { - if (!compare) compare = ascending; +function selection_sort$1(compare) { + if (!compare) compare = ascending$2; function compareNode(a, b) { return a && b ? compare(a.__data__, b.__data__) : !a - !b; @@ -450,27 +450,27 @@ function selection_sort(compare) { sortgroup.sort(compareNode); } - return new Selection(sortgroups, this._parents).order(); + return new Selection$2(sortgroups, this._parents).order(); } -function ascending(a, b) { +function ascending$2(a, b) { return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; } -function selection_call() { +function selection_call$1() { var callback = arguments[0]; arguments[0] = this; callback.apply(null, arguments); return this; } -function selection_nodes() { +function selection_nodes$1() { var nodes = new Array(this.size()), i = -1; this.each(function() { nodes[++i] = this; }); return nodes; } -function selection_node() { +function selection_node$1() { for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { for (var group = groups[j], i = 0, n = group.length; i < n; ++i) { @@ -482,17 +482,17 @@ function selection_node() { return null; } -function selection_size() { +function selection_size$1() { var size = 0; this.each(function() { ++size; }); return size; } -function selection_empty() { +function selection_empty$1() { return !this.node(); } -function selection_each(callback) { +function selection_each$1(callback) { for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) { @@ -503,31 +503,31 @@ function selection_each(callback) { return this; } -function attrRemove(name) { +function attrRemove$2(name) { return function() { this.removeAttribute(name); }; } -function attrRemoveNS(fullname) { +function attrRemoveNS$2(fullname) { return function() { this.removeAttributeNS(fullname.space, fullname.local); }; } -function attrConstant(name, value) { +function attrConstant$2(name, value) { return function() { this.setAttribute(name, value); }; } -function attrConstantNS(fullname, value) { +function attrConstantNS$2(fullname, value) { return function() { this.setAttributeNS(fullname.space, fullname.local, value); }; } -function attrFunction(name, value) { +function attrFunction$2(name, value) { return function() { var v = value.apply(this, arguments); if (v == null) this.removeAttribute(name); @@ -535,7 +535,7 @@ function attrFunction(name, value) { }; } -function attrFunctionNS(fullname, value) { +function attrFunctionNS$2(fullname, value) { return function() { var v = value.apply(this, arguments); if (v == null) this.removeAttributeNS(fullname.space, fullname.local); @@ -543,8 +543,8 @@ function attrFunctionNS(fullname, value) { }; } -function selection_attr(name, value) { - var fullname = namespace(name); +function selection_attr$1(name, value) { + var fullname = namespace$1(name); if (arguments.length < 2) { var node = this.node(); @@ -554,30 +554,30 @@ function selection_attr(name, value) { } return this.each((value == null - ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function" - ? (fullname.local ? attrFunctionNS : attrFunction) - : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value)); + ? (fullname.local ? attrRemoveNS$2 : attrRemove$2) : (typeof value === "function" + ? (fullname.local ? attrFunctionNS$2 : attrFunction$2) + : (fullname.local ? attrConstantNS$2 : attrConstant$2)))(fullname, value)); } -function defaultView(node) { +function defaultView$1(node) { return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node || (node.document && node) // node is a Window || node.defaultView; // node is a Document } -function styleRemove(name) { +function styleRemove$2(name) { return function() { this.style.removeProperty(name); }; } -function styleConstant(name, value, priority) { +function styleConstant$2(name, value, priority) { return function() { this.style.setProperty(name, value, priority); }; } -function styleFunction(name, value, priority) { +function styleFunction$2(name, value, priority) { return function() { var v = value.apply(this, arguments); if (v == null) this.style.removeProperty(name); @@ -585,33 +585,33 @@ function styleFunction(name, value, priority) { }; } -function selection_style(name, value, priority) { +function selection_style$1(name, value, priority) { return arguments.length > 1 ? this.each((value == null - ? styleRemove : typeof value === "function" - ? styleFunction - : styleConstant)(name, value, priority == null ? "" : priority)) - : styleValue(this.node(), name); + ? styleRemove$2 : typeof value === "function" + ? styleFunction$2 + : styleConstant$2)(name, value, priority == null ? "" : priority)) + : styleValue$1(this.node(), name); } -function styleValue(node, name) { +function styleValue$1(node, name) { return node.style.getPropertyValue(name) - || defaultView(node).getComputedStyle(node, null).getPropertyValue(name); + || defaultView$1(node).getComputedStyle(node, null).getPropertyValue(name); } -function propertyRemove(name) { +function propertyRemove$1(name) { return function() { delete this[name]; }; } -function propertyConstant(name, value) { +function propertyConstant$1(name, value) { return function() { this[name] = value; }; } -function propertyFunction(name, value) { +function propertyFunction$1(name, value) { return function() { var v = value.apply(this, arguments); if (v == null) delete this[name]; @@ -619,29 +619,29 @@ function propertyFunction(name, value) { }; } -function selection_property(name, value) { +function selection_property$1(name, value) { return arguments.length > 1 ? this.each((value == null - ? propertyRemove : typeof value === "function" - ? propertyFunction - : propertyConstant)(name, value)) + ? propertyRemove$1 : typeof value === "function" + ? propertyFunction$1 + : propertyConstant$1)(name, value)) : this.node()[name]; } -function classArray(string) { +function classArray$1(string) { return string.trim().split(/^|\s+/); } -function classList(node) { - return node.classList || new ClassList(node); +function classList$1(node) { + return node.classList || new ClassList$1(node); } -function ClassList(node) { +function ClassList$1(node) { this._node = node; - this._names = classArray(node.getAttribute("class") || ""); + this._names = classArray$1(node.getAttribute("class") || ""); } -ClassList.prototype = { +ClassList$1.prototype = { add: function(name) { var i = this._names.indexOf(name); if (i < 0) { @@ -661,160 +661,160 @@ ClassList.prototype = { } }; -function classedAdd(node, names) { - var list = classList(node), i = -1, n = names.length; +function classedAdd$1(node, names) { + var list = classList$1(node), i = -1, n = names.length; while (++i < n) list.add(names[i]); } -function classedRemove(node, names) { - var list = classList(node), i = -1, n = names.length; +function classedRemove$1(node, names) { + var list = classList$1(node), i = -1, n = names.length; while (++i < n) list.remove(names[i]); } -function classedTrue(names) { +function classedTrue$1(names) { return function() { - classedAdd(this, names); + classedAdd$1(this, names); }; } -function classedFalse(names) { +function classedFalse$1(names) { return function() { - classedRemove(this, names); + classedRemove$1(this, names); }; } -function classedFunction(names, value) { +function classedFunction$1(names, value) { return function() { - (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names); + (value.apply(this, arguments) ? classedAdd$1 : classedRemove$1)(this, names); }; } -function selection_classed(name, value) { - var names = classArray(name + ""); +function selection_classed$1(name, value) { + var names = classArray$1(name + ""); if (arguments.length < 2) { - var list = classList(this.node()), i = -1, n = names.length; + var list = classList$1(this.node()), i = -1, n = names.length; while (++i < n) if (!list.contains(names[i])) return false; return true; } return this.each((typeof value === "function" - ? classedFunction : value - ? classedTrue - : classedFalse)(names, value)); + ? classedFunction$1 : value + ? classedTrue$1 + : classedFalse$1)(names, value)); } -function textRemove() { +function textRemove$1() { this.textContent = ""; } -function textConstant(value) { +function textConstant$2(value) { return function() { this.textContent = value; }; } -function textFunction(value) { +function textFunction$2(value) { return function() { var v = value.apply(this, arguments); this.textContent = v == null ? "" : v; }; } -function selection_text(value) { +function selection_text$1(value) { return arguments.length ? this.each(value == null - ? textRemove : (typeof value === "function" - ? textFunction - : textConstant)(value)) + ? textRemove$1 : (typeof value === "function" + ? textFunction$2 + : textConstant$2)(value)) : this.node().textContent; } -function htmlRemove() { +function htmlRemove$1() { this.innerHTML = ""; } -function htmlConstant(value) { +function htmlConstant$1(value) { return function() { this.innerHTML = value; }; } -function htmlFunction(value) { +function htmlFunction$1(value) { return function() { var v = value.apply(this, arguments); this.innerHTML = v == null ? "" : v; }; } -function selection_html(value) { +function selection_html$1(value) { return arguments.length ? this.each(value == null - ? htmlRemove : (typeof value === "function" - ? htmlFunction - : htmlConstant)(value)) + ? htmlRemove$1 : (typeof value === "function" + ? htmlFunction$1 + : htmlConstant$1)(value)) : this.node().innerHTML; } -function raise() { +function raise$1() { if (this.nextSibling) this.parentNode.appendChild(this); } -function selection_raise() { - return this.each(raise); +function selection_raise$1() { + return this.each(raise$1); } -function lower() { +function lower$1() { if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild); } -function selection_lower() { - return this.each(lower); +function selection_lower$1() { + return this.each(lower$1); } -function selection_append(name) { - var create = typeof name === "function" ? name : creator(name); +function selection_append$1(name) { + var create = typeof name === "function" ? name : creator$1(name); return this.select(function() { return this.appendChild(create.apply(this, arguments)); }); } -function constantNull() { +function constantNull$1() { return null; } -function selection_insert(name, before) { - var create = typeof name === "function" ? name : creator(name), - select = before == null ? constantNull : typeof before === "function" ? before : selector(before); +function selection_insert$1(name, before) { + var create = typeof name === "function" ? name : creator$1(name), + select = before == null ? constantNull$1 : typeof before === "function" ? before : selector$1(before); return this.select(function() { return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null); }); } -function remove() { +function remove$1() { var parent = this.parentNode; if (parent) parent.removeChild(this); } -function selection_remove() { - return this.each(remove); +function selection_remove$1() { + return this.each(remove$1); } -function selection_cloneShallow() { +function selection_cloneShallow$1() { var clone = this.cloneNode(false), parent = this.parentNode; return parent ? parent.insertBefore(clone, this.nextSibling) : clone; } -function selection_cloneDeep() { +function selection_cloneDeep$1() { var clone = this.cloneNode(true), parent = this.parentNode; return parent ? parent.insertBefore(clone, this.nextSibling) : clone; } -function selection_clone(deep) { - return this.select(deep ? selection_cloneDeep : selection_cloneShallow); +function selection_clone$1(deep) { + return this.select(deep ? selection_cloneDeep$1 : selection_cloneShallow$1); } -function selection_datum(value) { +function selection_datum$1(value) { return arguments.length ? this.property("__data__", value) : this.node().__data__; @@ -832,7 +832,7 @@ if (typeof document !== "undefined") { } function filterContextListener(listener, index, group) { - listener = contextListener(listener, index, group); + listener = contextListener$1(listener, index, group); return function(event) { var related = event.relatedTarget; if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) { @@ -841,7 +841,7 @@ function filterContextListener(listener, index, group) { }; } -function contextListener(listener, index, group) { +function contextListener$1(listener, index, group) { return function(event1) { var event0 = event$1; // Events can be reentrant (e.g., focus). event$1 = event1; @@ -853,7 +853,7 @@ function contextListener(listener, index, group) { }; } -function parseTypenames(typenames) { +function parseTypenames$2(typenames) { return typenames.trim().split(/^|\s+/).map(function(t) { var name = "", i = t.indexOf("."); if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); @@ -861,7 +861,7 @@ function parseTypenames(typenames) { }); } -function onRemove(typename) { +function onRemove$1(typename) { return function() { var on = this.__on; if (!on) return; @@ -877,8 +877,8 @@ function onRemove(typename) { }; } -function onAdd(typename, value, capture) { - var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener; +function onAdd$1(typename, value, capture) { + var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener$1; return function(d, i, group) { var on = this.__on, o, listener = wrap(value, i, group); if (on) for (var j = 0, m = on.length; j < m; ++j) { @@ -896,8 +896,8 @@ function onAdd(typename, value, capture) { }; } -function selection_on(typename, value, capture) { - var typenames = parseTypenames(typename + ""), i, n = typenames.length, t; +function selection_on$1(typename, value, capture) { + var typenames = parseTypenames$2(typename + ""), i, n = typenames.length, t; if (arguments.length < 2) { var on = this.node().__on; @@ -911,25 +911,14 @@ function selection_on(typename, value, capture) { return; } - on = value ? onAdd : onRemove; + on = value ? onAdd$1 : onRemove$1; if (capture == null) capture = false; for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture)); return this; } -function customEvent(event1, listener, that, args) { - var event0 = event$1; - event1.sourceEvent = event$1; - event$1 = event1; - try { - return listener.apply(that, args); - } finally { - event$1 = event0; - } -} - -function dispatchEvent(node, type, params) { - var window = defaultView(node), +function dispatchEvent$1(node, type, params) { + var window = defaultView$1(node), event = window.CustomEvent; if (typeof event === "function") { @@ -943,83 +932,83 @@ function dispatchEvent(node, type, params) { node.dispatchEvent(event); } -function dispatchConstant(type, params) { +function dispatchConstant$1(type, params) { return function() { - return dispatchEvent(this, type, params); + return dispatchEvent$1(this, type, params); }; } -function dispatchFunction(type, params) { +function dispatchFunction$1(type, params) { return function() { - return dispatchEvent(this, type, params.apply(this, arguments)); + return dispatchEvent$1(this, type, params.apply(this, arguments)); }; } -function selection_dispatch(type, params) { +function selection_dispatch$1(type, params) { return this.each((typeof params === "function" - ? dispatchFunction - : dispatchConstant)(type, params)); + ? dispatchFunction$1 + : dispatchConstant$1)(type, params)); } -var root = [null]; +var root$1 = [null]; -function Selection(groups, parents) { +function Selection$2(groups, parents) { this._groups = groups; this._parents = parents; } function selection() { - return new Selection([[document.documentElement]], root); -} - -Selection.prototype = selection.prototype = { - constructor: Selection, - select: selection_select, - selectAll: selection_selectAll, - filter: selection_filter, - data: selection_data, - enter: selection_enter, - exit: selection_exit, - join: selection_join, - merge: selection_merge, - order: selection_order, - sort: selection_sort, - call: selection_call, - nodes: selection_nodes, - node: selection_node, - size: selection_size, - empty: selection_empty, - each: selection_each, - attr: selection_attr, - style: selection_style, - property: selection_property, - classed: selection_classed, - text: selection_text, - html: selection_html, - raise: selection_raise, - lower: selection_lower, - append: selection_append, - insert: selection_insert, - remove: selection_remove, - clone: selection_clone, - datum: selection_datum, - on: selection_on, - dispatch: selection_dispatch + return new Selection$2([[document.documentElement]], root$1); +} + +Selection$2.prototype = selection.prototype = { + constructor: Selection$2, + select: selection_select$1, + selectAll: selection_selectAll$1, + filter: selection_filter$1, + data: selection_data$1, + enter: selection_enter$1, + exit: selection_exit$1, + join: selection_join$1, + merge: selection_merge$1, + order: selection_order$1, + sort: selection_sort$1, + call: selection_call$1, + nodes: selection_nodes$1, + node: selection_node$1, + size: selection_size$1, + empty: selection_empty$1, + each: selection_each$1, + attr: selection_attr$1, + style: selection_style$1, + property: selection_property$1, + classed: selection_classed$1, + text: selection_text$1, + html: selection_html$1, + raise: selection_raise$1, + lower: selection_lower$1, + append: selection_append$1, + insert: selection_insert$1, + remove: selection_remove$1, + clone: selection_clone$1, + datum: selection_datum$1, + on: selection_on$1, + dispatch: selection_dispatch$1 }; -function select(selector) { +function select$1(selector) { return typeof selector === "string" - ? new Selection([[document.querySelector(selector)]], [document.documentElement]) - : new Selection([[selector]], root); + ? new Selection$2([[document.querySelector(selector)]], [document.documentElement]) + : new Selection$2([[selector]], root$1); } -function sourceEvent() { +function sourceEvent$1() { var current = event$1, source; while (source = current.sourceEvent) current = source; return current; } -function point(node, event) { +function point$1(node, event) { var svg = node.ownerSVGElement || node; if (svg.createSVGPoint) { @@ -1034,27 +1023,15 @@ function point(node, event) { } function mouse(node) { - var event = sourceEvent(); + var event = sourceEvent$1(); if (event.changedTouches) event = event.changedTouches[0]; - return point(node, event); + return point$1(node, event); } function selectAll(selector) { return typeof selector === "string" - ? new Selection([document.querySelectorAll(selector)], [document.documentElement]) - : new Selection([selector == null ? [] : selector], root); -} - -function touch(node, touches, identifier) { - if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches; - - for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) { - if ((touch = touches[i]).identifier === identifier) { - return point(node, touch); - } - } - - return null; + ? new Selection$2([document.querySelectorAll(selector)], [document.documentElement]) + : new Selection$2([selector == null ? [] : selector], root$1); } var noop = {value: function() {}}; @@ -1091,7 +1068,7 @@ Dispatch.prototype = dispatch.prototype = { // If no callback was specified, return the callback of the given type and name. if (arguments.length < 2) { - while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t; + while (++i < n) if ((t = (typename = T[i]).type) && (t = get$1(_[t], typename.name))) return t; return; } @@ -1099,8 +1076,8 @@ Dispatch.prototype = dispatch.prototype = { // Otherwise, if a null callback was specified, remove callbacks of the given name. if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); while (++i < n) { - if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback); - else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null); + if (t = (typename = T[i]).type) _[t] = set$1(_[t], typename.name, callback); + else if (callback == null) for (t in _) _[t] = set$1(_[t], typename.name, null); } return this; @@ -1121,7 +1098,7 @@ Dispatch.prototype = dispatch.prototype = { } }; -function get(type, name) { +function get$1(type, name) { for (var i = 0, n = type.length, c; i < n; ++i) { if ((c = type[i]).name === name) { return c.value; @@ -1129,7 +1106,7 @@ function get(type, name) { } } -function set(type, name, callback) { +function set$1(type, name, callback) { for (var i = 0, n = type.length; i < n; ++i) { if (type[i].name === name) { type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1)); @@ -1141,7 +1118,7 @@ function set(type, name, callback) { } var frame = 0, // is an animation frame pending? - timeout = 0, // is a timeout pending? + timeout$1 = 0, // is a timeout pending? interval = 0, // are any timers active? pokeDelay = 1000, // how frequently we check for clock skew taskHead, @@ -1208,7 +1185,7 @@ function timerFlush() { function wake() { clockNow = (clockLast = clock.now()) + clockSkew; - frame = timeout = 0; + frame = timeout$1 = 0; try { timerFlush(); } finally { @@ -1240,10 +1217,10 @@ function nap() { function sleep(time) { if (frame) return; // Soonest alarm already set, or will be. - if (timeout) timeout = clearTimeout(timeout); + if (timeout$1) timeout$1 = clearTimeout(timeout$1); var delay = time - clockNow; // Strictly less than if we recomputed clockNow. if (delay > 24) { - if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew); + if (time < Infinity) timeout$1 = setTimeout(wake, time - clock.now() - clockSkew); if (interval) interval = clearInterval(interval); } else { if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay); @@ -1251,7 +1228,7 @@ function sleep(time) { } } -function timeout$1(callback, delay, time) { +function timeout(callback, delay, time) { var t = new Timer; delay = delay == null ? 0 : +delay; t.restart(function(elapsed) { @@ -1292,18 +1269,18 @@ function schedule(node, name, id, index, group, timing) { } function init(node, id) { - var schedule = get$1(node, id); + var schedule = get(node, id); if (schedule.state > CREATED) throw new Error("too late; already scheduled"); return schedule; } -function set$1(node, id) { - var schedule = get$1(node, id); +function set(node, id) { + var schedule = get(node, id); if (schedule.state > STARTED) throw new Error("too late; already running"); return schedule; } -function get$1(node, id) { +function get(node, id) { var schedule = node.__transition; if (!schedule || !(schedule = schedule[id])) throw new Error("transition not found"); return schedule; @@ -1339,7 +1316,7 @@ function create(node, id, self) { // While this element already has a starting transition during this frame, // defer starting an interrupting transition until that transition has a // chance to tick (and possibly end); see d3/d3-transition#54! - if (o.state === STARTED) return timeout$1(start); + if (o.state === STARTED) return timeout(start); // Interrupt the active transition, if any. if (o.state === RUNNING) { @@ -1362,7 +1339,7 @@ function create(node, id, self) { // Note the transition may be canceled after start and before the first tick! // Note this must be scheduled before the start event; see d3/d3-transition#16! // Assuming this is successful, subsequent callbacks go straight to tick. - timeout$1(function() { + timeout(function() { if (self.state === STARTED) { self.state = RUNNING; self.timer.restart(tick, self.delay, self.time); @@ -1822,13 +1799,13 @@ function hsl2rgb(h, m1, m2) { : m1) * 255; } -function constant$1(x) { +function constant$3(x) { return function() { return x; }; } -function linear(a, d) { +function linear$1(a, d) { return function(t) { return a + t * d; }; @@ -1842,13 +1819,13 @@ function exponential(a, b, y) { function gamma(y) { return (y = +y) === 1 ? nogamma : function(a, b) { - return b - a ? exponential(a, b, y) : constant$1(isNaN(a) ? b : a); + return b - a ? exponential(a, b, y) : constant$3(isNaN(a) ? b : a); }; } function nogamma(a, b) { var d = b - a; - return d ? linear(a, d) : constant$1(isNaN(a) ? b : a); + return d ? linear$1(a, d) : constant$3(isNaN(a) ? b : a); } var interpolateRgb = (function rgbGamma(y) { @@ -1895,7 +1872,7 @@ function genericArray(a, b) { c = new Array(nb), i; - for (i = 0; i < na; ++i) x[i] = interpolateValue(a[i], b[i]); + for (i = 0; i < na; ++i) x[i] = interpolate$1(a[i], b[i]); for (; i < nb; ++i) c[i] = b[i]; return function(t) { @@ -1927,7 +1904,7 @@ function object(a, b) { for (k in b) { if (k in a) { - i[k] = interpolateValue(a[k], b[k]); + i[k] = interpolate$1(a[k], b[k]); } else { c[k] = b[k]; } @@ -2002,9 +1979,9 @@ function interpolateString(a, b) { }); } -function interpolateValue(a, b) { +function interpolate$1(a, b) { var t = typeof b, c; - return b == null || t === "boolean" ? constant$1(b) + return b == null || t === "boolean" ? constant$3(b) : (t === "number" ? interpolateNumber : t === "string" ? ((c = color(b)) ? (b = c, interpolateRgb) : interpolateString) : b instanceof color ? interpolateRgb @@ -2023,7 +2000,7 @@ function interpolateRound(a, b) { var degrees = 180 / Math.PI; -var identity = { +var identity$3 = { translateX: 0, translateY: 0, rotate: 0, @@ -2054,7 +2031,7 @@ var cssNode, svgNode; function parseCss(value) { - if (value === "none") return identity; + if (value === "none") return identity$3; if (!cssNode) cssNode = document.createElement("DIV"), cssRoot = document.documentElement, cssView = document.defaultView; cssNode.style.transform = value; value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue("transform"); @@ -2064,10 +2041,10 @@ function parseCss(value) { } function parseSvg(value) { - if (value == null) return identity; + if (value == null) return identity$3; if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g"); svgNode.setAttribute("transform", value); - if (!(value = svgNode.transform.baseVal.consolidate())) return identity; + if (!(value = svgNode.transform.baseVal.consolidate())) return identity$3; value = value.matrix; return decompose(value.a, value.b, value.c, value.d, value.e, value.f); } @@ -2136,7 +2113,7 @@ var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")"); function tweenRemove(id, name) { var tween0, tween1; return function() { - var schedule = set$1(this, id), + var schedule = set(this, id), tween = schedule.tween; // If this node shared tween with the previous node, @@ -2161,7 +2138,7 @@ function tweenFunction(id, name, value) { var tween0, tween1; if (typeof value !== "function") throw new Error; return function() { - var schedule = set$1(this, id), + var schedule = set(this, id), tween = schedule.tween; // If this node shared tween with the previous node, @@ -2188,7 +2165,7 @@ function transition_tween(name, value) { name += ""; if (arguments.length < 2) { - var tween = get$1(this.node(), id).tween; + var tween = get(this.node(), id).tween; for (var i = 0, n = tween.length, t; i < n; ++i) { if ((t = tween[i]).name === name) { return t.value; @@ -2204,12 +2181,12 @@ function tweenValue(transition, name, value) { var id = transition._id; transition.each(function() { - var schedule = set$1(this, id); + var schedule = set(this, id); (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments); }); return function(node) { - return get$1(node, id).value[name]; + return get(node, id).value[name]; }; } @@ -2288,7 +2265,7 @@ function attrFunctionNS$1(fullname, interpolate, value) { } function transition_attr(name, value) { - var fullname = namespace(name), i = fullname === "transform" ? interpolateTransformSvg : interpolate; + var fullname = namespace$1(name), i = fullname === "transform" ? interpolateTransformSvg : interpolate; return this.attrTween(name, typeof value === "function" ? (fullname.local ? attrFunctionNS$1 : attrFunction$1)(fullname, i, tweenValue(this, "attr." + name, value)) : value == null ? (fullname.local ? attrRemoveNS$1 : attrRemove$1)(fullname) @@ -2334,7 +2311,7 @@ function transition_attrTween(name, value) { if (arguments.length < 2) return (key = this.tween(key)) && key._value; if (value == null) return this.tween(key, null); if (typeof value !== "function") throw new Error; - var fullname = namespace(name); + var fullname = namespace$1(name); return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value)); } @@ -2357,18 +2334,18 @@ function transition_delay(value) { ? this.each((typeof value === "function" ? delayFunction : delayConstant)(id, value)) - : get$1(this.node(), id).delay; + : get(this.node(), id).delay; } function durationFunction(id, value) { return function() { - set$1(this, id).duration = +value.apply(this, arguments); + set(this, id).duration = +value.apply(this, arguments); }; } function durationConstant(id, value) { return value = +value, function() { - set$1(this, id).duration = value; + set(this, id).duration = value; }; } @@ -2379,13 +2356,13 @@ function transition_duration(value) { ? this.each((typeof value === "function" ? durationFunction : durationConstant)(id, value)) - : get$1(this.node(), id).duration; + : get(this.node(), id).duration; } function easeConstant(id, value) { if (typeof value !== "function") throw new Error; return function() { - set$1(this, id).ease = value; + set(this, id).ease = value; }; } @@ -2394,11 +2371,11 @@ function transition_ease(value) { return arguments.length ? this.each(easeConstant(id, value)) - : get$1(this.node(), id).ease; + : get(this.node(), id).ease; } function transition_filter(match) { - if (typeof match !== "function") match = matcher(match); + if (typeof match !== "function") match = matcher$1(match); for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { @@ -2438,7 +2415,7 @@ function start(name) { } function onFunction(id, name, listener) { - var on0, on1, sit = start(name) ? init : set$1; + var on0, on1, sit = start(name) ? init : set; return function() { var schedule = sit(this, id), on = schedule.on; @@ -2456,7 +2433,7 @@ function transition_on(name, listener) { var id = this._id; return arguments.length < 2 - ? get$1(this.node(), id).on.on(name) + ? get(this.node(), id).on.on(name) : this.each(onFunction(id, name, listener)); } @@ -2476,14 +2453,14 @@ function transition_select(select) { var name = this._name, id = this._id; - if (typeof select !== "function") select = selector(select); + if (typeof select !== "function") select = selector$1(select); for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { if ("__data__" in node) subnode.__data__ = node.__data__; subgroup[i] = subnode; - schedule(subgroup[i], name, id, i, subgroup, get$1(node, id)); + schedule(subgroup[i], name, id, i, subgroup, get(node, id)); } } } @@ -2495,12 +2472,12 @@ function transition_selectAll(select) { var name = this._name, id = this._id; - if (typeof select !== "function") select = selectorAll(select); + if (typeof select !== "function") select = selectorAll$1(select); for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { if (node = group[i]) { - for (var children = select.call(node, node.__data__, i, group), child, inherit = get$1(node, id), k = 0, l = children.length; k < l; ++k) { + for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) { if (child = children[k]) { schedule(child, name, id, k, children, inherit); } @@ -2525,8 +2502,8 @@ function styleNull(name, interpolate) { string10, interpolate0; return function() { - var string0 = styleValue(this, name), - string1 = (this.style.removeProperty(name), styleValue(this, name)); + var string0 = styleValue$1(this, name), + string1 = (this.style.removeProperty(name), styleValue$1(this, name)); return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : interpolate0 = interpolate(string00 = string0, string10 = string1); @@ -2544,7 +2521,7 @@ function styleConstant$1(name, interpolate, value1) { string1 = value1 + "", interpolate0; return function() { - var string0 = styleValue(this, name); + var string0 = styleValue$1(this, name); return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate(string00 = string0, value1); @@ -2556,10 +2533,10 @@ function styleFunction$1(name, interpolate, value) { string10, interpolate0; return function() { - var string0 = styleValue(this, name), + var string0 = styleValue$1(this, name), value1 = value(this), string1 = value1 + ""; - if (value1 == null) string1 = value1 = (this.style.removeProperty(name), styleValue(this, name)); + if (value1 == null) string1 = value1 = (this.style.removeProperty(name), styleValue$1(this, name)); return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); @@ -2569,7 +2546,7 @@ function styleFunction$1(name, interpolate, value) { function styleMaybeRemove(id, name) { var on0, on1, listener0, key = "style." + name, event = "end." + key, remove; return function() { - var schedule = set$1(this, id), + var schedule = set(this, id), on = schedule.on, listener = schedule.value[key] == null ? remove || (remove = styleRemove$1(name)) : undefined; @@ -2672,7 +2649,7 @@ function transition_transition() { for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { if (node = group[i]) { - var inherit = get$1(node, id0); + var inherit = get(node, id0); schedule(node, name, id1, i, group, { time: inherit.time + inherit.delay + inherit.duration, delay: 0, @@ -2693,7 +2670,7 @@ function transition_end() { end = {value: function() { if (--size === 0) resolve(); }}; that.each(function() { - var schedule = set$1(this, id), + var schedule = set(this, id), on = schedule.on; // If this node shared a dispatch with the previous node, @@ -2804,41 +2781,41 @@ function selection_transition(name) { selection.prototype.interrupt = selection_interrupt; selection.prototype.transition = selection_transition; -function attrsFunction(selection, map) { +function attrsFunction$1(selection, map) { return selection.each(function() { - var x = map.apply(this, arguments), s = select(this); + var x = map.apply(this, arguments), s = select$1(this); for (var name in x) s.attr(name, x[name]); }); } -function attrsObject(selection, map) { +function attrsObject$1(selection, map) { for (var name in map) selection.attr(name, map[name]); return selection; } function selection_attrs(map) { - return (typeof map === "function" ? attrsFunction : attrsObject)(this, map); + return (typeof map === "function" ? attrsFunction$1 : attrsObject$1)(this, map); } -function stylesFunction(selection, map, priority) { +function stylesFunction$1(selection, map, priority) { return selection.each(function() { - var x = map.apply(this, arguments), s = select(this); + var x = map.apply(this, arguments), s = select$1(this); for (var name in x) s.style(name, x[name], priority); }); } -function stylesObject(selection, map, priority) { +function stylesObject$1(selection, map, priority) { for (var name in map) selection.style(name, map[name], priority); return selection; } function selection_styles(map, priority) { - return (typeof map === "function" ? stylesFunction : stylesObject)(this, map, priority == null ? "" : priority); + return (typeof map === "function" ? stylesFunction$1 : stylesObject$1)(this, map, priority == null ? "" : priority); } function propertiesFunction(selection, map) { return selection.each(function() { - var x = map.apply(this, arguments), s = select(this); + var x = map.apply(this, arguments), s = select$1(this); for (var name in x) s.property(name, x[name]); }); } @@ -2852,36 +2829,36 @@ function selection_properties(map) { return (typeof map === "function" ? propertiesFunction : propertiesObject)(this, map); } -function attrsFunction$1(transition, map) { +function attrsFunction(transition, map) { return transition.each(function() { - var x = map.apply(this, arguments), t = select(this).transition(transition); + var x = map.apply(this, arguments), t = select$1(this).transition(transition); for (var name in x) t.attr(name, x[name]); }); } -function attrsObject$1(transition, map) { +function attrsObject(transition, map) { for (var name in map) transition.attr(name, map[name]); return transition; } function transition_attrs(map) { - return (typeof map === "function" ? attrsFunction$1 : attrsObject$1)(this, map); + return (typeof map === "function" ? attrsFunction : attrsObject)(this, map); } -function stylesFunction$1(transition, map, priority) { +function stylesFunction(transition, map, priority) { return transition.each(function() { - var x = map.apply(this, arguments), t = select(this).transition(transition); + var x = map.apply(this, arguments), t = select$1(this).transition(transition); for (var name in x) t.style(name, x[name], priority); }); } -function stylesObject$1(transition, map, priority) { +function stylesObject(transition, map, priority) { for (var name in map) transition.style(name, map[name], priority); return transition; } function transition_styles(map, priority) { - return (typeof map === "function" ? stylesFunction$1 : stylesObject$1)(this, map, priority == null ? "" : priority); + return (typeof map === "function" ? stylesFunction : stylesObject)(this, map, priority == null ? "" : priority); } selection.prototype.attrs = selection_attrs; @@ -2891,43 +2868,105 @@ transition.prototype.attrs = transition_attrs; transition.prototype.styles = transition_styles; function ascending$1(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; + return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; } -function bisector(compare) { - if (compare.length === 1) compare = ascendingComparator(compare); - return { - left: function(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while (lo < hi) { - var mid = lo + hi >>> 1; - if (compare(a[mid], x) < 0) lo = mid + 1; +function bisector(f) { + let delta = f; + let compare1 = f; + let compare2 = f; + + if (f.length !== 2) { + delta = (d, x) => f(d) - x; + compare1 = ascending$1; + compare2 = (d, x) => ascending$1(f(d), x); + } + + function left(a, x, lo = 0, hi = a.length) { + if (lo < hi) { + if (compare1(x, x) !== 0) return hi; + do { + const mid = (lo + hi) >>> 1; + if (compare2(a[mid], x) < 0) lo = mid + 1; else hi = mid; - } - return lo; - }, - right: function(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while (lo < hi) { - var mid = lo + hi >>> 1; - if (compare(a[mid], x) > 0) hi = mid; - else lo = mid + 1; - } - return lo; + } while (lo < hi); } - }; + return lo; + } + + function right(a, x, lo = 0, hi = a.length) { + if (lo < hi) { + if (compare1(x, x) !== 0) return hi; + do { + const mid = (lo + hi) >>> 1; + if (compare2(a[mid], x) <= 0) lo = mid + 1; + else hi = mid; + } while (lo < hi); + } + return lo; + } + + function center(a, x, lo = 0, hi = a.length) { + const i = left(a, x, lo, hi - 1); + return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i; + } + + return {left, center, right}; } -function ascendingComparator(f) { - return function(d, x) { - return ascending$1(f(d), x); - }; +function number$2(x) { + return x === null ? NaN : +x; +} + +const ascendingBisect = bisector(ascending$1); +const bisectRight = ascendingBisect.right; +bisector(number$2).center; +var bisect = bisectRight; + +class InternMap extends Map { + constructor(entries, key = keyof) { + super(); + Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}}); + if (entries != null) for (const [key, value] of entries) this.set(key, value); + } + get(key) { + return super.get(intern_get(this, key)); + } + has(key) { + return super.has(intern_get(this, key)); + } + set(key, value) { + return super.set(intern_set(this, key), value); + } + delete(key) { + return super.delete(intern_delete(this, key)); + } +} + +function intern_get({_intern, _key}, value) { + const key = _key(value); + return _intern.has(key) ? _intern.get(key) : value; +} + +function intern_set({_intern, _key}, value) { + const key = _key(value); + if (_intern.has(key)) return _intern.get(key); + _intern.set(key, value); + return value; +} + +function intern_delete({_intern, _key}, value) { + const key = _key(value); + if (_intern.has(key)) { + value = _intern.get(key); + _intern.delete(key); + } + return value; } -var ascendingBisect = bisector(ascending$1); -var bisectRight = ascendingBisect.right; +function keyof(value) { + return value !== null && typeof value === "object" ? value.valueOf() : value; +} var e10 = Math.sqrt(50), e5 = Math.sqrt(10), @@ -2946,15 +2985,18 @@ function ticks(start, stop, count) { if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return []; if (step > 0) { - start = Math.ceil(start / step); - stop = Math.floor(stop / step); - ticks = new Array(n = Math.ceil(stop - start + 1)); - while (++i < n) ticks[i] = (start + i) * step; + let r0 = Math.round(start / step), r1 = Math.round(stop / step); + if (r0 * step < start) ++r0; + if (r1 * step > stop) --r1; + ticks = new Array(n = r1 - r0 + 1); + while (++i < n) ticks[i] = (r0 + i) * step; } else { - start = Math.floor(start * step); - stop = Math.ceil(stop * step); - ticks = new Array(n = Math.ceil(start - stop + 1)); - while (++i < n) ticks[i] = (start - i) / step; + step = -step; + let r0 = Math.round(start * step), r1 = Math.round(stop * step); + if (r0 / step < start) ++r0; + if (r1 / step > stop) --r1; + ticks = new Array(n = r1 - r0 + 1); + while (++i < n) ticks[i] = (r0 + i) / step; } if (reverse) ticks.reverse(); @@ -2981,73 +3023,45 @@ function tickStep(start, stop, count) { return stop < start ? -step1 : step1; } -function d3Max(values, valueof) { - var n = values.length, - i = -1, - value, - max; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { +function max(values, valueof) { + let max; + if (valueof === undefined) { + for (const value of values) { + if (value != null + && (max < value || (max === undefined && value >= value))) { max = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null && value > max) { - max = value; - } - } } } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { + } else { + let index = -1; + for (let value of values) { + if ((value = valueof(value, ++index, values)) != null + && (max < value || (max === undefined && value >= value))) { max = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null && value > max) { - max = value; - } - } } } } - return max; } -function d3Min(values, valueof) { - var n = values.length, - i = -1, - value, - min; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { +function min(values, valueof) { + let min; + if (valueof === undefined) { + for (const value of values) { + if (value != null + && (min > value || (min === undefined && value >= value))) { min = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null && min > value) { - min = value; - } - } } } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { + } else { + let index = -1; + for (let value of values) { + if ((value = valueof(value, ++index, values)) != null + && (min > value || (min === undefined && value >= value))) { min = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null && min > value) { - min = value; - } - } } } } - return min; } @@ -3060,148 +3074,35 @@ function initRange(domain, range) { return this; } -var prefix = "$"; - -function Map() {} - -Map.prototype = map.prototype = { - constructor: Map, - has: function(key) { - return (prefix + key) in this; - }, - get: function(key) { - return this[prefix + key]; - }, - set: function(key, value) { - this[prefix + key] = value; - return this; - }, - remove: function(key) { - var property = prefix + key; - return property in this && delete this[property]; - }, - clear: function() { - for (var property in this) if (property[0] === prefix) delete this[property]; - }, - keys: function() { - var keys = []; - for (var property in this) if (property[0] === prefix) keys.push(property.slice(1)); - return keys; - }, - values: function() { - var values = []; - for (var property in this) if (property[0] === prefix) values.push(this[property]); - return values; - }, - entries: function() { - var entries = []; - for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]}); - return entries; - }, - size: function() { - var size = 0; - for (var property in this) if (property[0] === prefix) ++size; - return size; - }, - empty: function() { - for (var property in this) if (property[0] === prefix) return false; - return true; - }, - each: function(f) { - for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this); - } -}; - -function map(object, f) { - var map = new Map; - - // Copy constructor. - if (object instanceof Map) object.each(function(value, key) { map.set(key, value); }); - - // Index array by numeric index or specified key function. - else if (Array.isArray(object)) { - var i = -1, - n = object.length, - o; - - if (f == null) while (++i < n) map.set(i, object[i]); - else while (++i < n) map.set(f(o = object[i], i, object), o); - } - - // Convert object to map. - else if (object) for (var key in object) map.set(key, object[key]); - - return map; -} - -function Set() {} - -var proto = map.prototype; - -Set.prototype = set$2.prototype = { - constructor: Set, - has: proto.has, - add: function(value) { - value += ""; - this[prefix + value] = value; - return this; - }, - remove: proto.remove, - clear: proto.clear, - values: proto.keys, - size: proto.size, - empty: proto.empty, - each: proto.each -}; - -function set$2(object, f) { - var set = new Set; - - // Copy constructor. - if (object instanceof Set) object.each(function(value) { set.add(value); }); - - // Otherwise, assume it’s an array. - else if (object) { - var i = -1, n = object.length; - if (f == null) while (++i < n) set.add(object[i]); - else while (++i < n) set.add(f(object[i], i, object)); - } - - return set; -} - -var array = Array.prototype; - -var map$1 = array.map; -var slice = array.slice; - -var implicit = {name: "implicit"}; +const implicit = Symbol("implicit"); function ordinal() { - var index = map(), + var index = new InternMap(), domain = [], range = [], unknown = implicit; function scale(d) { - var key = d + "", i = index.get(key); - if (!i) { + let i = index.get(d); + if (i === undefined) { if (unknown !== implicit) return unknown; - index.set(key, i = domain.push(d)); + index.set(d, i = domain.push(d) - 1); } - return range[(i - 1) % range.length]; + return range[i % range.length]; } scale.domain = function(_) { if (!arguments.length) return domain.slice(); - domain = [], index = map(); - var i = -1, n = _.length, d, key; - while (++i < n) if (!index.has(key = (d = _[i]) + "")) index.set(key, domain.push(d)); + domain = [], index = new InternMap(); + for (const value of _) { + if (index.has(value)) continue; + index.set(value, domain.push(value) - 1); + } return scale; }; scale.range = function(_) { - return arguments.length ? (range = slice.call(_), scale) : range.slice(); + return arguments.length ? (range = Array.from(_), scale) : range.slice(); }; scale.unknown = function(_) { @@ -3217,30 +3118,30 @@ function ordinal() { return scale; } -function constant$2(x) { +function constants(x) { return function() { return x; }; } -function number(x) { +function number$1(x) { return +x; } var unit = [0, 1]; -function identity$1(x) { +function identity$2(x) { return x; } function normalize(a, b) { return (b -= (a = +a)) ? function(x) { return (x - a) / b; } - : constant$2(isNaN(b) ? NaN : 0.5); + : constants(isNaN(b) ? NaN : 0.5); } -function clamper(domain) { - var a = domain[0], b = domain[domain.length - 1], t; +function clamper(a, b) { + var t; if (a > b) t = a, a = b, b = t; return function(x) { return Math.max(a, Math.min(b, x)); }; } @@ -3272,7 +3173,7 @@ function polymap(domain, range, interpolate) { } return function(x) { - var i = bisectRight(domain, x, 1, j) - 1; + var i = bisect(domain, x, 1, j) - 1; return r[i](d[i](x)); }; } @@ -3289,23 +3190,25 @@ function copy(source, target) { function transformer() { var domain = unit, range = unit, - interpolate = interpolateValue, + interpolate = interpolate$1, transform, untransform, unknown, - clamp = identity$1, + clamp = identity$2, piecewise, output, input; function rescale() { - piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap; + var n = Math.min(domain.length, range.length); + if (clamp !== identity$2) clamp = clamper(domain[0], domain[n - 1]); + piecewise = n > 2 ? polymap : bimap; output = input = null; return scale; } function scale(x) { - return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x))); + return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x))); } scale.invert = function(y) { @@ -3313,19 +3216,19 @@ function transformer() { }; scale.domain = function(_) { - return arguments.length ? (domain = map$1.call(_, number), clamp === identity$1 || (clamp = clamper(domain)), rescale()) : domain.slice(); + return arguments.length ? (domain = Array.from(_, number$1), rescale()) : domain.slice(); }; scale.range = function(_) { - return arguments.length ? (range = slice.call(_), rescale()) : range.slice(); + return arguments.length ? (range = Array.from(_), rescale()) : range.slice(); }; scale.rangeRound = function(_) { - return range = slice.call(_), interpolate = interpolateRound, rescale(); + return range = Array.from(_), interpolate = interpolateRound, rescale(); }; scale.clamp = function(_) { - return arguments.length ? (clamp = _ ? clamper(domain) : identity$1, scale) : clamp !== identity$1; + return arguments.length ? (clamp = _ ? true : identity$2, rescale()) : clamp !== identity$2; }; scale.interpolate = function(_) { @@ -3342,14 +3245,20 @@ function transformer() { }; } -function continuous(transform, untransform) { - return transformer()(transform, untransform); +function continuous() { + return transformer()(identity$2, identity$2); +} + +function formatDecimal(x) { + return Math.abs(x = Math.round(x)) >= 1e21 + ? x.toLocaleString("en").replace(/,/g, "") + : x.toString(10); } // Computes the decimal coefficient and exponent of the specified number x with // significant digits p, where x is positive and p is in [1, 21] or undefined. -// For example, formatDecimal(1.23) returns ["123", 0]. -function formatDecimal(x, p) { +// For example, formatDecimalParts(1.23) returns ["123", 0]. +function formatDecimalParts(x, p) { if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity var i, coefficient = x.slice(0, i); @@ -3362,7 +3271,7 @@ function formatDecimal(x, p) { } function exponent(x) { - return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN; + return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN; } function formatGroup(grouping, thousands) { @@ -3455,7 +3364,7 @@ function formatTrim(s) { var prefixExponent; function formatPrefixAuto(x, p) { - var d = formatDecimal(x, p); + var d = formatDecimalParts(x, p); if (!d) return x + ""; var coefficient = d[0], exponent = d[1], @@ -3464,11 +3373,11 @@ function formatPrefixAuto(x, p) { return i === n ? coefficient : i > n ? coefficient + new Array(i - n + 1).join("0") : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) - : "0." + new Array(1 - i).join("0") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y! + : "0." + new Array(1 - i).join("0") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y! } function formatRounded(x, p) { - var d = formatDecimal(x, p); + var d = formatDecimalParts(x, p); if (!d) return x + ""; var coefficient = d[0], exponent = d[1]; @@ -3478,36 +3387,36 @@ function formatRounded(x, p) { } var formatTypes = { - "%": function(x, p) { return (x * 100).toFixed(p); }, - "b": function(x) { return Math.round(x).toString(2); }, - "c": function(x) { return x + ""; }, - "d": function(x) { return Math.round(x).toString(10); }, - "e": function(x, p) { return x.toExponential(p); }, - "f": function(x, p) { return x.toFixed(p); }, - "g": function(x, p) { return x.toPrecision(p); }, - "o": function(x) { return Math.round(x).toString(8); }, - "p": function(x, p) { return formatRounded(x * 100, p); }, + "%": (x, p) => (x * 100).toFixed(p), + "b": (x) => Math.round(x).toString(2), + "c": (x) => x + "", + "d": formatDecimal, + "e": (x, p) => x.toExponential(p), + "f": (x, p) => x.toFixed(p), + "g": (x, p) => x.toPrecision(p), + "o": (x) => Math.round(x).toString(8), + "p": (x, p) => formatRounded(x * 100, p), "r": formatRounded, "s": formatPrefixAuto, - "X": function(x) { return Math.round(x).toString(16).toUpperCase(); }, - "x": function(x) { return Math.round(x).toString(16); } + "X": (x) => Math.round(x).toString(16).toUpperCase(), + "x": (x) => Math.round(x).toString(16) }; -function identity$2(x) { +function identity$1(x) { return x; } -var map$2 = Array.prototype.map, +var map = Array.prototype.map, prefixes = ["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"]; function formatLocale(locale) { - var group = locale.grouping === undefined || locale.thousands === undefined ? identity$2 : formatGroup(map$2.call(locale.grouping, Number), locale.thousands + ""), + var group = locale.grouping === undefined || locale.thousands === undefined ? identity$1 : formatGroup(map.call(locale.grouping, Number), locale.thousands + ""), currencyPrefix = locale.currency === undefined ? "" : locale.currency[0] + "", currencySuffix = locale.currency === undefined ? "" : locale.currency[1] + "", decimal = locale.decimal === undefined ? "." : locale.decimal + "", - numerals = locale.numerals === undefined ? identity$2 : formatNumerals(map$2.call(locale.numerals, String)), + numerals = locale.numerals === undefined ? identity$1 : formatNumerals(map.call(locale.numerals, String)), percent = locale.percent === undefined ? "%" : locale.percent + "", - minus = locale.minus === undefined ? "-" : locale.minus + "", + minus = locale.minus === undefined ? "−" : locale.minus + "", nan = locale.nan === undefined ? "NaN" : locale.nan + ""; function newFormat(specifier) { @@ -3642,11 +3551,9 @@ var format; var formatPrefix; defaultLocale({ - decimal: ".", thousands: ",", grouping: [3], - currency: ["$", ""], - minus: "-" + currency: ["$", ""] }); function defaultLocale(definition) { @@ -3712,38 +3619,36 @@ function linearish(scale) { scale.nice = function(count) { if (count == null) count = 10; - var d = domain(), - i0 = 0, - i1 = d.length - 1, - start = d[i0], - stop = d[i1], - step; + var d = domain(); + var i0 = 0; + var i1 = d.length - 1; + var start = d[i0]; + var stop = d[i1]; + var prestep; + var step; + var maxIter = 10; if (stop < start) { step = start, start = stop, stop = step; step = i0, i0 = i1, i1 = step; } - - step = tickIncrement(start, stop, count); - - if (step > 0) { - start = Math.floor(start / step) * step; - stop = Math.ceil(stop / step) * step; + + while (maxIter-- > 0) { step = tickIncrement(start, stop, count); - } else if (step < 0) { - start = Math.ceil(start * step) / step; - stop = Math.floor(stop * step) / step; - step = tickIncrement(start, stop, count); - } - - if (step > 0) { - d[i0] = Math.floor(start / step) * step; - d[i1] = Math.ceil(stop / step) * step; - domain(d); - } else if (step < 0) { - d[i0] = Math.ceil(start * step) / step; - d[i1] = Math.floor(stop * step) / step; - domain(d); + if (step === prestep) { + d[i0] = start; + d[i1] = stop; + return domain(d); + } else if (step > 0) { + start = Math.floor(start / step) * step; + stop = Math.ceil(stop / step) * step; + } else if (step < 0) { + start = Math.ceil(start * step) / step; + stop = Math.floor(stop * step) / step; + } else { + break; + } + prestep = step; } return scale; @@ -3752,11 +3657,11 @@ function linearish(scale) { return scale; } -function linear$1() { - var scale = continuous(identity$1, identity$1); +function linear() { + var scale = continuous(); scale.copy = function() { - return copy(scale, linear$1()); + return copy(scale, linear()); }; initRange.apply(scale, arguments); @@ -3764,258 +3669,1236 @@ function linear$1() { return linearish(scale); } -function nopropagation() { - event$1.stopImmediatePropagation(); -} - -function noevent() { - event$1.preventDefault(); - event$1.stopImmediatePropagation(); -} +var xhtml = "http://www.w3.org/1999/xhtml"; -function nodrag(view) { - var root = view.document.documentElement, - selection = select(view).on("dragstart.drag", noevent, true); - if ("onselectstart" in root) { - selection.on("selectstart.drag", noevent, true); - } else { - root.__noselect = root.style.MozUserSelect; - root.style.MozUserSelect = "none"; - } -} +var namespaces = { + svg: "http://www.w3.org/2000/svg", + xhtml: xhtml, + xlink: "http://www.w3.org/1999/xlink", + xml: "http://www.w3.org/XML/1998/namespace", + xmlns: "http://www.w3.org/2000/xmlns/" +}; -function yesdrag(view, noclick) { - var root = view.document.documentElement, - selection = select(view).on("dragstart.drag", null); - if (noclick) { - selection.on("click.drag", noevent, true); - setTimeout(function() { selection.on("click.drag", null); }, 0); - } - if ("onselectstart" in root) { - selection.on("selectstart.drag", null); - } else { - root.style.MozUserSelect = root.__noselect; - delete root.__noselect; - } +function namespace(name) { + var prefix = name += "", i = prefix.indexOf(":"); + if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1); + return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins } -function constant$3(x) { +function creatorInherit(name) { return function() { - return x; + var document = this.ownerDocument, + uri = this.namespaceURI; + return uri === xhtml && document.documentElement.namespaceURI === xhtml + ? document.createElement(name) + : document.createElementNS(uri, name); }; } -function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) { - this.target = target; - this.type = type; - this.subject = subject; - this.identifier = id; - this.active = active; - this.x = x; - this.y = y; - this.dx = dx; - this.dy = dy; - this._ = dispatch; -} - -DragEvent.prototype.on = function() { - var value = this._.on.apply(this._, arguments); - return value === this._ ? this : value; -}; - -// Ignore right-click, since that should open the context menu. -function defaultFilter() { - return !event$1.ctrlKey && !event$1.button; +function creatorFixed(fullname) { + return function() { + return this.ownerDocument.createElementNS(fullname.space, fullname.local); + }; } -function defaultContainer() { - return this.parentNode; +function creator(name) { + var fullname = namespace(name); + return (fullname.local + ? creatorFixed + : creatorInherit)(fullname); } -function defaultSubject(d) { - return d == null ? {x: event$1.x, y: event$1.y} : d; -} +function none() {} -function defaultTouchable() { - return navigator.maxTouchPoints || ("ontouchstart" in this); +function selector(selector) { + return selector == null ? none : function() { + return this.querySelector(selector); + }; } -function drag() { - var filter = defaultFilter, - container = defaultContainer, - subject = defaultSubject, - touchable = defaultTouchable, - gestures = {}, - listeners = dispatch("start", "drag", "end"), - active = 0, - mousedownx, - mousedowny, - mousemoving, - touchending, - clickDistance2 = 0; - - function drag(selection) { - selection - .on("mousedown.drag", mousedowned) - .filter(touchable) - .on("touchstart.drag", touchstarted) - .on("touchmove.drag", touchmoved) - .on("touchend.drag touchcancel.drag", touchended) - .style("touch-action", "none") - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - function mousedowned() { - if (touchending || !filter.apply(this, arguments)) return; - var gesture = beforestart("mouse", container.apply(this, arguments), mouse, this, arguments); - if (!gesture) return; - select(event$1.view).on("mousemove.drag", mousemoved, true).on("mouseup.drag", mouseupped, true); - nodrag(event$1.view); - nopropagation(); - mousemoving = false; - mousedownx = event$1.clientX; - mousedowny = event$1.clientY; - gesture("start"); - } - - function mousemoved() { - noevent(); - if (!mousemoving) { - var dx = event$1.clientX - mousedownx, dy = event$1.clientY - mousedowny; - mousemoving = dx * dx + dy * dy > clickDistance2; - } - gestures.mouse("drag"); - } - - function mouseupped() { - select(event$1.view).on("mousemove.drag mouseup.drag", null); - yesdrag(event$1.view, mousemoving); - noevent(); - gestures.mouse("end"); - } - - function touchstarted() { - if (!filter.apply(this, arguments)) return; - var touches = event$1.changedTouches, - c = container.apply(this, arguments), - n = touches.length, i, gesture; +function selection_select(select) { + if (typeof select !== "function") select = selector(select); - for (i = 0; i < n; ++i) { - if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) { - nopropagation(); - gesture("start"); + for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { + if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { + if ("__data__" in node) subnode.__data__ = node.__data__; + subgroup[i] = subnode; } } } - function touchmoved() { - var touches = event$1.changedTouches, - n = touches.length, i, gesture; + return new Selection(subgroups, this._parents); +} - for (i = 0; i < n; ++i) { - if (gesture = gestures[touches[i].identifier]) { - noevent(); - gesture("drag"); - } - } - } +// Given something array like (or null), returns something that is strictly an +// array. This is used to ensure that array-like objects passed to d3.selectAll +// or selection.selectAll are converted into proper arrays when creating a +// selection; we don’t ever want to create a selection backed by a live +// HTMLCollection or NodeList. However, note that selection.selectAll will use a +// static NodeList as a group, since it safely derived from querySelectorAll. +function array$1(x) { + return x == null ? [] : Array.isArray(x) ? x : Array.from(x); +} - function touchended() { - var touches = event$1.changedTouches, - n = touches.length, i, gesture; +function empty() { + return []; +} - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! - for (i = 0; i < n; ++i) { - if (gesture = gestures[touches[i].identifier]) { - nopropagation(); - gesture("end"); - } - } - } +function selectorAll(selector) { + return selector == null ? empty : function() { + return this.querySelectorAll(selector); + }; +} - function beforestart(id, container, point, that, args) { - var p = point(container, id), s, dx, dy, - sublisteners = listeners.copy(); +function arrayAll(select) { + return function() { + return array$1(select.apply(this, arguments)); + }; +} - if (!customEvent(new DragEvent(drag, "beforestart", s, id, active, p[0], p[1], 0, 0, sublisteners), function() { - if ((event$1.subject = s = subject.apply(that, args)) == null) return false; - dx = s.x - p[0] || 0; - dy = s.y - p[1] || 0; - return true; - })) return; +function selection_selectAll(select) { + if (typeof select === "function") select = arrayAll(select); + else select = selectorAll(select); - return function gesture(type) { - var p0 = p, n; - switch (type) { - case "start": gestures[id] = gesture, n = active++; break; - case "end": delete gestures[id], --active; // nobreak - case "drag": p = point(container, id), n = active; break; + for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { + if (node = group[i]) { + subgroups.push(select.call(node, node.__data__, i, group)); + parents.push(node); } - customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]); - }; + } } - drag.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant$3(!!_), drag) : filter; - }; - - drag.container = function(_) { - return arguments.length ? (container = typeof _ === "function" ? _ : constant$3(_), drag) : container; - }; + return new Selection(subgroups, parents); +} - drag.subject = function(_) { - return arguments.length ? (subject = typeof _ === "function" ? _ : constant$3(_), drag) : subject; +function matcher(selector) { + return function() { + return this.matches(selector); }; +} - drag.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$3(!!_), drag) : touchable; +function childMatcher(selector) { + return function(node) { + return node.matches(selector); }; +} - drag.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? drag : value; - }; +var find = Array.prototype.find; - drag.clickDistance = function(_) { - return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2); +function childFind(match) { + return function() { + return find.call(this.children, match); }; - - return drag; } -var slice$1 = Array.prototype.slice; +function childFirst() { + return this.firstElementChild; +} -function identity$3(x) { - return x; +function selection_selectChild(match) { + return this.select(match == null ? childFirst + : childFind(typeof match === "function" ? match : childMatcher(match))); } -var top = 1, - right = 2, - bottom = 3, - left = 4, - epsilon = 1e-6; +var filter = Array.prototype.filter; -function translateX(x) { - return "translate(" + (x + 0.5) + ",0)"; +function children() { + return Array.from(this.children); } -function translateY(y) { - return "translate(0," + (y + 0.5) + ")"; +function childrenFilter(match) { + return function() { + return filter.call(this.children, match); + }; } -function number$1(scale) { - return function(d) { - return +scale(d); - }; +function selection_selectChildren(match) { + return this.selectAll(match == null ? children + : childrenFilter(typeof match === "function" ? match : childMatcher(match))); } -function center(scale) { - var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset. - if (scale.round()) offset = Math.round(offset); - return function(d) { - return +scale(d) + offset; +function selection_filter(match) { + if (typeof match !== "function") match = matcher(match); + + for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { + if ((node = group[i]) && match.call(node, node.__data__, i, group)) { + subgroup.push(node); + } + } + } + + return new Selection(subgroups, this._parents); +} + +function sparse(update) { + return new Array(update.length); +} + +function selection_enter() { + return new Selection(this._enter || this._groups.map(sparse), this._parents); +} + +function EnterNode(parent, datum) { + this.ownerDocument = parent.ownerDocument; + this.namespaceURI = parent.namespaceURI; + this._next = null; + this._parent = parent; + this.__data__ = datum; +} + +EnterNode.prototype = { + constructor: EnterNode, + appendChild: function(child) { return this._parent.insertBefore(child, this._next); }, + insertBefore: function(child, next) { return this._parent.insertBefore(child, next); }, + querySelector: function(selector) { return this._parent.querySelector(selector); }, + querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); } +}; + +function constant$2(x) { + return function() { + return x; + }; +} + +function bindIndex(parent, group, enter, update, exit, data) { + var i = 0, + node, + groupLength = group.length, + dataLength = data.length; + + // Put any non-null nodes that fit into update. + // Put any null nodes into enter. + // Put any remaining data into enter. + for (; i < dataLength; ++i) { + if (node = group[i]) { + node.__data__ = data[i]; + update[i] = node; + } else { + enter[i] = new EnterNode(parent, data[i]); + } + } + + // Put any non-null nodes that don’t fit into exit. + for (; i < groupLength; ++i) { + if (node = group[i]) { + exit[i] = node; + } + } +} + +function bindKey(parent, group, enter, update, exit, data, key) { + var i, + node, + nodeByKeyValue = new Map, + groupLength = group.length, + dataLength = data.length, + keyValues = new Array(groupLength), + keyValue; + + // Compute the key for each node. + // If multiple nodes have the same key, the duplicates are added to exit. + for (i = 0; i < groupLength; ++i) { + if (node = group[i]) { + keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + ""; + if (nodeByKeyValue.has(keyValue)) { + exit[i] = node; + } else { + nodeByKeyValue.set(keyValue, node); + } + } + } + + // Compute the key for each datum. + // If there a node associated with this key, join and add it to update. + // If there is not (or the key is a duplicate), add it to enter. + for (i = 0; i < dataLength; ++i) { + keyValue = key.call(parent, data[i], i, data) + ""; + if (node = nodeByKeyValue.get(keyValue)) { + update[i] = node; + node.__data__ = data[i]; + nodeByKeyValue.delete(keyValue); + } else { + enter[i] = new EnterNode(parent, data[i]); + } + } + + // Add any remaining nodes that were not bound to data to exit. + for (i = 0; i < groupLength; ++i) { + if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) { + exit[i] = node; + } + } +} + +function datum(node) { + return node.__data__; +} + +function selection_data(value, key) { + if (!arguments.length) return Array.from(this, datum); + + var bind = key ? bindKey : bindIndex, + parents = this._parents, + groups = this._groups; + + if (typeof value !== "function") value = constant$2(value); + + for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) { + var parent = parents[j], + group = groups[j], + groupLength = group.length, + data = arraylike(value.call(parent, parent && parent.__data__, j, parents)), + dataLength = data.length, + enterGroup = enter[j] = new Array(dataLength), + updateGroup = update[j] = new Array(dataLength), + exitGroup = exit[j] = new Array(groupLength); + + bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); + + // Now connect the enter nodes to their following update node, such that + // appendChild can insert the materialized enter node before this node, + // rather than at the end of the parent node. + for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) { + if (previous = enterGroup[i0]) { + if (i0 >= i1) i1 = i0 + 1; + while (!(next = updateGroup[i1]) && ++i1 < dataLength); + previous._next = next || null; + } + } + } + + update = new Selection(update, parents); + update._enter = enter; + update._exit = exit; + return update; +} + +// Given some data, this returns an array-like view of it: an object that +// exposes a length property and allows numeric indexing. Note that unlike +// selectAll, this isn’t worried about “live” collections because the resulting +// array will only be used briefly while data is being bound. (It is possible to +// cause the data to change while iterating by using a key function, but please +// don’t; we’d rather avoid a gratuitous copy.) +function arraylike(data) { + return typeof data === "object" && "length" in data + ? data // Array, TypedArray, NodeList, array-like + : Array.from(data); // Map, Set, iterable, string, or anything else +} + +function selection_exit() { + return new Selection(this._exit || this._groups.map(sparse), this._parents); +} + +function selection_join(onenter, onupdate, onexit) { + var enter = this.enter(), update = this, exit = this.exit(); + if (typeof onenter === "function") { + enter = onenter(enter); + if (enter) enter = enter.selection(); + } else { + enter = enter.append(onenter + ""); + } + if (onupdate != null) { + update = onupdate(update); + if (update) update = update.selection(); + } + if (onexit == null) exit.remove(); else onexit(exit); + return enter && update ? enter.merge(update).order() : update; +} + +function selection_merge(context) { + var selection = context.selection ? context.selection() : context; + + for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { + for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { + if (node = group0[i] || group1[i]) { + merge[i] = node; + } + } + } + + for (; j < m0; ++j) { + merges[j] = groups0[j]; + } + + return new Selection(merges, this._parents); +} + +function selection_order() { + + for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) { + for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) { + if (node = group[i]) { + if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next); + next = node; + } + } + } + + return this; +} + +function selection_sort(compare) { + if (!compare) compare = ascending; + + function compareNode(a, b) { + return a && b ? compare(a.__data__, b.__data__) : !a - !b; + } + + for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) { + if (node = group[i]) { + sortgroup[i] = node; + } + } + sortgroup.sort(compareNode); + } + + return new Selection(sortgroups, this._parents).order(); +} + +function ascending(a, b) { + return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; +} + +function selection_call() { + var callback = arguments[0]; + arguments[0] = this; + callback.apply(null, arguments); + return this; +} + +function selection_nodes() { + return Array.from(this); +} + +function selection_node() { + + for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { + for (var group = groups[j], i = 0, n = group.length; i < n; ++i) { + var node = group[i]; + if (node) return node; + } + } + + return null; +} + +function selection_size() { + let size = 0; + for (const node of this) ++size; // eslint-disable-line no-unused-vars + return size; +} + +function selection_empty() { + return !this.node(); +} + +function selection_each(callback) { + + for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { + for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) { + if (node = group[i]) callback.call(node, node.__data__, i, group); + } + } + + return this; +} + +function attrRemove(name) { + return function() { + this.removeAttribute(name); + }; +} + +function attrRemoveNS(fullname) { + return function() { + this.removeAttributeNS(fullname.space, fullname.local); + }; +} + +function attrConstant(name, value) { + return function() { + this.setAttribute(name, value); + }; +} + +function attrConstantNS(fullname, value) { + return function() { + this.setAttributeNS(fullname.space, fullname.local, value); + }; +} + +function attrFunction(name, value) { + return function() { + var v = value.apply(this, arguments); + if (v == null) this.removeAttribute(name); + else this.setAttribute(name, v); + }; +} + +function attrFunctionNS(fullname, value) { + return function() { + var v = value.apply(this, arguments); + if (v == null) this.removeAttributeNS(fullname.space, fullname.local); + else this.setAttributeNS(fullname.space, fullname.local, v); + }; +} + +function selection_attr(name, value) { + var fullname = namespace(name); + + if (arguments.length < 2) { + var node = this.node(); + return fullname.local + ? node.getAttributeNS(fullname.space, fullname.local) + : node.getAttribute(fullname); + } + + return this.each((value == null + ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function" + ? (fullname.local ? attrFunctionNS : attrFunction) + : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value)); +} + +function defaultView(node) { + return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node + || (node.document && node) // node is a Window + || node.defaultView; // node is a Document +} + +function styleRemove(name) { + return function() { + this.style.removeProperty(name); + }; +} + +function styleConstant(name, value, priority) { + return function() { + this.style.setProperty(name, value, priority); + }; +} + +function styleFunction(name, value, priority) { + return function() { + var v = value.apply(this, arguments); + if (v == null) this.style.removeProperty(name); + else this.style.setProperty(name, v, priority); + }; +} + +function selection_style(name, value, priority) { + return arguments.length > 1 + ? this.each((value == null + ? styleRemove : typeof value === "function" + ? styleFunction + : styleConstant)(name, value, priority == null ? "" : priority)) + : styleValue(this.node(), name); +} + +function styleValue(node, name) { + return node.style.getPropertyValue(name) + || defaultView(node).getComputedStyle(node, null).getPropertyValue(name); +} + +function propertyRemove(name) { + return function() { + delete this[name]; + }; +} + +function propertyConstant(name, value) { + return function() { + this[name] = value; + }; +} + +function propertyFunction(name, value) { + return function() { + var v = value.apply(this, arguments); + if (v == null) delete this[name]; + else this[name] = v; + }; +} + +function selection_property(name, value) { + return arguments.length > 1 + ? this.each((value == null + ? propertyRemove : typeof value === "function" + ? propertyFunction + : propertyConstant)(name, value)) + : this.node()[name]; +} + +function classArray(string) { + return string.trim().split(/^|\s+/); +} + +function classList(node) { + return node.classList || new ClassList(node); +} + +function ClassList(node) { + this._node = node; + this._names = classArray(node.getAttribute("class") || ""); +} + +ClassList.prototype = { + add: function(name) { + var i = this._names.indexOf(name); + if (i < 0) { + this._names.push(name); + this._node.setAttribute("class", this._names.join(" ")); + } + }, + remove: function(name) { + var i = this._names.indexOf(name); + if (i >= 0) { + this._names.splice(i, 1); + this._node.setAttribute("class", this._names.join(" ")); + } + }, + contains: function(name) { + return this._names.indexOf(name) >= 0; + } +}; + +function classedAdd(node, names) { + var list = classList(node), i = -1, n = names.length; + while (++i < n) list.add(names[i]); +} + +function classedRemove(node, names) { + var list = classList(node), i = -1, n = names.length; + while (++i < n) list.remove(names[i]); +} + +function classedTrue(names) { + return function() { + classedAdd(this, names); + }; +} + +function classedFalse(names) { + return function() { + classedRemove(this, names); + }; +} + +function classedFunction(names, value) { + return function() { + (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names); + }; +} + +function selection_classed(name, value) { + var names = classArray(name + ""); + + if (arguments.length < 2) { + var list = classList(this.node()), i = -1, n = names.length; + while (++i < n) if (!list.contains(names[i])) return false; + return true; + } + + return this.each((typeof value === "function" + ? classedFunction : value + ? classedTrue + : classedFalse)(names, value)); +} + +function textRemove() { + this.textContent = ""; +} + +function textConstant(value) { + return function() { + this.textContent = value; + }; +} + +function textFunction(value) { + return function() { + var v = value.apply(this, arguments); + this.textContent = v == null ? "" : v; + }; +} + +function selection_text(value) { + return arguments.length + ? this.each(value == null + ? textRemove : (typeof value === "function" + ? textFunction + : textConstant)(value)) + : this.node().textContent; +} + +function htmlRemove() { + this.innerHTML = ""; +} + +function htmlConstant(value) { + return function() { + this.innerHTML = value; + }; +} + +function htmlFunction(value) { + return function() { + var v = value.apply(this, arguments); + this.innerHTML = v == null ? "" : v; + }; +} + +function selection_html(value) { + return arguments.length + ? this.each(value == null + ? htmlRemove : (typeof value === "function" + ? htmlFunction + : htmlConstant)(value)) + : this.node().innerHTML; +} + +function raise() { + if (this.nextSibling) this.parentNode.appendChild(this); +} + +function selection_raise() { + return this.each(raise); +} + +function lower() { + if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild); +} + +function selection_lower() { + return this.each(lower); +} + +function selection_append(name) { + var create = typeof name === "function" ? name : creator(name); + return this.select(function() { + return this.appendChild(create.apply(this, arguments)); + }); +} + +function constantNull() { + return null; +} + +function selection_insert(name, before) { + var create = typeof name === "function" ? name : creator(name), + select = before == null ? constantNull : typeof before === "function" ? before : selector(before); + return this.select(function() { + return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null); + }); +} + +function remove() { + var parent = this.parentNode; + if (parent) parent.removeChild(this); +} + +function selection_remove() { + return this.each(remove); +} + +function selection_cloneShallow() { + var clone = this.cloneNode(false), parent = this.parentNode; + return parent ? parent.insertBefore(clone, this.nextSibling) : clone; +} + +function selection_cloneDeep() { + var clone = this.cloneNode(true), parent = this.parentNode; + return parent ? parent.insertBefore(clone, this.nextSibling) : clone; +} + +function selection_clone(deep) { + return this.select(deep ? selection_cloneDeep : selection_cloneShallow); +} + +function selection_datum(value) { + return arguments.length + ? this.property("__data__", value) + : this.node().__data__; +} + +function contextListener(listener) { + return function(event) { + listener.call(this, event, this.__data__); + }; +} + +function parseTypenames(typenames) { + return typenames.trim().split(/^|\s+/).map(function(t) { + var name = "", i = t.indexOf("."); + if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); + return {type: t, name: name}; + }); +} + +function onRemove(typename) { + return function() { + var on = this.__on; + if (!on) return; + for (var j = 0, i = -1, m = on.length, o; j < m; ++j) { + if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) { + this.removeEventListener(o.type, o.listener, o.options); + } else { + on[++i] = o; + } + } + if (++i) on.length = i; + else delete this.__on; + }; +} + +function onAdd(typename, value, options) { + return function() { + var on = this.__on, o, listener = contextListener(value); + if (on) for (var j = 0, m = on.length; j < m; ++j) { + if ((o = on[j]).type === typename.type && o.name === typename.name) { + this.removeEventListener(o.type, o.listener, o.options); + this.addEventListener(o.type, o.listener = listener, o.options = options); + o.value = value; + return; + } + } + this.addEventListener(typename.type, listener, options); + o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options}; + if (!on) this.__on = [o]; + else on.push(o); + }; +} + +function selection_on(typename, value, options) { + var typenames = parseTypenames(typename + ""), i, n = typenames.length, t; + + if (arguments.length < 2) { + var on = this.node().__on; + if (on) for (var j = 0, m = on.length, o; j < m; ++j) { + for (i = 0, o = on[j]; i < n; ++i) { + if ((t = typenames[i]).type === o.type && t.name === o.name) { + return o.value; + } + } + } + return; + } + + on = value ? onAdd : onRemove; + for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options)); + return this; +} + +function dispatchEvent(node, type, params) { + var window = defaultView(node), + event = window.CustomEvent; + + if (typeof event === "function") { + event = new event(type, params); + } else { + event = window.document.createEvent("Event"); + if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail; + else event.initEvent(type, false, false); + } + + node.dispatchEvent(event); +} + +function dispatchConstant(type, params) { + return function() { + return dispatchEvent(this, type, params); + }; +} + +function dispatchFunction(type, params) { + return function() { + return dispatchEvent(this, type, params.apply(this, arguments)); + }; +} + +function selection_dispatch(type, params) { + return this.each((typeof params === "function" + ? dispatchFunction + : dispatchConstant)(type, params)); +} + +function* selection_iterator() { + for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { + for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) { + if (node = group[i]) yield node; + } + } +} + +var root = [null]; + +function Selection(groups, parents) { + this._groups = groups; + this._parents = parents; +} + +function selection_selection() { + return this; +} + +Selection.prototype = { + constructor: Selection, + select: selection_select, + selectAll: selection_selectAll, + selectChild: selection_selectChild, + selectChildren: selection_selectChildren, + filter: selection_filter, + data: selection_data, + enter: selection_enter, + exit: selection_exit, + join: selection_join, + merge: selection_merge, + selection: selection_selection, + order: selection_order, + sort: selection_sort, + call: selection_call, + nodes: selection_nodes, + node: selection_node, + size: selection_size, + empty: selection_empty, + each: selection_each, + attr: selection_attr, + style: selection_style, + property: selection_property, + classed: selection_classed, + text: selection_text, + html: selection_html, + raise: selection_raise, + lower: selection_lower, + append: selection_append, + insert: selection_insert, + remove: selection_remove, + clone: selection_clone, + datum: selection_datum, + on: selection_on, + dispatch: selection_dispatch, + [Symbol.iterator]: selection_iterator +}; + +function select(selector) { + return typeof selector === "string" + ? new Selection([[document.querySelector(selector)]], [document.documentElement]) + : new Selection([[selector]], root); +} + +function sourceEvent(event) { + let sourceEvent; + while (sourceEvent = event.sourceEvent) event = sourceEvent; + return event; +} + +function pointer(event, node) { + event = sourceEvent(event); + if (node === undefined) node = event.currentTarget; + if (node) { + var svg = node.ownerSVGElement || node; + if (svg.createSVGPoint) { + var point = svg.createSVGPoint(); + point.x = event.clientX, point.y = event.clientY; + point = point.matrixTransform(node.getScreenCTM().inverse()); + return [point.x, point.y]; + } + if (node.getBoundingClientRect) { + var rect = node.getBoundingClientRect(); + return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop]; + } + } + return [event.pageX, event.pageY]; +} + +// These are typically used in conjunction with noevent to ensure that we can +// preventDefault on the event. +const nonpassive = {passive: false}; +const nonpassivecapture = {capture: true, passive: false}; + +function nopropagation(event) { + event.stopImmediatePropagation(); +} + +function noevent(event) { + event.preventDefault(); + event.stopImmediatePropagation(); +} + +function nodrag(view) { + var root = view.document.documentElement, + selection = select(view).on("dragstart.drag", noevent, nonpassivecapture); + if ("onselectstart" in root) { + selection.on("selectstart.drag", noevent, nonpassivecapture); + } else { + root.__noselect = root.style.MozUserSelect; + root.style.MozUserSelect = "none"; + } +} + +function yesdrag(view, noclick) { + var root = view.document.documentElement, + selection = select(view).on("dragstart.drag", null); + if (noclick) { + selection.on("click.drag", noevent, nonpassivecapture); + setTimeout(function() { selection.on("click.drag", null); }, 0); + } + if ("onselectstart" in root) { + selection.on("selectstart.drag", null); + } else { + root.style.MozUserSelect = root.__noselect; + delete root.__noselect; + } +} + +var constant$1 = x => () => x; + +function DragEvent(type, { + sourceEvent, + subject, + target, + identifier, + active, + x, y, dx, dy, + dispatch +}) { + Object.defineProperties(this, { + type: {value: type, enumerable: true, configurable: true}, + sourceEvent: {value: sourceEvent, enumerable: true, configurable: true}, + subject: {value: subject, enumerable: true, configurable: true}, + target: {value: target, enumerable: true, configurable: true}, + identifier: {value: identifier, enumerable: true, configurable: true}, + active: {value: active, enumerable: true, configurable: true}, + x: {value: x, enumerable: true, configurable: true}, + y: {value: y, enumerable: true, configurable: true}, + dx: {value: dx, enumerable: true, configurable: true}, + dy: {value: dy, enumerable: true, configurable: true}, + _: {value: dispatch} + }); +} + +DragEvent.prototype.on = function() { + var value = this._.on.apply(this._, arguments); + return value === this._ ? this : value; +}; + +// Ignore right-click, since that should open the context menu. +function defaultFilter(event) { + return !event.ctrlKey && !event.button; +} + +function defaultContainer() { + return this.parentNode; +} + +function defaultSubject(event, d) { + return d == null ? {x: event.x, y: event.y} : d; +} + +function defaultTouchable() { + return navigator.maxTouchPoints || ("ontouchstart" in this); +} + +function drag() { + var filter = defaultFilter, + container = defaultContainer, + subject = defaultSubject, + touchable = defaultTouchable, + gestures = {}, + listeners = dispatch("start", "drag", "end"), + active = 0, + mousedownx, + mousedowny, + mousemoving, + touchending, + clickDistance2 = 0; + + function drag(selection) { + selection + .on("mousedown.drag", mousedowned) + .filter(touchable) + .on("touchstart.drag", touchstarted) + .on("touchmove.drag", touchmoved, nonpassive) + .on("touchend.drag touchcancel.drag", touchended) + .style("touch-action", "none") + .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); + } + + function mousedowned(event, d) { + if (touchending || !filter.call(this, event, d)) return; + var gesture = beforestart(this, container.call(this, event, d), event, d, "mouse"); + if (!gesture) return; + select(event.view) + .on("mousemove.drag", mousemoved, nonpassivecapture) + .on("mouseup.drag", mouseupped, nonpassivecapture); + nodrag(event.view); + nopropagation(event); + mousemoving = false; + mousedownx = event.clientX; + mousedowny = event.clientY; + gesture("start", event); + } + + function mousemoved(event) { + noevent(event); + if (!mousemoving) { + var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny; + mousemoving = dx * dx + dy * dy > clickDistance2; + } + gestures.mouse("drag", event); + } + + function mouseupped(event) { + select(event.view).on("mousemove.drag mouseup.drag", null); + yesdrag(event.view, mousemoving); + noevent(event); + gestures.mouse("end", event); + } + + function touchstarted(event, d) { + if (!filter.call(this, event, d)) return; + var touches = event.changedTouches, + c = container.call(this, event, d), + n = touches.length, i, gesture; + + for (i = 0; i < n; ++i) { + if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) { + nopropagation(event); + gesture("start", event, touches[i]); + } + } + } + + function touchmoved(event) { + var touches = event.changedTouches, + n = touches.length, i, gesture; + + for (i = 0; i < n; ++i) { + if (gesture = gestures[touches[i].identifier]) { + noevent(event); + gesture("drag", event, touches[i]); + } + } + } + + function touchended(event) { + var touches = event.changedTouches, + n = touches.length, i, gesture; + + if (touchending) clearTimeout(touchending); + touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! + for (i = 0; i < n; ++i) { + if (gesture = gestures[touches[i].identifier]) { + nopropagation(event); + gesture("end", event, touches[i]); + } + } + } + + function beforestart(that, container, event, d, identifier, touch) { + var dispatch = listeners.copy(), + p = pointer(touch || event, container), dx, dy, + s; + + if ((s = subject.call(that, new DragEvent("beforestart", { + sourceEvent: event, + target: drag, + identifier, + active, + x: p[0], + y: p[1], + dx: 0, + dy: 0, + dispatch + }), d)) == null) return; + + dx = s.x - p[0] || 0; + dy = s.y - p[1] || 0; + + return function gesture(type, event, touch) { + var p0 = p, n; + switch (type) { + case "start": gestures[identifier] = gesture, n = active++; break; + case "end": delete gestures[identifier], --active; // falls through + case "drag": p = pointer(touch || event, container), n = active; break; + } + dispatch.call( + type, + that, + new DragEvent(type, { + sourceEvent: event, + subject: s, + target: drag, + identifier, + active: n, + x: p[0] + dx, + y: p[1] + dy, + dx: p[0] - p0[0], + dy: p[1] - p0[1], + dispatch + }), + d + ); + }; + } + + drag.filter = function(_) { + return arguments.length ? (filter = typeof _ === "function" ? _ : constant$1(!!_), drag) : filter; + }; + + drag.container = function(_) { + return arguments.length ? (container = typeof _ === "function" ? _ : constant$1(_), drag) : container; + }; + + drag.subject = function(_) { + return arguments.length ? (subject = typeof _ === "function" ? _ : constant$1(_), drag) : subject; + }; + + drag.touchable = function(_) { + return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$1(!!_), drag) : touchable; + }; + + drag.on = function() { + var value = listeners.on.apply(listeners, arguments); + return value === listeners ? drag : value; + }; + + drag.clickDistance = function(_) { + return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2); }; + + return drag; +} + +function identity(x) { + return x; +} + +var top = 1, + right = 2, + bottom = 3, + left = 4, + epsilon$1 = 1e-6; + +function translateX(x) { + return "translate(" + x + ",0)"; +} + +function translateY(y) { + return "translate(0," + y + ")"; +} + +function number(scale) { + return d => +scale(d); +} + +function center(scale, offset) { + offset = Math.max(0, scale.bandwidth() - offset * 2) / 2; + if (scale.round()) offset = Math.round(offset); + return d => +scale(d) + offset; } function entering() { @@ -4029,18 +4912,19 @@ function axis(orient, scale) { tickSizeInner = 6, tickSizeOuter = 6, tickPadding = 3, + offset = typeof window !== "undefined" && window.devicePixelRatio > 1 ? 0 : 0.5, k = orient === top || orient === left ? -1 : 1, x = orient === left || orient === right ? "x" : "y", transform = orient === top || orient === bottom ? translateX : translateY; function axis(context) { var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues, - format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity$3) : tickFormat, + format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat, spacing = Math.max(tickSizeInner, 0) + tickPadding, range = scale.range(), - range0 = +range[0] + 0.5, - range1 = +range[range.length - 1] + 0.5, - position = (scale.bandwidth ? center : number$1)(scale.copy()), + range0 = +range[0] + offset, + range1 = +range[range.length - 1] + offset, + position = (scale.bandwidth ? center : number)(scale.copy(), offset), selection = context.selection ? context.selection() : context, path = selection.selectAll(".domain").data([null]), tick = selection.selectAll(".tick").data(values, scale).order(), @@ -4071,24 +4955,24 @@ function axis(orient, scale) { text = text.transition(context); tickExit = tickExit.transition(context) - .attr("opacity", epsilon) - .attr("transform", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute("transform"); }); + .attr("opacity", epsilon$1) + .attr("transform", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute("transform"); }); tickEnter - .attr("opacity", epsilon) - .attr("transform", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); }); + .attr("opacity", epsilon$1) + .attr("transform", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); }); } tickExit.remove(); path - .attr("d", orient === left || orient == right - ? (tickSizeOuter ? "M" + k * tickSizeOuter + "," + range0 + "H0.5V" + range1 + "H" + k * tickSizeOuter : "M0.5," + range0 + "V" + range1) - : (tickSizeOuter ? "M" + range0 + "," + k * tickSizeOuter + "V0.5H" + range1 + "V" + k * tickSizeOuter : "M" + range0 + ",0.5H" + range1)); + .attr("d", orient === left || orient === right + ? (tickSizeOuter ? "M" + k * tickSizeOuter + "," + range0 + "H" + offset + "V" + range1 + "H" + k * tickSizeOuter : "M" + offset + "," + range0 + "V" + range1) + : (tickSizeOuter ? "M" + range0 + "," + k * tickSizeOuter + "V" + offset + "H" + range1 + "V" + k * tickSizeOuter : "M" + range0 + "," + offset + "H" + range1)); tick .attr("opacity", 1) - .attr("transform", function(d) { return transform(position(d)); }); + .attr("transform", function(d) { return transform(position(d) + offset); }); line .attr(x + "2", k * tickSizeInner); @@ -4112,15 +4996,15 @@ function axis(orient, scale) { }; axis.ticks = function() { - return tickArguments = slice$1.call(arguments), axis; + return tickArguments = Array.from(arguments), axis; }; axis.tickArguments = function(_) { - return arguments.length ? (tickArguments = _ == null ? [] : slice$1.call(_), axis) : tickArguments.slice(); + return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice(); }; axis.tickValues = function(_) { - return arguments.length ? (tickValues = _ == null ? null : slice$1.call(_), axis) : tickValues && tickValues.slice(); + return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice(); }; axis.tickFormat = function(_) { @@ -4143,6 +5027,10 @@ function axis(orient, scale) { return arguments.length ? (tickPadding = +_, axis) : tickPadding; }; + axis.offset = function(_) { + return arguments.length ? (offset = +_, axis) : offset; + }; + return axis; } @@ -4154,10 +5042,10 @@ function axisLeft(scale) { return axis(left, scale); } -var pi = Math.PI, - tau = 2 * pi, - epsilon$1 = 1e-6, - tauEpsilon = tau - epsilon$1; +const pi$1 = Math.PI, + tau$1 = 2 * pi$1, + epsilon = 1e-6, + tauEpsilon = tau$1 - epsilon; function Path() { this._x0 = this._y0 = // start of current subpath @@ -4208,12 +5096,12 @@ Path.prototype = path.prototype = { } // Or, is (x1,y1) coincident with (x0,y0)? Do nothing. - else if (!(l01_2 > epsilon$1)); + else if (!(l01_2 > epsilon)); // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear? // Equivalently, is (x1,y1) coincident with (x2,y2)? // Or, is the radius zero? Line to (x1,y1). - else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon$1) || !r) { + else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) { this._ += "L" + (this._x1 = x1) + "," + (this._y1 = y1); } @@ -4225,12 +5113,12 @@ Path.prototype = path.prototype = { l20_2 = x20 * x20 + y20 * y20, l21 = Math.sqrt(l21_2), l01 = Math.sqrt(l01_2), - l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), + l = r * Math.tan((pi$1 - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), t01 = l / l01, t21 = l / l21; // If the start tangent is not coincident with (x0,y0), line to. - if (Math.abs(t01 - 1) > epsilon$1) { + if (Math.abs(t01 - 1) > epsilon) { this._ += "L" + (x1 + t01 * x01) + "," + (y1 + t01 * y01); } @@ -4255,7 +5143,7 @@ Path.prototype = path.prototype = { } // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0). - else if (Math.abs(this._x1 - x0) > epsilon$1 || Math.abs(this._y1 - y0) > epsilon$1) { + else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) { this._ += "L" + x0 + "," + y0; } @@ -4263,7 +5151,7 @@ Path.prototype = path.prototype = { if (!r) return; // Does the angle go the wrong way? Flip the direction. - if (da < 0) da = da % tau + tau; + if (da < 0) da = da % tau$1 + tau$1; // Is this a complete circle? Draw two arcs to complete the circle. if (da > tauEpsilon) { @@ -4271,8 +5159,8 @@ Path.prototype = path.prototype = { } // Is this arc non-empty? Draw an arc! - else if (da > epsilon$1) { - this._ += "A" + r + "," + r + ",0," + (+(da >= pi)) + "," + cw + "," + (this._x1 = x + r * Math.cos(a1)) + "," + (this._y1 = y + r * Math.sin(a1)); + else if (da > epsilon) { + this._ += "A" + r + "," + r + ",0," + (+(da >= pi$1)) + "," + cw + "," + (this._x1 = x + r * Math.cos(a1)) + "," + (this._y1 = y + r * Math.sin(a1)); } }, rect: function(x, y, w, h) { @@ -4283,14 +5171,20 @@ Path.prototype = path.prototype = { } }; -function constant$4(x) { +function constant(x) { return function constant() { return x; }; } -var pi$1 = Math.PI; -var tau$1 = 2 * pi$1; +var pi = Math.PI; +var tau = 2 * pi; + +function array(x) { + return typeof x === "object" && "length" in x + ? x // Array, TypedArray, NodeList, array-like + : Array.from(x); // Map, Set, iterable, string, or anything else +} function Linear(context) { this._context = context; @@ -4314,7 +5208,7 @@ Linear.prototype = { x = +x, y = +y; switch (this._point) { case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; // proceed + case 1: this._point = 2; // falls through default: this._context.lineTo(x, y); break; } } @@ -4332,17 +5226,18 @@ function y(p) { return p[1]; } -function line() { - var x$1 = x, - y$1 = y, - defined = constant$4(true), +function line(x$1, y$1) { + var defined = constant(true), context = null, curve = curveLinear, output = null; + x$1 = typeof x$1 === "function" ? x$1 : (x$1 === undefined) ? x : constant(x$1); + y$1 = typeof y$1 === "function" ? y$1 : (y$1 === undefined) ? y : constant(y$1); + function line(data) { var i, - n = data.length, + n = (data = array(data)).length, d, defined0 = false, buffer; @@ -4361,15 +5256,15 @@ function line() { } line.x = function(_) { - return arguments.length ? (x$1 = typeof _ === "function" ? _ : constant$4(+_), line) : x$1; + return arguments.length ? (x$1 = typeof _ === "function" ? _ : constant(+_), line) : x$1; }; line.y = function(_) { - return arguments.length ? (y$1 = typeof _ === "function" ? _ : constant$4(+_), line) : y$1; + return arguments.length ? (y$1 = typeof _ === "function" ? _ : constant(+_), line) : y$1; }; line.defined = function(_) { - return arguments.length ? (defined = typeof _ === "function" ? _ : constant$4(!!_), line) : defined; + return arguments.length ? (defined = typeof _ === "function" ? _ : constant(!!_), line) : defined; }; line.curve = function(_) { @@ -4383,21 +5278,22 @@ function line() { return line; } -function d3Area() { - var x0 = x, - x1 = null, - y0 = constant$4(0), - y1 = y, - defined = constant$4(true), +function d3Area(x0, y0, y1) { + var x1 = null, + defined = constant(true), context = null, curve = curveLinear, output = null; + x0 = typeof x0 === "function" ? x0 : (x0 === undefined) ? x : constant(+x0); + y0 = typeof y0 === "function" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0); + y1 = typeof y1 === "function" ? y1 : (y1 === undefined) ? y : constant(+y1); + function area(data) { var i, j, k, - n = data.length, + n = (data = array(data)).length, d, defined0 = false, buffer, @@ -4436,27 +5332,27 @@ function d3Area() { } area.x = function(_) { - return arguments.length ? (x0 = typeof _ === "function" ? _ : constant$4(+_), x1 = null, area) : x0; + return arguments.length ? (x0 = typeof _ === "function" ? _ : constant(+_), x1 = null, area) : x0; }; area.x0 = function(_) { - return arguments.length ? (x0 = typeof _ === "function" ? _ : constant$4(+_), area) : x0; + return arguments.length ? (x0 = typeof _ === "function" ? _ : constant(+_), area) : x0; }; area.x1 = function(_) { - return arguments.length ? (x1 = _ == null ? null : typeof _ === "function" ? _ : constant$4(+_), area) : x1; + return arguments.length ? (x1 = _ == null ? null : typeof _ === "function" ? _ : constant(+_), area) : x1; }; area.y = function(_) { - return arguments.length ? (y0 = typeof _ === "function" ? _ : constant$4(+_), y1 = null, area) : y0; + return arguments.length ? (y0 = typeof _ === "function" ? _ : constant(+_), y1 = null, area) : y0; }; area.y0 = function(_) { - return arguments.length ? (y0 = typeof _ === "function" ? _ : constant$4(+_), area) : y0; + return arguments.length ? (y0 = typeof _ === "function" ? _ : constant(+_), area) : y0; }; area.y1 = function(_) { - return arguments.length ? (y1 = _ == null ? null : typeof _ === "function" ? _ : constant$4(+_), area) : y1; + return arguments.length ? (y1 = _ == null ? null : typeof _ === "function" ? _ : constant(+_), area) : y1; }; area.lineX0 = @@ -4473,7 +5369,7 @@ function d3Area() { }; area.defined = function(_) { - return arguments.length ? (defined = typeof _ === "function" ? _ : constant$4(!!_), area) : defined; + return arguments.length ? (defined = typeof _ === "function" ? _ : constant(!!_), area) : defined; }; area.curve = function(_) { @@ -4489,9 +5385,9 @@ function d3Area() { var circle = { draw: function(context, size) { - var r = Math.sqrt(size / pi$1); + var r = Math.sqrt(size / pi); context.moveTo(r, 0); - context.arc(0, 0, r, 0, tau$1); + context.arc(0, 0, r, 0, tau); } }; @@ -4507,10 +5403,10 @@ var symbolTriangle = { } }; -function symbol() { - var type = constant$4(circle), - size = constant$4(64), - context = null; +function symbol(type, size) { + var context = null; + type = typeof type === "function" ? type : constant(type || circle); + size = typeof size === "function" ? size : constant(size === undefined ? 64 : +size); function symbol() { var buffer; @@ -4520,11 +5416,11 @@ function symbol() { } symbol.type = function(_) { - return arguments.length ? (type = typeof _ === "function" ? _ : constant$4(_), symbol) : type; + return arguments.length ? (type = typeof _ === "function" ? _ : constant(_), symbol) : type; }; symbol.size = function(_) { - return arguments.length ? (size = typeof _ === "function" ? _ : constant$4(+_), symbol) : size; + return arguments.length ? (size = typeof _ === "function" ? _ : constant(+_), symbol) : size; }; symbol.context = function(_) { @@ -4534,7 +5430,7 @@ function symbol() { return symbol; } -function point$1(that, x, y) { +function point(that, x, y) { that._context.bezierCurveTo( (2 * that._x0 + that._x1) / 3, (2 * that._y0 + that._y1) / 3, @@ -4563,7 +5459,7 @@ Basis.prototype = { }, lineEnd: function() { switch (this._point) { - case 3: point$1(this, this._x1, this._y1); // proceed + case 3: point(this, this._x1, this._y1); // falls through case 2: this._context.lineTo(this._x1, this._y1); break; } if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); @@ -4574,8 +5470,8 @@ Basis.prototype = { switch (this._point) { case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; case 1: this._point = 2; break; - case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed - default: point$1(this, x, y); break; + case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through + default: point(this, x, y); break; } this._x0 = this._x1, this._x1 = x; this._y0 = this._y1, this._y1 = y; @@ -4670,8 +5566,8 @@ var schemeSet3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9b if (this.options.expandControls) { var buttonContainer = this._button = L.DomUtil.create('div', "heightgraph-toggle", container); - var link = L.DomUtil.create("a", "heightgraph-toggle-icon", buttonContainer); - var closeButton = this._closeButton = L.DomUtil.create("a", "heightgraph-close-icon", container); + L.DomUtil.create("a", "heightgraph-toggle-icon", buttonContainer); + this._closeButton = L.DomUtil.create("a", "heightgraph-close-icon", container); } this._showState = false; @@ -4681,7 +5577,7 @@ var schemeSet3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9b this._init_options(); // Note: this._svg really contains the inside the - this._svg = select(this._container).append("svg").attr("class", "heightgraph-container").attr("width", this._width).attr("height", this._height).append("g").attr("transform", "translate(" + this._margin.left + "," + this._margin.top + ")"); + this._svg = select$1(this._container).append("svg").attr("class", "heightgraph-container").attr("width", this._width).attr("height", this._height).append("g").attr("transform", "translate(" + this._margin.left + "," + this._margin.top + ")"); if (this.options.expand) this._expand(); return container; }, @@ -4743,7 +5639,7 @@ var schemeSet3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9b if (size.width) this.options.width = size.width; if (size.height) this.options.height = size.height; // Resize the along with its container - select(this._container).selectAll("svg").attr("width", this.options.width).attr("height", this.options.height); // Re-add the data to redraw the chart. + select$1(this._container).selectAll("svg").attr("width", this.options.width).attr("height", this.options.height); // Re-add the data to redraw the chart. this._addData(this._data); }, @@ -4784,7 +5680,7 @@ var schemeSet3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9b x2 = Math.max(this._dragStartCoords[0], dragEndCoords[0]); if (!this._dragRectangle && !this._dragRectangleG) { - var g = select(this._container).select("svg").select("g"); + var g = select$1(this._container).select("svg").select("g"); this._dragRectangleG = g.append("g"); this._dragRectangle = this._dragRectangleG.append("rect").attr("width", x2 - x1).attr("height", this._svgHeight).attr("x", x1).attr('class', 'mouse-drag').style("fill", "grey").style("opacity", 0.5).style("pointer-events", "none"); } else { @@ -4885,13 +5781,13 @@ var schemeSet3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9b } if (!this._showState) { - select(this._button).style("display", "none"); - select(this._container).selectAll('svg').style("display", "block"); - select(this._closeButton).style("display", "block"); + select$1(this._button).style("display", "none"); + select$1(this._container).selectAll('svg').style("display", "block"); + select$1(this._closeButton).style("display", "block"); } else { - select(this._button).style("display", "block"); - select(this._container).selectAll('svg').style("display", "none"); - select(this._closeButton).style("display", "none"); + select$1(this._button).style("display", "block"); + select$1(this._container).selectAll('svg').style("display", "none"); + select$1(this._closeButton).style("display", "none"); } this._showState = !this._showState; @@ -5082,12 +5978,12 @@ var schemeSet3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9b * calculates minimum and maximum values for the elevation scale drawn with d3 */ _calculateElevationBounds: function _calculateElevationBounds() { - var max = d3Max(this._elevations); - var min = d3Min(this._elevations); - var range = max - min; + var max$1 = max(this._elevations); + var min$1 = min(this._elevations); + var range = max$1 - min$1; this._elevationBounds = { - min: range < 10 ? min - 10 : min - 0.1 * range, - max: range < 10 ? max + 10 : max + 0.1 * range + min: range < 10 ? min$1 - 10 : min$1 - 0.1 * range, + max: range < 10 ? max$1 + 10 : max$1 + 0.1 * range }; }, @@ -5103,7 +5999,7 @@ var schemeSet3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9b var normalizedY = layerPoint.y - 75; if (!this._mouseHeightFocus) { - var heightG = select(".leaflet-overlay-pane svg").append("g"); + var heightG = select$1(".leaflet-overlay-pane svg").append("g"); this._mouseHeightFocus = heightG.append('svg:line').attr('class', 'height-focus line').attr('x2', '0').attr('y2', '0').attr('x1', '0').attr('y1', '0'); this._mouseHeightFocusLabel = heightG.append("g").attr('class', 'height-focus label'); this._mouseHeightFocusLabelRect = this._mouseHeightFocusLabel.append("rect").attr('class', 'bBox'); @@ -5208,17 +6104,17 @@ var schemeSet3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9b }]; var dragstart = function dragstart(d) { - select(this).raise().classed("active", true); - select(".horizontalLine").raise().classed("active", true); + select$1(this).raise().classed("active", true); + select$1(".horizontalLine").raise().classed("active", true); }; var dragged = function dragged(d) { var maxY = self._svgHeight; var eventY = mouse(self._container)[1] - 10; - select(this).attr("transform", function (d) { + select$1(this).attr("transform", function (d) { return "translate(" + d.x + "," + (eventY < 0 ? 0 : eventY > maxY ? maxY : eventY) + ") rotate(" + d.angle + ")"; }); - select(".horizontalLine").attr("y1", eventY < 0 ? 0 : eventY > maxY ? maxY : eventY).attr("y2", eventY < 0 ? 0 : eventY > maxY ? maxY : eventY); + select$1(".horizontalLine").attr("y1", eventY < 0 ? 0 : eventY > maxY ? maxY : eventY).attr("y2", eventY < 0 ? 0 : eventY > maxY ? maxY : eventY); if (eventY >= maxY) { self._highlightedCoords = []; @@ -5226,7 +6122,7 @@ var schemeSet3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9b self._highlightedCoords = self._findCoordsForY(eventY); } - select(".horizontalLineText").attr("y", eventY <= 10 ? 0 : eventY > maxY ? maxY - 10 : eventY - 10).text(format(".0f")(self._y.invert(eventY < 0 ? 0 : eventY > maxY ? maxY : eventY)) + " m"); + select$1(".horizontalLineText").attr("y", eventY <= 10 ? 0 : eventY > maxY ? maxY - 10 : eventY - 10).text(format(".0f")(self._y.invert(eventY < 0 ? 0 : eventY > maxY ? maxY : eventY)) + " m"); self._removeMarkedSegmentsOnMap(); @@ -5234,15 +6130,15 @@ var schemeSet3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9b }; var dragend = function dragend(d) { - select(this).classed("active", false); - select(".horizontalLine").classed("active", false); + select$1(this).classed("active", false); + select$1(".horizontalLine").classed("active", false); self._removeMarkedSegmentsOnMap(); self._markSegmentsOnMap(self._highlightedCoords); }; - var horizontalDrag = this._svg.selectAll(".horizontal-symbol").data(jsonTriangle).enter().append("path").attr("class", "lineSelection").attr("d", symbol().type(function (d) { + this._svg.selectAll(".horizontal-symbol").data(jsonTriangle).enter().append("path").attr("class", "lineSelection").attr("d", symbol().type(function (d) { return d.type; }).size(function (d) { return d.size; @@ -5302,8 +6198,8 @@ var schemeSet3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9b */ _appendScales: function _appendScales() { var shortDist = Boolean(this._totalDistance <= 10); - this._x = linear$1().range([0, this._svgWidth]); - this._y = linear$1().range([this._svgHeight, 0]); + this._x = linear().range([0, this._svgWidth]); + this._y = linear().range([this._svgHeight, 0]); this._x.domain([0, this._totalDistance]); @@ -5334,7 +6230,7 @@ var schemeSet3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9b * Appends a background and adds mouse handlers */ _appendBackground: function _appendBackground() { - var background = this._background = select(this._container).select("svg").select("g").append("rect").attr("width", this._svgWidth).attr("height", this._svgHeight).style("fill", "none").style("stroke", "none").style("pointer-events", "all").on("mousemove.focusbox", this._mousemoveHandler.bind(this)).on("mouseout.focusbox", this._mouseoutHandler.bind(this)); + var background = this._background = select$1(this._container).select("svg").select("g").append("rect").attr("width", this._svgWidth).attr("height", this._svgHeight).style("fill", "none").style("stroke", "none").style("pointer-events", "all").on("mousemove.focusbox", this._mousemoveHandler.bind(this)).on("mouseout.focusbox", this._mouseoutHandler.bind(this)); if (L.Browser.android) { background.on("touchstart.drag", this._dragHandler.bind(this)).on("touchstart.drag", this._dragStartHandler.bind(this)).on("touchstart.focusbox", this._mousemoveHandler.bind(this)); @@ -5364,7 +6260,7 @@ var schemeSet3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9b _appendAreas: function _appendAreas(block, idx, eleIdx) { var c = this._categories[idx].attributes[eleIdx].color; var self = this; - var area = this._area = d3Area().x(function (d) { + this._area = d3Area().x(function (d) { var xDiagonalCoordinate = self._x(d.position); d.xDiagonalCoordinate = xDiagonalCoordinate; @@ -5390,7 +6286,7 @@ var schemeSet3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9b */ _createSelectionBox: function _createSelectionBox() { var self = this; - var svg = select(this._container).select("svg"); + var svg = select$1(this._container).select("svg"); var width = this._width - this._margin.right, height = this._height - this._margin.bottom; var verticalItemPosition = height + this._margin.bottom / 2 + 6; @@ -5568,7 +6464,7 @@ var schemeSet3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9b widths.push(selectAll(className).nodes()[i].getBoundingClientRect().width); } - var maxWidth = d3Max(widths); + var maxWidth = max(widths); return [cnt, maxWidth]; }, @@ -5804,3 +6700,4 @@ var schemeSet3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9b return L.Control.Heightgraph; }, window); +//# sourceMappingURL=L.Control.Heightgraph.js.map diff --git a/dist/L.Control.Heightgraph.js.map b/dist/L.Control.Heightgraph.js.map index 3c46c45..25af843 100644 --- a/dist/L.Control.Heightgraph.js.map +++ b/dist/L.Control.Heightgraph.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/L.Control.Heightgraph.js"],"names":["L","Control","Heightgraph","extend","options","position","width","height","margins","top","right","bottom","left","mappings","undefined","expand","expandControls","translation","expandCallback","xTicks","yTicks","highlightStyle","_defaultTranslation","distance","elevation","segment_length","type","legend","_init_options","_margin","_width","_height","_mappings","_svgWidth","_svgHeight","_selectedOption","_highlightStyle","color","onAdd","map","container","_container","DomUtil","create","DomEvent","disableClickPropagation","buttonContainer","_button","link","closeButton","_closeButton","_showState","_initToggle","svg","_svg","d3","select","append","attr","onRemove","_removeMarkedSegmentsOnMap","addData","data","selectAll","remove","_data","_prepareData","_computeStats","_onAddData","_appendScales","_appendGrid","_createChart","length","_createSelectionBox","_expand","Browser","touch","on","stopPropagation","_dragHandler","event","preventDefault","_gotDragged","_drawDragRectangle","_dragStartCoords","dragEndCoords","_dragCurrentCoords","mouse","_background","node","x1","Math","min","x2","max","_dragRectangle","_dragRectangleG","g","style","_resetDrag","fullExtent","_calculateFullExtent","_areasFlattended","_map","fitBounds","_dragEndHandler","item1","_findItemForX","item2","_fitSection","_dragStartHandler","full_extent","latLngBounds","latlng","forEach","item","contains","index1","index2","start","end","ext","slice","_removeChart","_randomNumber","round","random","_d3ColorCategorical","_profile","coordinates","elevations","cumDistances","push","blocks","categorical","colorScale","randomNumber","scaleOrdinal","name","y","cumDistance","info","id","text","properties","summary","distances","attributes","geometries","i","cnt","usedColors","features","altitude","ptA","ptB","ptDistance","geometry","coordsLength","attributeType","attribute","j","LatLng","distanceTo","x","lng","lat","areaIdx","totalDistance","maxElevation","minElevation","quantile","elevationQuantile","yElevationMin","yElevationMax","_showMarker","ll","layerpoint","latLngToLayerPoint","normalizedY","_mouseHeightFocus","heightG","_mouseHeightFocusLabel","_mouseHeightFocusLabelRect","_mouseHeightFocusLabelTextElev","_mouseHeightFocusLabelTextType","pointG","_pointG","maxWidth","_dynamicBoxSize","maxHeight","idx","areas","concat","apply","_appendAreas","_createFocus","_appendBackground","_createBorderTopLine","_createLegend","_createHorizontalLine","boxPosition","textDistance","_focus","_focusLineGroup","_focusRect","_y","_focusDistance","_getTranslation","_focusHeight","_focusBlockDistance","_focusType","_areaTspan","_typeTspan","_focusLine","_distTspan","_altTspan","self","_horizontalLine","_elevationValueText","jsonTriangle","symbolTriangle","dragstart","d","raise","classed","dragged","maxY","eventY","angle","_highlightedCoords","_findCoordsForY","format","invert","_markSegmentsOnMap","dragend","horizontalDrag","enter","symbol","size","call","drag","coords","_markedSegments","featureGroup","linePart","polyline","addTo","bringToFront","removeLayer","shortDist","Boolean","yHeightMin","yHeightMax","margin","_x","scaleLinear","range","domain","_xAxis","axisBottom","scale","tickFormat","ticks","pow","_yAxis","axisLeft","_yEndAxis","axisRight","_yEnd","background","_mousemoveHandler","bind","_mouseoutHandler","android","_make_x_axis","tickSize","_make_y_axis","block","eleIdx","c","area","_area","xDiagonalCoordinate","y0","y1","curve","curveLinear","_areapath","datum","jsonTriangles","selectionSign","arrowRight","arrowLeft","chooseSelection","_selectionText","selection","leg","legendRectSize","legendSpacing","offset","horizontal","vertical","textProp","_boxBoundY","legendHover","className","nodes","widths","getBoundingClientRect","borderTopLine","line","curveBasis","param","_mapMousemoveHandler","evt","closestItem","closestDistance","exactMatchRounding","latDiff","lngDiff","abs","_internalMousemoveHandler","ctx","areaLength","alt","dist","boxWidth","toFixed","xPositionBox","totalWidth","bisect","bisector","xInvert","b","yInvert","list","newList","k","l","key","console","error","control","heightgraph"],"mappings":"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","sourcesContent":["L.Control.Heightgraph = L.Control.extend({\n options: {\n position: \"bottomright\",\n width: 800,\n height: 280,\n margins: {\n top: 10,\n right: 30,\n bottom: 55,\n left: 50\n },\n mappings: undefined,\n expand: true,\n expandControls: true,\n translation: {},\n expandCallback: undefined,\n xTicks: undefined,\n yTicks: undefined,\n highlightStyle: undefined\n },\n _defaultTranslation: {\n distance: \"Distance\",\n elevation: \"Elevation\",\n segment_length: \"Segment length\",\n type: \"Type\",\n legend: \"Legend\"\n },\n _init_options() {\n this._margin = this.options.margins;\n this._width = this.options.width;\n this._height = this.options.height;\n this._mappings = this.options.mappings;\n this._svgWidth = this._width - this._margin.left - this._margin.right;\n this._svgHeight = this._height - this._margin.top - this._margin.bottom;\n this._selectedOption = 0\n this._highlightStyle = this.options.highlightStyle || {color: 'red'}\n },\n onAdd(map) {\n let container = this._container = L.DomUtil.create(\"div\", \"heightgraph\")\n L.DomEvent.disableClickPropagation(container);\n if (this.options.expandControls) {\n let buttonContainer = this._button = L.DomUtil.create('div', \"heightgraph-toggle\", container);\n const link = L.DomUtil.create(\"a\", \"heightgraph-toggle-icon\", buttonContainer)\n const closeButton = this._closeButton = L.DomUtil.create(\"a\", \"heightgraph-close-icon\", container)\n }\n this._showState = false;\n this._initToggle();\n this._init_options();\n const svg = this._svg = d3.select(this._container).append(\"svg\").attr(\"class\", \"heightgraph-container\").\n attr(\"width\", this._svgWidth + this._margin.left + this._margin.right).\n attr(\"height\", this._svgHeight + this._margin.top + this._margin.bottom).append(\"g\").\n attr(\"transform\", \"translate(\" + this._margin.left + \",\" + this._margin.top + \")\")\n return container;\n },\n onRemove(map) {\n this._removeMarkedSegmentsOnMap();\n this._container = null;\n this._svg = undefined;\n },\n /**\n * add Data from geoJson and call all functions\n * @param {Object} data\n */\n addData(data) {\n if (this._svg !== undefined) {\n this._svg.selectAll(\"*\")\n .remove();\n }\n\n this._data = data;\n this._prepareData();\n this._computeStats();\n\n this._onAddData();\n },\n /**\n * Trigger a re-render of the chart based on the existing data (e.g. on container resize).\n */\n _onAddData() {\n this._init_options();\n this._appendScales();\n this._appendGrid();\n this._createChart(this._selectedOption);\n if (this._data.length > 1) this._createSelectionBox();\n if (this.options.expand) this._expand();\n },\n _initToggle() {\n if (!L.Browser.touch) {\n L.DomEvent.disableClickPropagation(this._container);\n } else {\n L.DomEvent.on(this._container, 'click', L.DomEvent.stopPropagation);\n }\n if (this.options.expandControls) {\n L.DomEvent.on(this._button, 'click', this._expand, this);\n L.DomEvent.on(this._closeButton, 'click', this._expand, this);\n }\n },\n _dragHandler() {\n //we don´t want map events to occur here\n d3.event.preventDefault();\n d3.event.stopPropagation();\n this._gotDragged = true;\n this._drawDragRectangle();\n },\n /**\n * Draws the currently dragged rectangle over the chart.\n */\n _drawDragRectangle() {\n if (!this._dragStartCoords) {\n return;\n }\n const dragEndCoords = this._dragCurrentCoords = d3.mouse(this._background.node())\n const x1 = Math.min(this._dragStartCoords[0], dragEndCoords[0]),\n x2 = Math.max(this._dragStartCoords[0], dragEndCoords[0])\n if (!this._dragRectangle && !this._dragRectangleG) {\n const g = d3.select(this._container).select(\"svg\").select(\"g\")\n this._dragRectangleG = g.append(\"g\");\n this._dragRectangle = this._dragRectangleG.append(\"rect\")\n .attr(\"width\", x2 - x1)\n .attr(\"height\", this._svgHeight)\n .attr(\"x\", x1)\n .attr('class', 'mouse-drag')\n .style(\"fill\", \"grey\")\n .style(\"opacity\", 0.5)\n .style(\"pointer-events\", \"none\");\n } else {\n this._dragRectangle.attr(\"width\", x2 - x1)\n .attr(\"x\", x1);\n }\n },\n /**\n * Removes the drag rectangle and zooms back to the total extent of the data.\n */\n _resetDrag() {\n if (this._dragRectangleG) {\n this._dragRectangleG.remove();\n this._dragRectangleG = null;\n this._dragRectangle = null;\n\n // Performance improvement: we could cache the full extend when addData() is called\n let fullExtent = this._calculateFullExtent(this._areasFlattended);\n fullExtent && this._map.fitBounds(fullExtent);\n }\n },\n /**\n * Handles end of drag operations. Zooms the map to the selected items extent.\n */\n _dragEndHandler() {\n if (!this._dragStartCoords || !this._gotDragged) {\n this._dragStartCoords = null;\n this._gotDragged = false;\n this._resetDrag();\n return;\n }\n const item1 = this._findItemForX(this._dragStartCoords[0]),\n item2 = this._findItemForX(this._dragCurrentCoords[0])\n this._fitSection(item1, item2);\n this._dragStartCoords = null;\n this._gotDragged = false;\n },\n _dragStartHandler() {\n d3.event.preventDefault();\n d3.event.stopPropagation();\n this._gotDragged = false;\n this._dragStartCoords = d3.mouse(this._background.node());\n },\n /*\n * Calculates the full extent of the data array\n */\n _calculateFullExtent(data) {\n if (!data || data.length < 1) {\n return null;\n }\n let full_extent = new L.latLngBounds(data[0].latlng, data[0].latlng);\n data.forEach((item) => {\n if (!full_extent.contains(item.latlng)) {\n full_extent.extend(item.latlng);\n }\n });\n return full_extent;\n },\n /**\n * Make the map fit the route section between given indexes.\n */\n _fitSection(index1, index2) {\n const start = Math.min(index1, index2), end = Math.max(index1, index2)\n let ext\n if (start !== end) {\n ext = this._calculateFullExtent(this._areasFlattended.slice(start, end + 1));\n } else if (this._areasFlattended.length > 0) {\n ext = [this._areasFlattended[start].latlng, this._areasFlattended[end].latlng];\n }\n ext && this._map.fitBounds(ext);\n },\n /**\n * Expand container when button clicked and shrink when close-Button clicked\n */\n _expand() {\n if (this.options.expandControls !== true) {\n // always expand, never collapse\n this._showState = false;\n }\n if (!this._showState) {\n d3.select(this._button)\n .style(\"display\", \"none\");\n d3.select(this._container)\n .selectAll('svg')\n .style(\"display\", \"block\");\n d3.select(this._closeButton)\n .style(\"display\", \"block\");\n } else {\n d3.select(this._button)\n .style(\"display\", \"block\");\n d3.select(this._container)\n .selectAll('svg')\n .style(\"display\", \"none\");\n d3.select(this._closeButton)\n .style(\"display\", \"none\");\n }\n this._showState = !this._showState;\n if(typeof this.options.expandCallback === \"function\"){\n this.options.expandCallback(this._showState);\n }\n },\n /**\n * Removes the svg elements from the d3 chart\n */\n _removeChart() {\n if (this._svg !== undefined) {\n // remove areas\n this._svg.selectAll(\"path.area\")\n .remove();\n // remove top border\n this._svg.selectAll(\"path.border-top\")\n .remove();\n // remove legend\n this._svg.selectAll(\".legend\")\n .remove();\n // remove horizontal Line\n this._svg.selectAll(\".lineSelection\")\n .remove();\n this._svg.selectAll(\".horizontalLine\")\n .remove();\n this._svg.selectAll(\".horizontalLineText\")\n .remove();\n }\n },\n /**\n * Creates a random int between 0 and max\n */\n _randomNumber: max => Math.round((Math.random() * (max - 0))),\n _d3ColorCategorical: [{\n \"name\": \"schemeAccent\"\n }, {\n \"name\": \"schemeDark2\"\n }, {\n \"name\": \"schemeSet2\"\n }, {\n \"name\": \"schemeSet1\"\n }, {\n \"name\": \"schemeCategory10\"\n }, {\n \"name\": \"schemeSet3\"\n }, {\n \"name\": \"schemePaired\"\n }, {\n \"name\": \"schemeCategory20\"\n }, {\n \"name\": \"schemeCategory20b\"\n }, {\n \"name\": \"schemeCategory20c\"\n }],\n /**\n * Prepares the data needed for the height graph\n */\n _prepareData() {\n this._profile = {};\n this._profile.coordinates = [];\n this._profile.elevations = [];\n this._profile.cumDistances = [];\n this._profile.cumDistances.push(0);\n this._profile.blocks = [];\n const data = this._data\n const categorical = []\n let colorScale\n if (this._mappings === undefined) {\n const randomNumber = this._randomNumber(categorical.length)\n colorScale = d3.scaleOrdinal(d3[this._d3ColorCategorical[randomNumber].name]);\n }\n for (let y = 0; y < data.length; y++) {\n let cumDistance = 0\n this._profile.blocks[y] = {};\n this._profile.blocks[y].info = {\n id: y,\n text: data[y].properties.summary\n };\n this._profile.blocks[y].distances = [];\n this._profile.blocks[y].attributes = [];\n this._profile.blocks[y].geometries = [];\n this._profile.blocks[y].legend = {};\n let i, cnt = 0\n const usedColors = {}\n for (i = 0; i < data[y].features.length; i++) {\n // data is redundant in every element of data which is why we collect it once\n let altitude, ptA, ptB, ptDistance\n const geometry = []\n const coordsLength = data[y].features[i].geometry.coordinates.length\n // save attribute types related to blocks\n const attributeType = data[y].features[i].properties.attributeType\n // check if mappings are defined, otherwise random colors\n let text, color\n if (this._mappings === undefined) {\n if (attributeType in usedColors) {\n text = attributeType;\n color = usedColors[attributeType];\n } else {\n text = attributeType;\n color = colorScale(i);\n usedColors[attributeType] = color;\n }\n } else {\n text = this._mappings[data[y].properties.summary][attributeType].text;\n color = this._mappings[data[y].properties.summary][attributeType].color;\n }\n const attribute = {\n type: attributeType, text: text, color: color\n }\n this._profile.blocks[y].attributes.push(attribute);\n // add to legend\n if (!(attributeType in this._profile.blocks[y].legend)) {\n this._profile.blocks[y].legend[attributeType] = attribute;\n }\n for (let j = 0; j < coordsLength; j++) {\n ptA = new L.LatLng(data[y].features[i].geometry.coordinates[j][1], data[y].features[i].geometry.coordinates[j][0]);\n altitude = data[y].features[i].geometry.coordinates[j][2];\n // add elevations, coordinates and point distances only once\n // last point in feature is first of next which is why we have to juggle with indices\n if (j < coordsLength - 1) {\n ptB = new L.LatLng(data[y].features[i].geometry.coordinates[j + 1][1], data[y].features[i].geometry.coordinates[j + 1][0]);\n ptDistance = ptA.distanceTo(ptB) / 1000;\n // calculate distances of specific block\n cumDistance += ptDistance;\n if (y === 0) {\n this._profile.elevations.push(altitude);\n this._profile.coordinates.push(ptA);\n this._profile.cumDistances.push(cumDistance);\n }\n cnt += 1;\n } else if (j === coordsLength - 1 && i === data[y].features.length - 1) {\n if (y === 0) {\n this._profile.elevations.push(altitude);\n this._profile.coordinates.push(ptB);\n }\n cnt += 1;\n }\n // save the position which corresponds to the distance along the route.\n let position\n if (j === coordsLength - 1 && i < data[y].features.length - 1) {\n position = this._profile.cumDistances[cnt];\n } else {\n position = this._profile.cumDistances[cnt - 1];\n }\n geometry.push({\n altitude: altitude,\n position: position,\n x: ptA.lng,\n y: ptA.lat,\n latlng: ptA,\n type: text,\n areaIdx: i\n });\n }\n this._profile.blocks[y].distances.push(cumDistance);\n this._profile.blocks[y].geometries.push(geometry);\n }\n if (y === data.length - 1) {\n this._profile.totalDistance = cumDistance;\n }\n }\n },\n /**\n * Creates a list with four x,y coords and other important info for the bars drawn with d3\n */\n _computeStats() {\n const max = this._profile.maxElevation = d3.max(this._profile.elevations)\n const min = this._profile.minElevation = d3.min(this._profile.elevations)\n const quantile = this._profile.elevationQuantile = d3.quantile(this._profile.elevations, 0.75)\n this._profile.yElevationMin = (quantile < (min + min / 10)) ? (min - max / 5 < 0 ? 0 : min - max / 5) : min - (max / 10);\n this._profile.yElevationMax = quantile > (max - max / 10) ? max + (max / 3) : max;\n },\n /**\n * Creates a marker on the map while hovering\n * @param {Object} ll: actual coordinates of the route\n * @param {Number} height: height as float\n * @param {string} type: type of element\n */\n _showMarker(ll, height, type) {\n const layerpoint = this._map.latLngToLayerPoint(ll)\n const normalizedY = layerpoint.y - 75\n if (!this._mouseHeightFocus) {\n const heightG = d3.select(\".leaflet-overlay-pane svg\").append(\"g\")\n this._mouseHeightFocus = heightG.append('svg:line')\n .attr('class', 'height-focus line')\n .attr('x2', '0')\n .attr('y2', '0')\n .attr('x1', '0')\n .attr('y1', '0');\n this._mouseHeightFocusLabel = heightG.append(\"g\")\n .attr('class', 'height-focus label');\n this._mouseHeightFocusLabelRect = this._mouseHeightFocusLabel.append(\"rect\")\n .attr('class', 'bBox');\n this._mouseHeightFocusLabelTextElev = this._mouseHeightFocusLabel.append(\"text\")\n .attr('class', 'tspan');\n this._mouseHeightFocusLabelTextType = this._mouseHeightFocusLabel.append(\"text\")\n .attr('class', 'tspan');\n const pointG = this._pointG = heightG.append(\"g\").attr(\"class\", \"height-focus circle\")\n pointG.append(\"svg:circle\")\n .attr(\"r\", 5)\n .attr(\"cx\", 0)\n .attr(\"cy\", 0)\n .attr(\"class\", \"height-focus circle-lower\");\n }\n this._mouseHeightFocusLabel.style(\"display\", \"block\");\n this._mouseHeightFocus.attr(\"x1\", layerpoint.x)\n .attr(\"x2\", layerpoint.x)\n .attr(\"y1\", layerpoint.y)\n .attr(\"y2\", normalizedY)\n .style(\"display\", \"block\");\n this._pointG.attr(\"transform\", \"translate(\" + layerpoint.x + \",\" + layerpoint.y + \")\")\n .style(\"display\", \"block\");\n this._mouseHeightFocusLabelRect.attr(\"x\", layerpoint.x + 3)\n .attr(\"y\", normalizedY)\n .attr(\"class\", 'bBox');\n this._mouseHeightFocusLabelTextElev.attr(\"x\", layerpoint.x + 5)\n .attr(\"y\", normalizedY + 12)\n .text(height + \" m\")\n .attr(\"class\", \"tspan mouse-height-box-text\");\n this._mouseHeightFocusLabelTextType.attr(\"x\", layerpoint.x + 5)\n .attr(\"y\", normalizedY + 24)\n .text(type)\n .attr(\"class\", \"tspan mouse-height-box-text\");\n const maxWidth = this._dynamicBoxSize(\"text.tspan\")[1]\n // box size should change for profile none (no type)\n const maxHeight = (type === \"\") ? 12 + 6 : 2 * 12 + 6\n d3.selectAll('.bBox')\n .attr(\"width\", maxWidth + 10)\n .attr(\"height\", maxHeight);\n },\n /**\n * Creates the elevation profile\n */\n _createChart(idx) {\n let areas = this._profile.blocks.length == 0\n ? []\n : this._profile.blocks[idx].geometries;\n this._areasFlattended = [].concat.apply([], areas);\n for (let i = 0; i < areas.length; i++) {\n this._appendAreas(areas[i], idx, i);\n }\n this._createFocus();\n this._appendBackground();\n this._createBorderTopLine();\n this._createLegend();\n this._createHorizontalLine();\n },\n /**\n * Creates focus Line and focus box while hovering\n */\n _createFocus() {\n const boxPosition = this._profile.yElevationMin\n const textDistance = 15\n if (this._focus) {\n this._focus.remove();\n this._focusLineGroup.remove();\n }\n this._focus = this._svg.append(\"g\")\n .attr(\"class\", \"focusbox\");\n // background box\n this._focusRect = this._focus.append(\"rect\")\n .attr(\"x\", 3)\n .attr(\"y\", -this._y(boxPosition))\n .attr(\"display\", \"none\");\n // text line 1\n this._focusDistance = this._focus.append(\"text\")\n .attr(\"x\", 7)\n .attr(\"y\", -this._y(boxPosition) + textDistance)\n .attr(\"id\", \"heightgraph.distance\")\n .text(this._getTranslation('distance')+':');\n // text line 2\n this._focusHeight = this._focus.append(\"text\")\n .attr(\"x\", 7)\n .attr(\"y\", -this._y(boxPosition) + 2 * textDistance)\n .attr(\"id\", \"heightgraph.height\")\n .text(this._getTranslation('elevation')+':');\n // text line 3\n this._focusBlockDistance = this._focus.append(\"text\")\n .attr(\"x\", 7)\n .attr(\"y\", -this._y(boxPosition) + 3 * textDistance)\n .attr(\"id\", \"heightgraph.blockdistance\")\n .text(this._getTranslation('segment_length')+':');\n // text line 4\n this._focusType = this._focus.append(\"text\")\n .attr(\"x\", 7)\n .attr(\"y\", -this._y(boxPosition) + 4 * textDistance)\n .attr(\"id\", \"heightgraph.type\")\n .text(this._getTranslation('type')+':');\n this._areaTspan = this._focusBlockDistance.append('tspan')\n .attr(\"class\", \"tspan\");\n this._typeTspan = this._focusType.append('tspan')\n .attr(\"class\", \"tspan\");\n const height = this._dynamicBoxSize(\".focusbox text\")[0]\n d3.selectAll('.focusbox rect')\n .attr(\"height\", height * textDistance + (textDistance / 2))\n .attr(\"display\", \"block\");\n this._focusLineGroup = this._svg.append(\"g\")\n .attr(\"class\", \"focusLine\");\n this._focusLine = this._focusLineGroup.append(\"line\")\n .attr(\"y1\", 0)\n .attr(\"y2\", this._y(this._profile.yElevationMin));\n this._distTspan = this._focusDistance.append('tspan')\n .attr(\"class\", \"tspan\");\n this._altTspan = this._focusHeight.append('tspan')\n .attr(\"class\", \"tspan\");\n },\n /**\n * Creates horizontal Line for dragging\n */\n _createHorizontalLine() {\n const self = this\n this._horizontalLine = this._svg.append(\"line\")\n .attr(\"class\", \"horizontalLine\")\n .attr(\"x1\", 0)\n .attr(\"x2\", this._width - this._margin.left - this._margin.right)\n .attr(\"y1\", this._y(this._profile.yElevationMin))\n .attr(\"y2\", this._y(this._profile.yElevationMin))\n .style(\"stroke\", \"black\");\n this._elevationValueText = this._svg.append(\"text\")\n .attr(\"class\", \"horizontalLineText\")\n .attr(\"x\", this._width - this._margin.left - this._margin.right - 20)\n .attr(\"y\", this._y(this._profile.yElevationMin)-10)\n .attr(\"fill\", \"black\");\n //triangle symbol as controller\n const jsonTriangle = [\n {\n \"x\": this._width - this._margin.left - this._margin.right + 7,\n \"y\": this._y(this._profile.yElevationMin),\n \"color\": \"black\",\n \"type\": d3.symbolTriangle,\n \"angle\": -90,\n \"size\": 100\n }\n ]\n const dragstart = function (d) {\n d3.select(this).raise().classed(\"active\", true)\n d3.select(\".horizontalLine\").raise().classed(\"active\", true)\n }\n\n const dragged = function (d) {\n const maxY = self._svgHeight\n let eventY = d3.mouse(self._container)[1] - 10\n d3.select(this)\n .attr(\"transform\", d => \"translate(\" + d.x + \",\" + (eventY < 0 ? 0\n : eventY > maxY ? maxY\n : eventY) + \") rotate(\" + d.angle + \")\");\n d3.select(\".horizontalLine\")\n .attr(\"y1\", (eventY < 0 ? 0 : (eventY > maxY ? maxY : eventY)))\n .attr(\"y2\", (eventY < 0 ? 0 : (eventY > maxY ? maxY : eventY)));\n if(eventY >= maxY){\n self._highlightedCoords = [];\n } else {\n self._highlightedCoords = self._findCoordsForY(eventY);\n }\n d3.select(\".horizontalLineText\")\n .attr(\"y\", (eventY <= 10 ? 0 : (eventY > maxY ? maxY-10 : eventY-10)))\n .text(d3.format(\".0f\")(self._y.invert((eventY < 0 ? 0 : (eventY > maxY ? maxY : eventY)))) + \" m\");\n self._removeMarkedSegmentsOnMap();\n self._markSegmentsOnMap(self._highlightedCoords);\n }\n\n const dragend = function (d) {\n d3.select(this)\n .classed(\"active\", false);\n d3.select(\".horizontalLine\")\n .classed(\"active\", false);\n self._removeMarkedSegmentsOnMap();\n self._markSegmentsOnMap(self._highlightedCoords);\n }\n\n const horizontalDrag = this._svg.selectAll(\".horizontal-symbol\").data(jsonTriangle).enter().append(\"path\").\n attr(\"class\", \"lineSelection\")\n .attr(\"d\", d3.symbol().type(d => d.type).size(d => d.size))\n .attr(\"transform\", d => \"translate(\" + d.x + \",\" + d.y + \") rotate(\" + d.angle + \")\")\n .attr(\"id\", d => d.id)\n .style(\"fill\", d => d.color)\n .call(d3.drag().on(\"start\", dragstart).on(\"drag\", dragged).on(\"end\", dragend))\n },\n /**\n * Highlights segments on the map above given elevation value\n */\n _markSegmentsOnMap(coords) {\n if(coords){\n if (coords.length > 1) {\n // some other leaflet plugins can't deal with multi-Polylines very well\n // therefore multiple single polylines are used here\n this._markedSegments = L.featureGroup()\n for (let linePart of coords) {\n L.polyline(\n linePart,\n this._highlightStyle\n ).addTo(this._markedSegments)\n }\n this._markedSegments.addTo(this._map)\n .bringToFront()\n } else {\n this._markedSegments = L.polyline(coords, this._highlightStyle).addTo(this._map);\n }\n }\n },\n /**\n * Remove the highlighted segments from the map\n */\n _removeMarkedSegmentsOnMap() {\n if (this._markedSegments !== undefined) {\n this._map.removeLayer(this._markedSegments);\n }\n },\n /**\n * Defines the ranges and format of x- and y- scales and appends them\n */\n\n _appendScales() {\n const shortDist = Boolean(this._profile.totalDistance <= 10)\n const yHeightMin = this._profile.yElevationMin\n const yHeightMax = this._profile.yElevationMax\n const margin = this._margin, width = this._width - this._margin.left - this._margin.right,\n height = this._height - this._margin.top - this._margin.bottom\n this._x = d3.scaleLinear()\n .range([0, width]);\n this._y = d3.scaleLinear()\n .range([height, 0]);\n this._x.domain([0, this._profile.totalDistance]);\n this._y.domain([yHeightMin, yHeightMax]);\n if (shortDist === true) {\n this._xAxis = d3.axisBottom()\n .scale(this._x)\n .tickFormat(d => d3.format(\".2f\")(d) + \" km\");\n } else {\n this._xAxis = d3.axisBottom()\n .scale(this._x)\n .tickFormat(d => d3.format(\".0f\")(d) + \" km\");\n }\n if(this.options.xTicks !== undefined){\n this._xAxis.ticks(Math.pow(2, this.options.xTicks));\n }\n this._yAxis = d3.axisLeft()\n .scale(this._y)\n .tickFormat(d => d + \" m\");\n if(this.options.yTicks !== undefined){\n this._yAxis.ticks(Math.pow(2, this.options.yTicks));\n }\n this._yEndAxis = d3.axisRight()\n .scale(this._yEnd)\n .ticks(0);\n },\n /**\n * Appends a background and adds mouse handlers\n */\n _appendBackground() {\n const background = this._background = d3.select(this._container)\n .select(\"svg\")\n .select(\"g\")\n .append(\"rect\")\n .attr(\"width\", this._svgWidth)\n .attr(\"height\", this._svgHeight)\n .style(\"fill\", \"none\")\n .style(\"stroke\", \"none\")\n .style(\"pointer-events\", \"all\")\n .on(\"mousemove.focusbox\", this._mousemoveHandler.bind(this))\n .on(\"mouseout.focusbox\", this._mouseoutHandler.bind(this))\n if (L.Browser.android) {\n background.on(\"touchstart.drag\", this._dragHandler.bind(this))\n .on(\"touchstart.drag\", this._dragStartHandler.bind(this))\n .on(\"touchstart.focusbox\", this._mousemoveHandler.bind(this));\n L.DomEvent.on(this._container, 'touchend', this._dragEndHandler, this);\n } else {\n background.on(\"mousemove.focusbox\", this._mousemoveHandler.bind(this))\n .on(\"mouseout.focusbox\", this._mouseoutHandler.bind(this))\n .on(\"mousedown.drag\", this._dragStartHandler.bind(this))\n .on(\"mousemove.drag\", this._dragHandler.bind(this));\n L.DomEvent.on(this._container, 'mouseup', this._dragEndHandler, this);\n }\n },\n /**\n * Appends a grid to the graph\n */\n _appendGrid() {\n this._svg.append(\"g\")\n .attr(\"class\", \"grid\")\n .attr(\"transform\", \"translate(0,\" + this._svgHeight + \")\")\n .call(this._make_x_axis()\n .tickSize(-this._svgHeight, 0, 0)\n .tickFormat(\"\"));\n this._svg.append(\"g\")\n .attr(\"class\", \"grid\")\n .call(this._make_y_axis()\n .tickSize(-this._svgWidth, 0, 0)\n .ticks(5)\n .tickFormat(\"\"));\n this._svg.append('g')\n .attr(\"transform\", \"translate(0,\" + this._svgHeight + \")\")\n .attr('class', 'x axis')\n .call(this._xAxis);\n this._svg.append('g')\n .attr(\"transform\", \"translate(-2,0)\")\n .attr('class', 'y axis')\n .call(this._yAxis);\n },\n /**\n * Appends the areas to the graph\n */\n _appendAreas(block, idx, eleIdx) {\n const c = this._profile.blocks[idx].attributes[eleIdx].color\n const self = this\n const area = this._area = d3.area().x(d => {\n const xDiagonalCoordinate = self._x(d.position)\n d.xDiagonalCoordinate = xDiagonalCoordinate\n return xDiagonalCoordinate\n }).y0(this._svgHeight).y1(d => self._y(d.altitude)).curve(d3.curveLinear)\n this._areapath = this._svg.append(\"path\")\n .attr(\"class\", \"area\");\n this._areapath.datum(block)\n .attr(\"d\", this._area)\n .attr(\"stroke\", c)\n .style(\"fill\", c)\n .style(\"pointer-events\", \"none\");\n },\n // grid lines in x axis function\n _make_x_axis() {\n return d3.axisBottom()\n .scale(this._x);\n },\n // grid lines in y axis function\n _make_y_axis() {\n return d3.axisLeft()\n .scale(this._y);\n },\n /**\n * Appends a selection box for different blocks\n */\n _createSelectionBox() {\n const self = this\n const svg = d3.select(this._container).select(\"svg\")\n const margin = this._margin, width = this._width - this._margin.left - this._margin.right,\n height = this._height - this._margin.top - this._margin.bottom\n const jsonTriangles = [\n {\n \"x\": width - 50,\n \"y\": height + 48,\n \"color\": \"#000\",\n \"type\": d3.symbolTriangle,\n \"id\": \"leftArrowSelection\",\n \"angle\": -360\n }, {\n \"x\": width - 35,\n \"y\": height + 45,\n \"color\": \"#000\",\n \"type\": d3.symbolTriangle,\n \"id\": \"rightArrowSelection\",\n \"angle\": 180\n }\n ]\n const selectionSign = svg.selectAll(\".select-symbol\").data(jsonTriangles).enter().append(\"path\").\n attr(\"class\", \"select-symbol\").attr(\"d\", d3.symbol().type(d => d.type)).attr(\"transform\", d => \"translate(\" + d.x + \",\" + d.y + \") rotate(\" + d.angle + \")\").attr(\"id\", d => d.id).style(\"fill\", d => d.color).on(\"click\", d => {\n if (d.id === \"rightArrowSelection\") arrowRight()\n if (d.id === \"leftArrowSelection\") arrowLeft()\n })\n const chooseSelection = (id) => {\n const type = self._profile.blocks[id].info\n const data = [\n {\n \"selection\": type.text\n }\n ]\n if (self._selectionText) self._selectionText.remove();\n self._selectionText = svg.selectAll('selection_text')\n .data(data)\n .enter()\n .append('text')\n .attr(\"x\", width - 20)\n .attr(\"y\", height + 50)\n .text(d => d.selection)\n .attr(\"class\", \"select-info\")\n .attr(\"id\", \"selectionText\")\n }\n const length = this._profile.blocks.length\n const id = this._selectedOption\n\n chooseSelection(id);\n\n let arrowRight = () => {\n let idx = self._selectedOption += 1\n if (idx === self._profile.blocks.length) {\n self._selectedOption = idx = 0\n }\n chooseSelection(idx)\n self._removeChart()\n self._removeMarkedSegmentsOnMap()\n self._createChart(idx)\n }\n\n let arrowLeft = () => {\n let idx = self._selectedOption -= 1\n if (idx === -1) {\n self._selectedOption = idx = self._profile.blocks.length - 1\n }\n chooseSelection(idx)\n self._removeChart()\n self._removeMarkedSegmentsOnMap()\n self._createChart(idx)\n }\n },\n /**\n * Creates and appends legend to chart\n */\n _createLegend() {\n const self = this\n const data = []\n if (this._profile.blocks.length > 0) {\n for (let item in this._profile.blocks[this._selectedOption].legend) {\n data.push(this._profile.blocks[this._selectedOption].legend[item]);\n }\n }\n const margin = this._margin, width = this._width - this._margin.left - this._margin.right,\n height = this._height - this._margin.top - this._margin.bottom\n const leg = [\n {\n \"text\": this._getTranslation(\"legend\")\n }\n ]\n const legendRectSize = 7\n const legendSpacing = 7\n const legend = this._svg.selectAll(\".hlegend-hover\").data(data).enter().append(\"g\").attr(\"class\", \"legend\").\n style(\"display\", \"none\").attr(\"transform\", (d, i) => {\n const height = legendRectSize + legendSpacing\n const offset = height * 2\n const horizontal = legendRectSize - 15\n const vertical = i * height - offset\n return \"translate(\" + horizontal + \",\" + vertical + \")\"\n })\n legend.append('rect')\n .attr('class', 'legend-rect')\n .attr('x', 15)\n .attr('y', 6 * 6)\n .attr('width', 6)\n .style('stroke', 'black')\n .attr('height', 6)\n .style('fill', (d, i) => d.color);\n legend.append('text')\n .attr('class', 'legend-text')\n .attr('x', 30)\n .attr('y', 6 * 7)\n .text((d, i) => {\n const textProp = d.text\n self._boxBoundY = (height - (2 * height / 3) + 7) * i;\n return textProp;\n });\n let legendHover = this._svg.selectAll('.legend-hover')\n .data(leg)\n .enter()\n .append('g')\n .attr('class', 'legend-hover');\n legendHover.append('text')\n .attr('class', 'legend-menu')\n .attr(\"class\", \"no-select\")\n .attr('x', 15)\n .attr('y', height + 40)\n .text((d, i) => d.text)\n .on('mouseover', () => {\n d3.select('.legend-box')\n .style(\"display\", \"block\");\n d3.selectAll('.legend')\n .style(\"display\", \"block\");\n })\n .on('mouseleave', () => {\n d3.select('.legend-box')\n .style(\"display\", \"none\");\n d3.selectAll('.legend')\n .style(\"display\", \"none\");\n });\n }, /**\n * calculates the margins of boxes\n * @param {String} className: name of the class\n * @return {array} borders: number of text lines, widest range of text\n */\n _dynamicBoxSize(className) {\n const cnt = d3.selectAll(className).nodes().length\n const widths = []\n for (let i = 0; i < cnt; i++) {\n widths.push(d3.selectAll(className)\n .nodes()[i].getBoundingClientRect()\n .width);\n }\n const maxWidth = d3.max(widths)\n return [cnt, maxWidth];\n },\n /**\n * Creates top border line on graph\n */\n _createBorderTopLine() {\n const self = this\n const data = this._areasFlattended\n const borderTopLine = d3.line()\n .x(d => {\n const x = self._x\n return x(d.position)\n })\n .y(d => {\n const y = self._y\n return y(d.altitude)\n })\n .curve(d3.curveBasis)\n this._svg.append(\"svg:path\")\n .attr(\"d\", borderTopLine(data))\n .attr('class', 'border-top');\n },\n /*\n * Handles the mouseout event when the mouse leaves the background\n */\n _mouseoutHandler() {\n for (let param of ['_focusLine', '_focus', '_pointG', '_mouseHeightFocus', '_mouseHeightFocusLabel'])\n if (this[param]) {\n this[param].style('display', 'none');\n }\n },\n /*\n * Handles the mouseover the map and displays distance and altitude level.\n * Since this does a lookup of the point on the graph\n * the closest to the given latlng on the provided event, it could be slow.\n */\n _mapMousemoveHandler(evt) {\n if (this._areasFlattended === false) {\n return;\n }\n // initialize the vars for the closest item calculation\n let closestItem = null;\n // large enough to be trumped by any point on the chart\n let closestDistance = 2 * Math.pow(100, 2);\n // consider a good enough match if the given point (lat and lng) is within\n // 1.1 meters of a point on the chart (there are 111,111 meters in a degree)\n const exactMatchRounding = 1.1 / 111111;\n\n for (i = 0; i < this._areasFlattended.length; i++) {\n let item = this._areasFlattended[i];\n let latDiff = evt.latlng.lat - item.latlng.lat;\n let lngDiff = evt.latlng.lng - item.latlng.lng;\n // first check for an almost exact match; it's simple and avoid further calculations\n if (Math.abs(latDiff) < exactMatchRounding && Math.abs(lngDiff) < exactMatchRounding) {\n this._internalMousemoveHandler(item);\n break;\n }\n // calculate the squared distance from the current to the given;\n // it's the squared distance, to avoid the expensive square root\n const distance = Math.pow(latDiff, 2) + Math.pow(lngDiff, 2);\n if (distance < closestDistance) {\n closestItem = item;\n closestDistance = distance;\n }\n }\n\n closestItem && this._internalMousemoveHandler(closestItem);\n },\n /*\n * Handles the mouseover the chart and displays distance and altitude level\n */\n _mousemoveHandler(d, i, ctx) {\n const coords = d3.mouse(this._svg.node());\n const item = this._areasFlattended[this._findItemForX(coords[0])];\n item && this._internalMousemoveHandler(item);\n },\n /*\n * Handles the mouseover, given the current item the mouse is over\n */\n _internalMousemoveHandler(item) {\n let areaLength\n const alt = item.altitude, dist = item.position,\n ll = item.latlng, areaIdx = item.areaIdx, type = item.type\n const boxWidth = this._dynamicBoxSize(\".focusbox text\")[1] + 10\n if (areaIdx === 0) {\n areaLength = this._profile.blocks[this._selectedOption].distances[areaIdx];\n } else {\n areaLength = this._profile.blocks[this._selectedOption].distances[areaIdx] - this._profile.blocks[this._selectedOption].distances[areaIdx - 1];\n }\n this._showMarker(ll, alt, type);\n this._distTspan.text(\" \" + dist.toFixed(1) + ' km');\n this._altTspan.text(\" \" + alt + ' m');\n this._areaTspan.text(\" \" + areaLength.toFixed(1) + ' km');\n this._typeTspan.text(\" \" + type);\n this._focusRect.attr(\"width\", boxWidth);\n this._focusLine.style(\"display\", \"block\")\n .attr('x1', this._x(dist))\n .attr('x2', this._x(dist));\n const xPositionBox = this._x(dist) - (boxWidth + 5)\n const totalWidth = this._width - this._margin.left - this._margin.right\n if (this._x(dist) + boxWidth < totalWidth) {\n this._focus.style(\"display\", \"initial\")\n .attr(\"transform\", \"translate(\" + this._x(dist) + \",\" + this._y(this._profile.yElevationMin) + \")\");\n }\n if (this._x(dist) + boxWidth > totalWidth) {\n this._focus.style(\"display\", \"initial\")\n .attr(\"transform\", \"translate(\" + xPositionBox + \",\" + this._y(this._profile.yElevationMin) + \")\");\n }\n },\n /*\n * Finds a data entry for a given x-coordinate of the diagram\n */\n _findItemForX(x) {\n const bisect = d3.bisector(d => d.position).left\n const xInvert = this._x.invert(x)\n return bisect(this._areasFlattended, xInvert);\n },\n /*\n * Finds data entries above a given y-elevation value and returns geo-coordinates\n */\n _findCoordsForY(y) {\n let bisect = (b, yInvert) => {\n //save indexes of elevation values above the horizontal line\n const list = []\n for (let i = 0; i < b.length; i++) {\n if (b[i].altitude >= yInvert) {\n list.push(i);\n }\n }\n //split index list into coherent blocks of coordinates\n const newList = []\n let start = 0\n for (let j = 0; j < list.length - 1; j++) {\n if (list[j + 1] !== list[j] + 1) {\n newList.push(list.slice(start, j + 1));\n start = j + 1;\n }\n }\n newList.push(list.slice(start, list.length));\n //get lat lon coordinates based on indexes\n for (let k = 0; k < newList.length; k++) {\n for (let l = 0; l < newList[k].length; l++) {\n newList[k][l] = b[newList[k][l]].latlng;\n }\n }\n return newList;\n }\n\n const yInvert = this._y.invert(y)\n return bisect(this._areasFlattended, yInvert);\n },\n /*\n * Checks the user passed translations, if they don't exist, fallback to the default translations\n */\n _getTranslation(key) {\n if(this.options.translation[key])\n return this.options.translation[key];\n if(this._defaultTranslation[key])\n return this._defaultTranslation[key];\n console.error(\"Unexpected error when looking up the translation for \"+key);\n return 'No translation found';\n }\n});\nL.control.heightgraph = function(options) {\n return new L.Control.Heightgraph(options)\n}\n"],"file":"L.Control.Heightgraph.js"} \ No newline at end of file +{"version":3,"file":"L.Control.Heightgraph.js","sources":["../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/selection/select.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/data.js","../node_modules/d3-selection/src/selection/exit.js","../node_modules/d3-selection/src/selection/join.js","../node_modules/d3-selection/src/selection/merge.js","../node_modules/d3-selection/src/selection/order.js","../node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-selection/src/selection/call.js","../node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-selection/src/selection/node.js","../node_modules/d3-selection/src/selection/size.js","../node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-selection/src/selection/each.js","../node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/d3-selection/src/selection/property.js","../node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-selection/src/selection/text.js","../node_modules/d3-selection/src/selection/html.js","../node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-selection/src/selection/append.js","../node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-selection/src/selection/on.js","../node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-selection/src/selection/index.js","../node_modules/d3-selection/src/select.js","../node_modules/d3-selection/src/sourceEvent.js","../node_modules/d3-selection/src/point.js","../node_modules/d3-selection/src/mouse.js","../node_modules/d3-selection/src/selectAll.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-timer/src/timer.js","../node_modules/d3-timer/src/timeout.js","../node_modules/d3-transition/src/transition/schedule.js","../node_modules/d3-transition/src/interrupt.js","../node_modules/d3-transition/src/selection/interrupt.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/d3-interpolate/src/transform/parse.js","../node_modules/d3-interpolate/src/transform/index.js","../node_modules/d3-transition/src/transition/tween.js","../node_modules/d3-transition/src/transition/interpolate.js","../node_modules/d3-transition/src/transition/attr.js","../node_modules/d3-transition/src/transition/attrTween.js","../node_modules/d3-transition/src/transition/delay.js","../node_modules/d3-transition/src/transition/duration.js","../node_modules/d3-transition/src/transition/ease.js","../node_modules/d3-transition/src/transition/filter.js","../node_modules/d3-transition/src/transition/merge.js","../node_modules/d3-transition/src/transition/on.js","../node_modules/d3-transition/src/transition/remove.js","../node_modules/d3-transition/src/transition/select.js","../node_modules/d3-transition/src/transition/selectAll.js","../node_modules/d3-transition/src/transition/selection.js","../node_modules/d3-transition/src/transition/style.js","../node_modules/d3-transition/src/transition/styleTween.js","../node_modules/d3-transition/src/transition/text.js","../node_modules/d3-transition/src/transition/textTween.js","../node_modules/d3-transition/src/transition/transition.js","../node_modules/d3-transition/src/transition/end.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-transition/src/selection/transition.js","../node_modules/d3-transition/src/selection/index.js","../node_modules/d3-selection-multi/src/selection/attrs.js","../node_modules/d3-selection-multi/src/selection/styles.js","../node_modules/d3-selection-multi/src/selection/properties.js","../node_modules/d3-selection-multi/src/transition/attrs.js","../node_modules/d3-selection-multi/src/transition/styles.js","../node_modules/d3-selection-multi/index.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/number.js","../node_modules/d3-array/src/bisect.js","../node_modules/internmap/src/index.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/max.js","../node_modules/d3-array/src/min.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-drag/node_modules/d3-selection/src/namespaces.js","../node_modules/d3-drag/node_modules/d3-selection/src/namespace.js","../node_modules/d3-drag/node_modules/d3-selection/src/creator.js","../node_modules/d3-drag/node_modules/d3-selection/src/selector.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/select.js","../node_modules/d3-drag/node_modules/d3-selection/src/array.js","../node_modules/d3-drag/node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-drag/node_modules/d3-selection/src/matcher.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/selectChild.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/selectChildren.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-drag/node_modules/d3-selection/src/constant.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/data.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/exit.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/join.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/merge.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/order.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/call.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/node.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/size.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/each.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-drag/node_modules/d3-selection/src/window.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/style.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/property.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/text.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/html.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/append.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/on.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/iterator.js","../node_modules/d3-drag/node_modules/d3-selection/src/selection/index.js","../node_modules/d3-drag/node_modules/d3-selection/src/select.js","../node_modules/d3-drag/node_modules/d3-selection/src/sourceEvent.js","../node_modules/d3-drag/node_modules/d3-selection/src/pointer.js","../node_modules/d3-drag/src/noevent.js","../node_modules/d3-drag/src/nodrag.js","../node_modules/d3-drag/src/constant.js","../node_modules/d3-drag/src/event.js","../node_modules/d3-drag/src/drag.js","../node_modules/d3-axis/src/identity.js","../node_modules/d3-axis/src/axis.js","../node_modules/d3-path/src/path.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-shape/src/math.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/curve/linear.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/line.js","../node_modules/d3-shape/src/area.js","../node_modules/d3-shape/src/symbol/circle.js","../node_modules/d3-shape/src/symbol/triangle.js","../node_modules/d3-shape/src/symbol.js","../node_modules/d3-shape/src/curve/basis.js","../node_modules/d3-scale-chromatic/src/colors.js","../node_modules/d3-scale-chromatic/src/categorical/category10.js","../node_modules/d3-scale-chromatic/src/categorical/Accent.js","../node_modules/d3-scale-chromatic/src/categorical/Dark2.js","../node_modules/d3-scale-chromatic/src/categorical/Paired.js","../node_modules/d3-scale-chromatic/src/categorical/Set2.js","../node_modules/d3-scale-chromatic/src/categorical/Set3.js","../src/L.Control.Heightgraph.js"],"sourcesContent":["export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport 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","import namespaces from \"./namespaces\";\n\nexport 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.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === 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\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(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 Selection(subgroups, this._parents);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(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 Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(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 Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function 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","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\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 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 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\nexport 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 = constant(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 Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export 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","import {Selection} from \"./index\";\n\nexport 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 Selection(merges, this._parents);\n}\n","export 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","import {Selection} from \"./index\";\n\nexport 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 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","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export 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","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export 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","import namespace from \"../namespace\";\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\nexport default function(name, value) {\n var fullname = namespace(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","export 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","import defaultView from \"../window\";\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\nexport 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\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function 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\nexport 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","function 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\nexport 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","function 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\nexport 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","function 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\nexport 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","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function 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\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","var filterEvents = {};\n\nexport var 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\nexport 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\nexport function 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","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(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\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function 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: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export 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","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","var 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\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function 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","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var 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\ndefine(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\nexport default function 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 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\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\nexport function 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\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, 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\nexport function 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\nexport function 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\ndefine(Hsl, hsl, 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","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\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\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(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 = colorRgb(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\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export 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\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function 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] = value(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","export 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","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport 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] = value(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","import number from \"./number.js\";\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\nexport 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: number(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","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport 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","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return 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 decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return 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 identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\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: number(xa, xb)}, {i: i - 2, x: number(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: number(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: number(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: number(xa, xb)}, {i: i - 2, x: number(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\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\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, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(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 Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\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 Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(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 schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(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 for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, 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 var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, 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 schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import {select} from \"d3-selection\";\n\nfunction attrsFunction(selection, map) {\n return selection.each(function() {\n var x = map.apply(this, arguments), s = select(this);\n for (var name in x) s.attr(name, x[name]);\n });\n}\n\nfunction attrsObject(selection, map) {\n for (var name in map) selection.attr(name, map[name]);\n return selection;\n}\n\nexport default function(map) {\n return (typeof map === \"function\" ? attrsFunction : attrsObject)(this, map);\n}\n","import {select} from \"d3-selection\";\n\nfunction stylesFunction(selection, map, priority) {\n return selection.each(function() {\n var x = map.apply(this, arguments), s = select(this);\n for (var name in x) s.style(name, x[name], priority);\n });\n}\n\nfunction stylesObject(selection, map, priority) {\n for (var name in map) selection.style(name, map[name], priority);\n return selection;\n}\n\nexport default function(map, priority) {\n return (typeof map === \"function\" ? stylesFunction : stylesObject)(this, map, priority == null ? \"\" : priority);\n}\n","import {select} from \"d3-selection\";\n\nfunction propertiesFunction(selection, map) {\n return selection.each(function() {\n var x = map.apply(this, arguments), s = select(this);\n for (var name in x) s.property(name, x[name]);\n });\n}\n\nfunction propertiesObject(selection, map) {\n for (var name in map) selection.property(name, map[name]);\n return selection;\n}\n\nexport default function(map) {\n return (typeof map === \"function\" ? propertiesFunction : propertiesObject)(this, map);\n}\n","import {select} from \"d3-selection\";\n\nfunction attrsFunction(transition, map) {\n return transition.each(function() {\n var x = map.apply(this, arguments), t = select(this).transition(transition);\n for (var name in x) t.attr(name, x[name]);\n });\n}\n\nfunction attrsObject(transition, map) {\n for (var name in map) transition.attr(name, map[name]);\n return transition;\n}\n\nexport default function(map) {\n return (typeof map === \"function\" ? attrsFunction : attrsObject)(this, map);\n}\n","import {select} from \"d3-selection\";\n\nfunction stylesFunction(transition, map, priority) {\n return transition.each(function() {\n var x = map.apply(this, arguments), t = select(this).transition(transition);\n for (var name in x) t.style(name, x[name], priority);\n });\n}\n\nfunction stylesObject(transition, map, priority) {\n for (var name in map) transition.style(name, map[name], priority);\n return transition;\n}\n\nexport default function(map, priority) {\n return (typeof map === \"function\" ? stylesFunction : stylesObject)(this, map, priority == null ? \"\" : priority);\n}\n","import {selection} from \"d3-selection\";\nimport {transition} from \"d3-transition\";\nimport selection_attrs from \"./src/selection/attrs\";\nimport selection_styles from \"./src/selection/styles\";\nimport selection_properties from \"./src/selection/properties\";\nimport transition_attrs from \"./src/transition/attrs\";\nimport transition_styles from \"./src/transition/styles\";\n\nselection.prototype.attrs = selection_attrs;\nselection.prototype.styles = selection_styles;\nselection.prototype.properties = selection_properties;\ntransition.prototype.attrs = transition_attrs;\ntransition.prototype.styles = transition_styles;\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function bisector(f) {\n let delta = f;\n let compare1 = f;\n let compare2 = f;\n\n if (f.length !== 2) {\n delta = (d, x) => f(d) - x;\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function ticks(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 let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function 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\nexport function 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","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export function 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\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), 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 initRange.apply(scale, arguments);\n\n return scale;\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var 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 = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function 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\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || 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), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : 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\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\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, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(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","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export 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","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function 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\nexport function 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","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport 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","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(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\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(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","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(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 : formatNumerals(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 = formatSpecifier(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[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[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 // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + 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 = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(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","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = 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 = precisionPrefix(step, value))) specifier.precision = precision;\n return 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 = 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 = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return 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 tickFormat(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 var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport 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","import namespaces from \"./namespaces.js\";\n\nexport 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.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === 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\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(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 Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(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 Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(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 Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function 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","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\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 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 = new Map,\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 = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(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 = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new 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.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(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 = arraylike(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 Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\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 Selection(merges, this._parents);\n}\n","export 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","import {Selection} from \"./index.js\";\n\nexport 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 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","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export 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","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export 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","import namespace from \"../namespace.js\";\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\nexport default function(name, value) {\n var fullname = namespace(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","export 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","import defaultView from \"../window.js\";\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\nexport 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\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function 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\nexport 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","function 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\nexport 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","function 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\nexport 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","function 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\nexport 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","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function 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\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\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.options);\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, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\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.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\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 for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(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\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\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]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\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 if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function(type, size) {\n var context = null;\n type = typeof type === \"function\" ? type : constant(type || circle);\n size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import { select, selectAll, mouse } from 'd3-selection'\nimport 'd3-selection-multi'\nimport { scaleOrdinal, scaleLinear } from 'd3-scale'\nimport { min as d3Min, max as d3Max, bisector } from 'd3-array'\nimport { drag } from 'd3-drag'\nimport { axisLeft, axisBottom } from 'd3-axis'\nimport { format } from 'd3-format'\nimport { curveBasis, curveLinear, line, area as d3Area, symbol, symbolTriangle } from 'd3-shape'\nimport {\n schemeAccent,\n schemeDark2,\n schemeSet2,\n schemeCategory10,\n schemeSet3,\n schemePaired\n} from 'd3-scale-chromatic'\n(function (factory, window) {\n\n // define an AMD module that relies on 'leaflet'\n if (typeof define === 'function' && define.amd) {\n define(['leaflet'], factory);\n\n // define a Common JS module that relies on 'leaflet'\n } else if (typeof exports === 'object') {\n if (typeof window !== 'undefined' && window.L) {\n module.exports = factory(L);\n } else {\n module.exports = factory(require('leaflet'));\n }\n }\n\n // attach your plugin to the global 'L' variable\n if (typeof window !== 'undefined' && window.L) {\n window.L.Control.Heightgraph = factory(L);\n }\n}(function (L) {\n L.Control.Heightgraph = L.Control.extend({\n options: {\n position: \"bottomright\",\n width: 800,\n height: 280,\n margins: {\n top: 10,\n right: 30,\n bottom: 55,\n left: 50\n },\n mappings: undefined,\n expand: true,\n expandControls: true,\n translation: {},\n expandCallback: undefined,\n chooseSelectionCallback: undefined,\n selectedAttributeIdx: 0,\n xTicks: undefined,\n yTicks: undefined,\n highlightStyle: undefined,\n graphStyle: undefined\n },\n _defaultTranslation: {\n distance: \"Distance\",\n elevation: \"Elevation\",\n segment_length: \"Segment length\",\n type: \"Type\",\n legend: \"Legend\"\n },\n _init_options() {\n this._margin = this.options.margins;\n this._width = this.options.width;\n this._height = this.options.height;\n this._mappings = this.options.mappings;\n this._svgWidth = this._width - this._margin.left - this._margin.right;\n this._svgHeight = this._height - this._margin.top - this._margin.bottom;\n this._highlightStyle = this.options.highlightStyle || { color: 'red' }\n this._graphStyle = this.options.graphStyle || {}\n this._dragCache = {}\n },\n onAdd(map) {\n let container = this._container = L.DomUtil.create(\"div\", \"heightgraph\")\n L.DomEvent.disableClickPropagation(container);\n if (this.options.expandControls) {\n let buttonContainer = this._button = L.DomUtil.create('div', \"heightgraph-toggle\", container);\n const link = L.DomUtil.create(\"a\", \"heightgraph-toggle-icon\", buttonContainer)\n const closeButton = this._closeButton = L.DomUtil.create(\"a\", \"heightgraph-close-icon\", container)\n }\n this._showState = false;\n this._initToggle();\n this._init_options();\n // Note: this._svg really contains the inside the \n this._svg = select(this._container).append(\"svg\").attr(\"class\", \"heightgraph-container\")\n .attr(\"width\", this._width)\n .attr(\"height\", this._height).append(\"g\")\n .attr(\"transform\", \"translate(\" + this._margin.left + \",\" + this._margin.top + \")\")\n if (this.options.expand) this._expand();\n return container;\n },\n onRemove(map) {\n this._removeMarkedSegmentsOnMap();\n this._container = null;\n this._svg = undefined;\n },\n /**\n * add Data from geoJson and call all functions\n * @param {Object} data\n */\n addData(data) {\n this._addData(data)\n }, /**\n * Internal function. Overloads public addData().\n * Call with resize = true when resizing instead of actually adding data.\n * TODO: this should be refactored to avoid calling addData on resize\n * @param data\n * @param resize\n * @private\n */\n _addData(data) {\n if (this._svg !== undefined) {\n this._svg.selectAll(\"*\")\n .remove();\n }\n if (!data || this.options.selectedAttributeIdx >= data.length) {\n this.options.selectedAttributeIdx = 0;\n }\n this._removeMarkedSegmentsOnMap();\n this._resetDrag(true);\n\n this._data = data;\n this._init_options();\n this._prepareData();\n this._calculateElevationBounds();\n this._appendScales();\n this._appendGrid();\n if (Object.keys(data).length !== 0) {\n this._createChart(this.options.selectedAttributeIdx);\n }\n this._createSelectionBox();\n },\n resize(size) {\n if (size.width)\n this.options.width = size.width;\n if (size.height)\n this.options.height = size.height;\n\n // Resize the along with its container\n select(this._container).selectAll(\"svg\")\n .attr(\"width\", this.options.width)\n .attr(\"height\", this.options.height);\n\n // Re-add the data to redraw the chart.\n this._addData(this._data);\n },\n _initToggle() {\n if (!L.Browser.touch) {\n L.DomEvent.disableClickPropagation(this._container);\n } else {\n L.DomEvent.on(this._container, 'click', L.DomEvent.stopPropagation);\n }\n if (this.options.expandControls) {\n L.DomEvent.on(this._button, 'click', this._expand, this);\n L.DomEvent.on(this._closeButton, 'click', this._expand, this);\n }\n },\n _dragHandler() {\n //we don´t want map events to occur here\n if (typeof event !== 'undefined') {\n event.preventDefault();\n event.stopPropagation();\n }\n this._gotDragged = true;\n this._drawDragRectangle();\n },\n /**\n * Draws the currently dragged rectangle over the chart.\n */\n _drawDragRectangle() {\n if (!this._dragStartCoords) {\n return;\n }\n const dragEndCoords = this._dragCurrentCoords = this._dragCache.end = mouse(this._background.node())\n const x1 = Math.min(this._dragStartCoords[0], dragEndCoords[0]),\n x2 = Math.max(this._dragStartCoords[0], dragEndCoords[0])\n if (!this._dragRectangle && !this._dragRectangleG) {\n const g = select(this._container).select(\"svg\").select(\"g\")\n this._dragRectangleG = g.append(\"g\");\n this._dragRectangle = this._dragRectangleG.append(\"rect\")\n .attr(\"width\", x2 - x1)\n .attr(\"height\", this._svgHeight)\n .attr(\"x\", x1)\n .attr('class', 'mouse-drag')\n .style(\"fill\", \"grey\")\n .style(\"opacity\", 0.5)\n .style(\"pointer-events\", \"none\");\n } else {\n this._dragRectangle.attr(\"width\", x2 - x1)\n .attr(\"x\", x1);\n }\n },\n /**\n * Removes the drag rectangle\n * @param {boolean} skipMapFitBounds - whether to zoom the map back to the total extent of the data\n */\n _resetDrag(skipMapFitBounds) {\n if (this._dragRectangleG) {\n this._dragRectangleG.remove();\n this._dragRectangleG = null;\n this._dragRectangle = null;\n\n if (skipMapFitBounds !== true) {\n // potential performance improvement:\n // we could cache the full extend when addData() is called\n let fullExtent = this._calculateFullExtent(this._areasFlattended);\n if (fullExtent) this._map.fitBounds(fullExtent);\n }\n }\n },\n /**\n * Handles end of drag operations. Zooms the map to the selected items extent.\n */\n _dragEndHandler() {\n if (!this._dragStartCoords || !this._gotDragged) {\n this._dragStartCoords = null;\n this._gotDragged = false;\n this._resetDrag();\n return;\n }\n const item1 = this._findItemForX(this._dragStartCoords[0]),\n item2 = this._findItemForX(this._dragCurrentCoords[0])\n this._fitSection(item1, item2);\n this._dragStartCoords = null;\n this._gotDragged = false;\n },\n _dragStartHandler() {\n event.preventDefault();\n event.stopPropagation();\n this._gotDragged = false;\n this._dragStartCoords = this._dragCache.start = mouse(this._background.node());\n },\n /*\n * Calculates the full extent of the data array\n */\n _calculateFullExtent(data) {\n if (!data || data.length < 1) {\n return null;\n }\n let full_extent = new L.latLngBounds(data[0].latlng, data[0].latlng);\n data.forEach((item) => {\n if (!full_extent.contains(item.latlng)) {\n full_extent.extend(item.latlng);\n }\n });\n return full_extent;\n },\n /**\n * Make the map fit the route section between given indexes.\n */\n _fitSection(index1, index2) {\n const start = Math.min(index1, index2), end = Math.max(index1, index2)\n let ext\n if (start !== end) {\n ext = this._calculateFullExtent(this._areasFlattended.slice(start, end + 1));\n } else if (this._areasFlattended.length > 0) {\n ext = [this._areasFlattended[start].latlng, this._areasFlattended[end].latlng];\n }\n if (ext) this._map.fitBounds(ext);\n },\n /**\n * Expand container when button clicked and shrink when close-Button clicked\n */\n _expand() {\n if (this.options.expandControls !== true) {\n // always expand, never collapse\n this._showState = false;\n }\n if (!this._showState) {\n select(this._button)\n .style(\"display\", \"none\");\n select(this._container)\n .selectAll('svg')\n .style(\"display\", \"block\");\n select(this._closeButton)\n .style(\"display\", \"block\");\n } else {\n select(this._button)\n .style(\"display\", \"block\");\n select(this._container)\n .selectAll('svg')\n .style(\"display\", \"none\");\n select(this._closeButton)\n .style(\"display\", \"none\");\n }\n this._showState = !this._showState;\n if (typeof this.options.expandCallback === \"function\") {\n this.options.expandCallback(this._showState);\n }\n },\n /**\n * Removes the svg elements from the d3 chart\n */\n _removeChart() {\n if (this._svg !== undefined) {\n // remove areas\n this._svg.selectAll(\"path.area\")\n .remove();\n // remove top border\n this._svg.selectAll(\"path.border-top\")\n .remove();\n // remove legend\n this._svg.selectAll(\".legend\")\n .remove();\n // remove horizontal Line\n this._svg.selectAll(\".lineSelection\")\n .remove();\n this._svg.selectAll(\".horizontalLine\")\n .remove();\n this._svg.selectAll(\".horizontalLineText\")\n .remove();\n }\n },\n /**\n * Creates a random int between 0 and max\n */\n _randomNumber: max => Math.round((Math.random() * (max - 0))),\n _d3ColorCategorical: [\n schemeAccent,\n schemeDark2,\n schemeSet2,\n schemeCategory10,\n schemeSet3,\n schemePaired\n ], /**\n * Prepares the data needed for the height graph\n */\n _prepareData() {\n this._coordinates = [];\n this._elevations = [];\n this._cumulatedDistances = [];\n this._cumulatedDistances.push(0);\n this._categories = [];\n const data = this._data\n let colorScale\n if (this._mappings === undefined) {\n const randomNumber = this._randomNumber(this._d3ColorCategorical.length - 1)\n colorScale = scaleOrdinal(this._d3ColorCategorical[randomNumber]);\n }\n for (let y = 0; y < data.length; y++) {\n let cumDistance = 0\n this._categories[y] = {\n info: {\n id: y,\n text: data[y].properties.label || data[y].properties.summary\n },\n distances: [],\n attributes: [],\n geometries: [],\n legend: {}\n };\n let i, cnt = 0\n const usedColors = {}\n const isMappingFunction = this._mappings !== undefined && typeof this._mappings[data[y].properties.summary] === 'function';\n for (i = 0; i < data[y].features.length; i++) {\n // data is redundant in every element of data which is why we collect it once\n let altitude, ptA, ptB, ptDistance\n const geometry = []\n const coordsLength = data[y].features[i].geometry.coordinates.length\n // save attribute types related to blocks\n const attributeType = data[y].features[i].properties.attributeType\n // check if mappings are defined, otherwise random colors\n let text, color\n if (this._mappings === undefined) {\n if (attributeType in usedColors) {\n text = attributeType;\n color = usedColors[attributeType];\n } else {\n text = attributeType;\n color = colorScale(i);\n usedColors[attributeType] = color;\n }\n } else {\n if (isMappingFunction) {\n const result = this._mappings[data[y].properties.summary](attributeType);\n text = result.text;\n color = result.color;\n } else {\n text = this._mappings[data[y].properties.summary][attributeType].text;\n color = this._mappings[data[y].properties.summary][attributeType].color;\n }\n }\n const attribute = {\n type: attributeType, text: text, color: color\n }\n this._categories[y].attributes.push(attribute);\n // add to legend\n if (!(attributeType in this._categories[y].legend)) {\n this._categories[y].legend[attributeType] = attribute;\n }\n for (let j = 0; j < coordsLength; j++) {\n ptA = new L.LatLng(data[y].features[i].geometry.coordinates[j][1], data[y].features[i].geometry.coordinates[j][0]);\n altitude = data[y].features[i].geometry.coordinates[j][2];\n // add elevations, coordinates and point distances only once\n // last point in feature is first of next which is why we have to juggle with indices\n if (j < coordsLength - 1) {\n ptB = new L.LatLng(data[y].features[i].geometry.coordinates[j + 1][1], data[y].features[i].geometry.coordinates[j + 1][0]);\n ptDistance = ptA.distanceTo(ptB) / 1000;\n // calculate distances of specific block\n cumDistance += ptDistance;\n if (y === 0) {\n this._elevations.push(altitude);\n this._coordinates.push(ptA);\n this._cumulatedDistances.push(cumDistance);\n }\n cnt += 1;\n } else if (j === coordsLength - 1 && i === data[y].features.length - 1) {\n if (y === 0) {\n this._elevations.push(altitude);\n this._coordinates.push(ptB);\n }\n cnt += 1;\n }\n // save the position which corresponds to the distance along the route.\n let position\n if (j === coordsLength - 1 && i < data[y].features.length - 1) {\n position = this._cumulatedDistances[cnt];\n } else {\n position = this._cumulatedDistances[cnt - 1];\n }\n geometry.push({\n altitude: altitude,\n position: position,\n x: ptA.lng,\n y: ptA.lat,\n latlng: ptA,\n type: text,\n areaIdx: i\n });\n }\n this._categories[y].distances.push(cumDistance);\n this._categories[y].geometries.push(geometry);\n }\n if (y === data.length - 1) {\n this._totalDistance = cumDistance;\n }\n }\n },\n /**\n * calculates minimum and maximum values for the elevation scale drawn with d3\n */\n _calculateElevationBounds() {\n const max = d3Max(this._elevations)\n const min = d3Min(this._elevations)\n const range = max - min\n this._elevationBounds = {\n min: range < 10 ? min - 10 : min - 0.1 * range,\n max: range < 10 ? max + 10 : max + 0.1 * range\n }\n },\n /**\n * Creates a marker on the map while hovering\n * @param {Object} ll: actual coordinates of the route\n * @param {Number} height: height as float\n * @param {string} type: type of element\n */\n _showMapMarker(ll, height, type) {\n const layerPoint = this._map.latLngToLayerPoint(ll)\n const normalizedY = layerPoint.y - 75\n if (!this._mouseHeightFocus) {\n const heightG = select(\".leaflet-overlay-pane svg\").append(\"g\")\n this._mouseHeightFocus = heightG.append('svg:line')\n .attr('class', 'height-focus line')\n .attr('x2', '0')\n .attr('y2', '0')\n .attr('x1', '0')\n .attr('y1', '0');\n this._mouseHeightFocusLabel = heightG.append(\"g\")\n .attr('class', 'height-focus label');\n this._mouseHeightFocusLabelRect = this._mouseHeightFocusLabel.append(\"rect\")\n .attr('class', 'bBox');\n this._mouseHeightFocusLabelTextElev = this._mouseHeightFocusLabel.append(\"text\")\n .attr('class', 'tspan');\n this._mouseHeightFocusLabelTextType = this._mouseHeightFocusLabel.append(\"text\")\n .attr('class', 'tspan');\n const pointG = this._pointG = heightG.append(\"g\").attr(\"class\", \"height-focus circle\")\n pointG.append(\"svg:circle\")\n .attr(\"r\", 5)\n .attr(\"cx\", 0)\n .attr(\"cy\", 0)\n .attr(\"class\", \"height-focus circle-lower\");\n }\n this._mouseHeightFocusLabel.style(\"display\", \"block\");\n this._mouseHeightFocus.attr(\"x1\", layerPoint.x)\n .attr(\"x2\", layerPoint.x)\n .attr(\"y1\", layerPoint.y)\n .attr(\"y2\", normalizedY)\n .style(\"display\", \"block\");\n this._pointG.attr(\"transform\", \"translate(\" + layerPoint.x + \",\" + layerPoint.y + \")\")\n .style(\"display\", \"block\");\n this._mouseHeightFocusLabelRect.attr(\"x\", layerPoint.x + 3)\n .attr(\"y\", normalizedY)\n .attr(\"class\", 'bBox');\n this._mouseHeightFocusLabelTextElev.attr(\"x\", layerPoint.x + 5)\n .attr(\"y\", normalizedY + 12)\n .text(height + \" m\")\n .attr(\"class\", \"tspan mouse-height-box-text\");\n this._mouseHeightFocusLabelTextType.attr(\"x\", layerPoint.x + 5)\n .attr(\"y\", normalizedY + 24)\n .text(type)\n .attr(\"class\", \"tspan mouse-height-box-text\");\n const maxWidth = this._dynamicBoxSize(\"text.tspan\")[1]\n // box size should change for profile none (no type)\n const maxHeight = (type === \"\") ? 12 + 6 : 2 * 12 + 6\n selectAll('.bBox')\n .attr(\"width\", maxWidth + 10)\n .attr(\"height\", maxHeight);\n },\n /**\n * Creates the elevation profile\n */\n _createChart(idx) {\n let areas = this._categories.length === 0\n ? []\n : this._categories[idx].geometries;\n this._areasFlattended = [].concat.apply([], areas);\n for (let i = 0; i < areas.length; i++) {\n this._appendAreas(areas[i], idx, i);\n }\n this._createFocus();\n this._appendBackground();\n this._createBorderTopLine();\n this._createLegend();\n this._createHorizontalLine();\n },\n /**\n * Creates focus Line and focus box while hovering\n */\n _createFocus() {\n const boxPosition = this._elevationBounds.min\n const textDistance = 15\n if (this._focus) {\n this._focus.remove();\n this._focusLineGroup.remove();\n }\n this._focus = this._svg.append(\"g\")\n .attr(\"class\", \"focusbox\");\n // background box\n this._focusRect = this._focus.append(\"rect\")\n .attr(\"x\", 3)\n .attr(\"y\", -this._y(boxPosition))\n .attr(\"display\", \"none\");\n // text line 1\n this._focusDistance = this._focus.append(\"text\")\n .attr(\"x\", 7)\n .attr(\"y\", -this._y(boxPosition) + textDistance)\n .attr(\"id\", \"heightgraph.distance\")\n .text(this._getTranslation('distance') + ':');\n // text line 2\n this._focusHeight = this._focus.append(\"text\")\n .attr(\"x\", 7)\n .attr(\"y\", -this._y(boxPosition) + 2 * textDistance)\n .attr(\"id\", \"heightgraph.height\")\n .text(this._getTranslation('elevation') + ':');\n // text line 3\n this._focusBlockDistance = this._focus.append(\"text\")\n .attr(\"x\", 7)\n .attr(\"y\", -this._y(boxPosition) + 3 * textDistance)\n .attr(\"id\", \"heightgraph.blockdistance\")\n .text(this._getTranslation('segment_length') + ':');\n // text line 4\n this._focusType = this._focus.append(\"text\")\n .attr(\"x\", 7)\n .attr(\"y\", -this._y(boxPosition) + 4 * textDistance)\n .attr(\"id\", \"heightgraph.type\")\n .text(this._getTranslation('type') + ':');\n this._areaTspan = this._focusBlockDistance.append('tspan')\n .attr(\"class\", \"tspan\");\n this._typeTspan = this._focusType.append('tspan')\n .attr(\"class\", \"tspan\");\n const height = this._dynamicBoxSize(\".focusbox text\")[0]\n selectAll('.focusbox rect')\n .attr(\"height\", height * textDistance + (textDistance / 2))\n .attr(\"display\", \"block\");\n this._focusLineGroup = this._svg.append(\"g\")\n .attr(\"class\", \"focusLine\");\n this._focusLine = this._focusLineGroup.append(\"line\")\n .attr(\"y1\", 0)\n .attr(\"y2\", this._y(this._elevationBounds.min));\n this._distTspan = this._focusDistance.append('tspan')\n .attr(\"class\", \"tspan\");\n this._altTspan = this._focusHeight.append('tspan')\n .attr(\"class\", \"tspan\");\n },\n /**\n * Creates horizontal Line for dragging\n */\n _createHorizontalLine() {\n const self = this\n this._horizontalLine = this._svg.append(\"line\")\n .attr(\"class\", \"horizontalLine\")\n .attr(\"x1\", 0)\n .attr(\"x2\", this._width - this._margin.left - this._margin.right)\n .attr(\"y1\", this._y(this._elevationBounds.min))\n .attr(\"y2\", this._y(this._elevationBounds.min))\n .style(\"stroke\", \"black\");\n this._elevationValueText = this._svg.append(\"text\")\n .attr(\"class\", \"horizontalLineText\")\n .attr(\"x\", this._width - this._margin.left - this._margin.right - 20)\n .attr(\"y\", this._y(this._elevationBounds.min) - 10)\n .attr(\"fill\", \"black\");\n //triangle symbol as controller\n const jsonTriangle = [\n {\n \"x\": this._width - this._margin.left - this._margin.right + 7,\n \"y\": this._y(this._elevationBounds.min),\n \"color\": \"black\",\n \"type\": symbolTriangle,\n \"angle\": -90,\n \"size\": 100\n }\n ]\n const dragstart = function (d) {\n select(this).raise().classed(\"active\", true)\n select(\".horizontalLine\").raise().classed(\"active\", true)\n }\n\n const dragged = function (d) {\n const maxY = self._svgHeight\n let eventY = mouse(self._container)[1] - 10\n select(this)\n .attr(\"transform\", d => \"translate(\" + d.x + \",\" + (eventY < 0 ? 0\n : eventY > maxY ? maxY\n : eventY) + \") rotate(\" + d.angle + \")\");\n select(\".horizontalLine\")\n .attr(\"y1\", (eventY < 0 ? 0 : (eventY > maxY ? maxY : eventY)))\n .attr(\"y2\", (eventY < 0 ? 0 : (eventY > maxY ? maxY : eventY)));\n if (eventY >= maxY) {\n self._highlightedCoords = [];\n } else {\n self._highlightedCoords = self._findCoordsForY(eventY);\n }\n select(\".horizontalLineText\")\n .attr(\"y\", (eventY <= 10 ? 0 : (eventY > maxY ? maxY - 10 : eventY - 10)))\n .text(format(\".0f\")(self._y.invert((eventY < 0 ? 0 : (eventY > maxY ? maxY : eventY)))) + \" m\");\n self._removeMarkedSegmentsOnMap();\n self._markSegmentsOnMap(self._highlightedCoords);\n }\n\n const dragend = function (d) {\n select(this)\n .classed(\"active\", false);\n select(\".horizontalLine\")\n .classed(\"active\", false);\n self._removeMarkedSegmentsOnMap();\n self._markSegmentsOnMap(self._highlightedCoords);\n }\n\n const horizontalDrag = this._svg.selectAll(\".horizontal-symbol\").data(jsonTriangle).enter().append(\"path\").\n attr(\"class\", \"lineSelection\")\n .attr(\"d\", symbol().type(d => d.type).size(d => d.size))\n .attr(\"transform\", d => \"translate(\" + d.x + \",\" + d.y + \") rotate(\" + d.angle + \")\")\n .attr(\"id\", d => d.id)\n .style(\"fill\", d => d.color)\n .call(drag().on(\"start\", dragstart).on(\"drag\", dragged).on(\"end\", dragend))\n },\n /**\n * Highlights segments on the map above given elevation value\n */\n _markSegmentsOnMap(coords) {\n if (coords) {\n if (coords.length > 1) {\n // some other leaflet plugins can't deal with multi-Polylines very well\n // therefore multiple single polylines are used here\n this._markedSegments = L.featureGroup()\n for (let linePart of coords) {\n L.polyline(\n linePart,\n { ...this._highlightStyle, ...{ interactive: false } }\n ).addTo(this._markedSegments)\n }\n this._markedSegments.addTo(this._map)\n .bringToFront()\n } else {\n this._markedSegments = L.polyline(coords, this._highlightStyle).addTo(this._map);\n }\n }\n },\n /**\n * Remove the highlighted segments from the map\n */\n _removeMarkedSegmentsOnMap() {\n if (this._markedSegments !== undefined) {\n this._map.removeLayer(this._markedSegments);\n }\n },\n /**\n * Defines the ranges and format of x- and y- scales and appends them\n */\n _appendScales() {\n const shortDist = Boolean(this._totalDistance <= 10)\n this._x = scaleLinear()\n .range([0, this._svgWidth]);\n this._y = scaleLinear()\n .range([this._svgHeight, 0]);\n this._x.domain([0, this._totalDistance]);\n this._y.domain([this._elevationBounds.min, this._elevationBounds.max]);\n this._xAxis = axisBottom()\n .scale(this._x)\n if (shortDist === true) {\n this._xAxis.tickFormat(d => format(\".2f\")(d) + \" km\");\n } else {\n this._xAxis.tickFormat(d => format(\".0f\")(d) + \" km\");\n }\n this._xAxis.ticks(this.options.xTicks ? Math.pow(2, this.options.xTicks) : Math.round(this._svgWidth / 75), \"s\");\n this._yAxis = axisLeft()\n .scale(this._y)\n .tickFormat(d => d + \" m\");\n this._yAxis.ticks(this.options.yTicks ? Math.pow(2, this.options.yTicks) : Math.round(this._svgHeight / 30), \"s\");\n },\n /**\n * Appends a background and adds mouse handlers\n */\n _appendBackground() {\n const background = this._background = select(this._container)\n .select(\"svg\")\n .select(\"g\")\n .append(\"rect\")\n .attr(\"width\", this._svgWidth)\n .attr(\"height\", this._svgHeight)\n .style(\"fill\", \"none\")\n .style(\"stroke\", \"none\")\n .style(\"pointer-events\", \"all\")\n .on(\"mousemove.focusbox\", this._mousemoveHandler.bind(this))\n .on(\"mouseout.focusbox\", this._mouseoutHandler.bind(this))\n if (L.Browser.android) {\n background.on(\"touchstart.drag\", this._dragHandler.bind(this))\n .on(\"touchstart.drag\", this._dragStartHandler.bind(this))\n .on(\"touchstart.focusbox\", this._mousemoveHandler.bind(this));\n L.DomEvent.on(this._container, 'touchend', this._dragEndHandler, this);\n } else {\n background.on(\"mousemove.focusbox\", this._mousemoveHandler.bind(this))\n .on(\"mouseout.focusbox\", this._mouseoutHandler.bind(this))\n .on(\"mousedown.drag\", this._dragStartHandler.bind(this))\n .on(\"mousemove.drag\", this._dragHandler.bind(this));\n L.DomEvent.on(this._container, 'mouseup', this._dragEndHandler, this);\n }\n },\n /**\n * Appends a grid to the graph\n */\n _appendGrid() {\n this._svg.append(\"g\")\n .attr(\"class\", \"grid\")\n .attr(\"transform\", \"translate(0,\" + this._svgHeight + \")\")\n .call(this._make_x_axis()\n .tickSize(-this._svgHeight, 0, 0)\n .ticks(Math.round(this._svgWidth / 75))\n .tickFormat(\"\"));\n this._svg.append(\"g\")\n .attr(\"class\", \"grid\")\n .call(this._make_y_axis()\n .tickSize(-this._svgWidth, 0, 0)\n .ticks(Math.round(this._svgHeight / 30))\n .tickFormat(\"\"));\n this._svg.append('g')\n .attr(\"transform\", \"translate(0,\" + this._svgHeight + \")\")\n .attr('class', 'x axis')\n .call(this._xAxis);\n this._svg.append('g')\n .attr(\"transform\", \"translate(-2,0)\")\n .attr('class', 'y axis')\n .call(this._yAxis);\n },\n /**\n * Appends the areas to the graph\n */\n _appendAreas(block, idx, eleIdx) {\n const c = this._categories[idx].attributes[eleIdx].color\n const self = this\n const area = this._area = d3Area().x(d => {\n const xDiagonalCoordinate = self._x(d.position)\n d.xDiagonalCoordinate = xDiagonalCoordinate\n return xDiagonalCoordinate\n }).y0(this._svgHeight).y1(d => self._y(d.altitude)).curve(curveLinear)\n this._areapath = this._svg.append(\"path\")\n .attr(\"class\", \"area\");\n this._areapath.datum(block)\n .attr(\"d\", this._area)\n .attr(\"stroke\", c)\n .styles(this._graphStyle)\n .style(\"fill\", c)\n .style(\"pointer-events\", \"none\");\n },\n // grid lines in x axis function\n _make_x_axis() {\n return axisBottom()\n .scale(this._x);\n },\n // grid lines in y axis function\n _make_y_axis() {\n return axisLeft()\n .scale(this._y);\n },\n /**\n * Appends a selection box for different blocks\n */\n _createSelectionBox() {\n const self = this\n const svg = select(this._container).select(\"svg\")\n const width = this._width - this._margin.right,\n height = this._height - this._margin.bottom\n const verticalItemPosition = height + this._margin.bottom / 2 + 6\n const jsonTriangles = [\n {\n \"x\": width - 25,\n \"y\": verticalItemPosition + 3,\n \"color\": \"#000\",\n \"type\": symbolTriangle,\n \"id\": \"leftArrowSelection\",\n \"angle\": 0\n }, {\n \"x\": width - 10,\n \"y\": verticalItemPosition,\n \"color\": \"#000\",\n \"type\": symbolTriangle,\n \"id\": \"rightArrowSelection\",\n \"angle\": 180\n }\n ]\n // Use update pattern to update existing symbols in case of resize\n let selectionSign = svg.selectAll(\".select-symbol\").data(jsonTriangles);\n // remove any existing selection first\n selectionSign.remove();\n // select again\n selectionSign = svg.selectAll(\".select-symbol\").data(jsonTriangles)\n // then add only if needed\n if (self._data.length > 1) {\n selectionSign.enter().\n append(\"path\").\n merge(selectionSign).\n attr(\"class\", \"select-symbol\").\n attr(\"d\", symbol().type(d => d.type)).\n attr(\"transform\", d => \"translate(\" + d.x + \",\" + d.y + \") rotate(\" + d.angle + \")\").\n attr(\"id\", d => d.id).style(\"fill\", d => d.color).\n on(\"mousedown\", d => {\n if (d.id === \"rightArrowSelection\") arrowRight()\n if (d.id === \"leftArrowSelection\") arrowLeft()\n // fake a drag event from cache values to keep selection\n self._gotDragged = true\n self._dragStartCoords = self._dragCache.start\n self._dragCurrentCoords = self._dragCache.end\n })\n }\n const chooseSelection = (id) => {\n if (self._selectionText) self._selectionText.remove();\n // after cleaning up, there is nothing left to do if there is no data\n if (self._categories.length === 0) return;\n const type = self._categories[id].info\n if (typeof self.options.chooseSelectionCallback === \"function\") {\n self.options.chooseSelectionCallback(id, type);\n }\n const data = [\n {\n \"selection\": type.text\n }\n ]\n self._selectionText = svg.selectAll('selection_text')\n .data(data)\n .enter()\n .append('text')\n .attr(\"x\", width - 35)\n .attr(\"y\", verticalItemPosition + 4)\n .text(d => d.selection)\n .attr(\"class\", \"select-info\")\n .attr(\"id\", \"selectionText\")\n .attr(\"text-anchor\", \"end\")\n }\n\n chooseSelection(this.options.selectedAttributeIdx);\n\n let arrowRight = () => {\n let idx = self.options.selectedAttributeIdx += 1\n if (idx === self._categories.length) {\n self.options.selectedAttributeIdx = idx = 0\n }\n chooseSelection(idx)\n self._removeChart()\n self._removeMarkedSegmentsOnMap()\n self._createChart(idx)\n }\n\n let arrowLeft = () => {\n let idx = self.options.selectedAttributeIdx -= 1\n if (idx === -1) {\n self.options.selectedAttributeIdx = idx = self._categories.length - 1\n }\n chooseSelection(idx)\n self._removeChart()\n self._removeMarkedSegmentsOnMap()\n self._createChart(idx)\n }\n },\n /**\n * Creates and appends legend to chart\n */\n _createLegend() {\n const self = this\n const data = []\n if (this._categories.length > 0) {\n for (let item in this._categories[this.options.selectedAttributeIdx].legend) {\n data.push(this._categories[this.options.selectedAttributeIdx].legend[item]);\n }\n }\n const height = this._height - this._margin.bottom\n const verticalItemPosition = height + this._margin.bottom / 2\n const leg = [\n {\n \"text\": this._getTranslation(\"legend\")\n }\n ]\n const legendRectSize = 7\n const legendSpacing = 7\n const legend = this._svg.selectAll(\".hlegend-hover\").data(data).enter().append(\"g\").attr(\"class\", \"legend\").\n style(\"display\", \"none\").attr(\"transform\", (d, i) => {\n const height = legendRectSize + legendSpacing\n const offset = height * 2\n const horizontal = legendRectSize - 15\n const vertical = i * height - offset\n return \"translate(\" + horizontal + \",\" + vertical + \")\"\n })\n const legendRect = legend.append('rect')\n .attr('class', 'legend-rect')\n .attr('x', 15)\n .attr('y', 6 * 6)\n .attr('width', 6)\n .attr('height', 6);\n if (Object.keys(this._graphStyle).length !== 0) {\n legendRect.styles(this._graphStyle)\n .style('stroke', (d, i) => d.color)\n .style('fill', (d, i) => d.color);\n } else {\n legendRect.style('stroke', 'black')\n .style('fill', (d, i) => d.color);\n }\n legend.append('text')\n .attr('class', 'legend-text')\n .attr('x', 30)\n .attr('y', 6 * 7)\n .text((d, i) => {\n const textProp = d.text\n self._boxBoundY = (height - (2 * height / 3) + 7) * i;\n return textProp;\n });\n let legendHover = this._svg.selectAll('.legend-hover')\n .data(leg)\n .enter()\n .append('g')\n .attr('class', 'legend-hover');\n this._showLegend = false\n legendHover.append('text')\n .attr('x', 15)\n .attr('y', verticalItemPosition)\n .attr('text-anchor', \"start\")\n .text((d, i) => d.text)\n .on('mouseover', () => {\n selectAll('.legend')\n .style(\"display\", \"block\");\n })\n .on('mouseleave', () => {\n if (!this._showLegend) {\n selectAll('.legend')\n .style(\"display\", \"none\");\n }\n })\n .on('click', () => {\n this._showLegend = !this._showLegend\n })\n ;\n }, /**\n * calculates the margins of boxes\n * @param {String} className: name of the class\n * @return {array} borders: number of text lines, widest range of text\n */\n _dynamicBoxSize(className) {\n const cnt = selectAll(className).nodes().length\n const widths = []\n for (let i = 0; i < cnt; i++) {\n widths.push(selectAll(className)\n .nodes()[i].getBoundingClientRect()\n .width);\n }\n const maxWidth = d3Max(widths)\n return [cnt, maxWidth];\n },\n /**\n * Creates top border line on graph\n */\n _createBorderTopLine() {\n const self = this\n const data = this._areasFlattended\n const borderTopLine = line()\n .x(d => {\n const x = self._x\n return x(d.position)\n })\n .y(d => {\n const y = self._y\n return y(d.altitude)\n })\n .curve(curveBasis)\n this._svg.append(\"svg:path\")\n .attr(\"d\", borderTopLine(data))\n .attr('class', 'border-top');\n },\n /*\n * Handles the mouseout event when the mouse leaves the background\n */\n _mouseoutHandler() {\n for (let param of ['_focusLine', '_focus', '_pointG', '_mouseHeightFocus', '_mouseHeightFocusLabel'])\n if (this[param]) {\n this[param].style('display', 'none');\n }\n },\n /*\n * Handles the mouseout event and clears the current point info.\n * @param {int} delay - time before markers are removed in milliseconds\n */\n mapMouseoutHandler(delay = 1000) {\n if (this.mouseoutDelay) {\n window.clearTimeout(this.mouseoutDelay)\n }\n this.mouseoutDelay = window.setTimeout(() => {\n this._mouseoutHandler();\n }, delay)\n },\n /*\n * Handles the mouseover the map and displays distance and altitude level.\n * Since this does a lookup of the point on the graph\n * the closest to the given latlng on the provided event, it could be slow.\n */\n mapMousemoveHandler(event, { showMapMarker: showMapMarker = true } = {}) {\n if (this._areasFlattended === false) {\n return;\n }\n // initialize the vars for the closest item calculation\n let closestItem = null;\n // large enough to be trumped by any point on the chart\n let closestDistance = 2 * Math.pow(100, 2);\n // consider a good enough match if the given point (lat and lng) is within\n // 1.1 meters of a point on the chart (there are 111,111 meters in a degree)\n const exactMatchRounding = 1.1 / 111111;\n for (let item of this._areasFlattended) {\n let latDiff = event.latlng.lat - item.latlng.lat;\n let lngDiff = event.latlng.lng - item.latlng.lng;\n // first check for an almost exact match; it's simple and avoid further calculations\n if (Math.abs(latDiff) < exactMatchRounding && Math.abs(lngDiff) < exactMatchRounding) {\n this._internalMousemoveHandler(item, showMapMarker);\n break;\n }\n // calculate the squared distance from the current to the given;\n // it's the squared distance, to avoid the expensive square root\n const distance = Math.pow(latDiff, 2) + Math.pow(lngDiff, 2);\n if (distance < closestDistance) {\n closestItem = item;\n closestDistance = distance;\n }\n }\n\n if (closestItem) this._internalMousemoveHandler(closestItem, showMapMarker);\n },\n /*\n * Handles the mouseover the chart and displays distance and altitude level\n */\n _mousemoveHandler(d, i, ctx) {\n const coords = mouse(this._svg.node())\n const item = this._areasFlattended[this._findItemForX(coords[0])];\n if (item) this._internalMousemoveHandler(item);\n },\n /*\n * Handles the mouseover, given the current item the mouse is over\n */\n _internalMousemoveHandler(item, showMapMarker = true) {\n let areaLength\n const alt = item.altitude, dist = item.position,\n ll = item.latlng, areaIdx = item.areaIdx, type = item.type\n const boxWidth = this._dynamicBoxSize(\".focusbox text\")[1] + 10\n if (areaIdx === 0) {\n areaLength = this._categories[this.options.selectedAttributeIdx].distances[areaIdx];\n } else {\n areaLength = this._categories[this.options.selectedAttributeIdx].distances[areaIdx] - this._categories[this.options.selectedAttributeIdx].distances[areaIdx - 1];\n }\n if (showMapMarker) {\n this._showMapMarker(ll, alt, type);\n }\n this._distTspan.text(\" \" + dist.toFixed(1) + ' km');\n this._altTspan.text(\" \" + alt + ' m');\n this._areaTspan.text(\" \" + areaLength.toFixed(1) + ' km');\n this._typeTspan.text(\" \" + type);\n this._focusRect.attr(\"width\", boxWidth);\n this._focusLine.style(\"display\", \"block\")\n .attr('x1', this._x(dist))\n .attr('x2', this._x(dist));\n const xPositionBox = this._x(dist) - (boxWidth + 5)\n const totalWidth = this._width - this._margin.left - this._margin.right\n if (this._x(dist) + boxWidth < totalWidth) {\n this._focus.style(\"display\", \"initial\")\n .attr(\"transform\", \"translate(\" + this._x(dist) + \",\" + this._y(this._elevationBounds.min) + \")\");\n }\n if (this._x(dist) + boxWidth > totalWidth) {\n this._focus.style(\"display\", \"initial\")\n .attr(\"transform\", \"translate(\" + xPositionBox + \",\" + this._y(this._elevationBounds.min) + \")\");\n }\n },\n /*\n * Finds a data entry for a given x-coordinate of the diagram\n */\n _findItemForX(x) {\n const bisect = bisector(d => d.position).left\n const xInvert = this._x.invert(x)\n return bisect(this._areasFlattended, xInvert);\n },\n /*\n * Finds data entries above a given y-elevation value and returns geo-coordinates\n */\n _findCoordsForY(y) {\n let bisect = (b, yInvert) => {\n //save indexes of elevation values above the horizontal line\n const list = []\n for (let i = 0; i < b.length; i++) {\n if (b[i].altitude >= yInvert) {\n list.push(i);\n }\n }\n //split index list into coherent blocks of coordinates\n const newList = []\n let start = 0\n for (let j = 0; j < list.length - 1; j++) {\n if (list[j + 1] !== list[j] + 1) {\n newList.push(list.slice(start, j + 1));\n start = j + 1;\n }\n }\n newList.push(list.slice(start, list.length));\n //get lat lon coordinates based on indexes\n for (let k = 0; k < newList.length; k++) {\n for (let l = 0; l < newList[k].length; l++) {\n newList[k][l] = b[newList[k][l]].latlng;\n }\n }\n return newList;\n }\n\n const yInvert = this._y.invert(y)\n return bisect(this._areasFlattended, yInvert);\n },\n /*\n * Checks the user passed translations, if they don't exist, fallback to the default translations\n */\n _getTranslation(key) {\n if (this.options.translation[key])\n return this.options.translation[key];\n if (this._defaultTranslation[key])\n return this._defaultTranslation[key];\n console.error(\"Unexpected error when looking up the translation for \" + key);\n return 'No translation found';\n }\n });\n L.control.heightgraph = function (options) {\n return new L.Control.Heightgraph(options)\n }\n\n return L.Control.Heightgraph\n}, window))\n"],"names":["xhtml","namespaces","creatorInherit","creatorFixed","namespace","none","selector","Selection","empty","selectorAll","matcher","sparse","EnterNode","bindIndex","bindKey","constant","ascending","attrRemove","attrRemoveNS","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","styleRemove","styleConstant","styleFunction","styleValue","defaultView","propertyRemove","propertyConstant","propertyFunction","classArray","classList","ClassList","classedAdd","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textConstant","textFunction","htmlRemove","htmlConstant","htmlFunction","raise","lower","creator","constantNull","remove","selection_cloneShallow","selection_cloneDeep","event","contextListener","parseTypenames","onRemove","onAdd","dispatchEvent","dispatchConstant","dispatchFunction","root","selection_select","selection_selectAll","selection_filter","selection_data","selection_enter","selection_exit","selection_join","selection_merge","selection_order","selection_sort","selection_call","selection_nodes","selection_node","selection_size","selection_empty","selection_each","selection_attr","selection_style","selection_property","selection_classed","selection_text","selection_html","selection_raise","selection_lower","selection_append","selection_insert","selection_remove","selection_clone","selection_datum","selection_on","selection_dispatch","sourceEvent","point","get","set","timeout","define","linear","rgb","colorRgb","value","number","string","identity","interpolateTransform","style","easeCubicInOut","attrsFunction","select","attrsObject","stylesFunction","stylesObject","interpolateValue","array","epsilon","pi","tau","x","y","pointX","pointY","factory","window","amd","exports","L","module","require","Control","Heightgraph","extend","options","position","width","height","margins","top","right","bottom","left","mappings","undefined","expand","expandControls","translation","expandCallback","chooseSelectionCallback","selectedAttributeIdx","xTicks","yTicks","highlightStyle","graphStyle","_defaultTranslation","distance","elevation","segment_length","type","legend","_init_options","_margin","_width","_height","_mappings","_svgWidth","_svgHeight","_highlightStyle","color","_graphStyle","_dragCache","map","container","_container","DomUtil","create","DomEvent","disableClickPropagation","buttonContainer","_button","_closeButton","_showState","_initToggle","_svg","append","attr","_expand","_removeMarkedSegmentsOnMap","addData","data","_addData","selectAll","length","_resetDrag","_data","_prepareData","_calculateElevationBounds","_appendScales","_appendGrid","Object","keys","_createChart","_createSelectionBox","resize","size","Browser","touch","on","stopPropagation","_dragHandler","preventDefault","_gotDragged","_drawDragRectangle","_dragStartCoords","dragEndCoords","_dragCurrentCoords","end","mouse","_background","node","x1","Math","min","x2","max","_dragRectangle","_dragRectangleG","g","skipMapFitBounds","fullExtent","_calculateFullExtent","_areasFlattended","_map","fitBounds","_dragEndHandler","item1","_findItemForX","item2","_fitSection","_dragStartHandler","start","full_extent","latLngBounds","latlng","forEach","item","contains","index1","index2","ext","slice","_removeChart","_randomNumber","round","random","_d3ColorCategorical","schemeAccent","schemeDark2","schemeSet2","schemeCategory10","schemeSet3","schemePaired","_coordinates","_elevations","_cumulatedDistances","push","_categories","colorScale","randomNumber","scaleOrdinal","cumDistance","info","id","text","properties","label","summary","distances","attributes","geometries","i","cnt","usedColors","isMappingFunction","features","altitude","ptA","ptB","ptDistance","geometry","coordsLength","coordinates","attributeType","result","attribute","j","LatLng","distanceTo","lng","lat","areaIdx","_totalDistance","d3Max","d3Min","range","_elevationBounds","_showMapMarker","ll","layerPoint","latLngToLayerPoint","normalizedY","_mouseHeightFocus","heightG","_mouseHeightFocusLabel","_mouseHeightFocusLabelRect","_mouseHeightFocusLabelTextElev","_mouseHeightFocusLabelTextType","pointG","_pointG","maxWidth","_dynamicBoxSize","maxHeight","idx","areas","concat","apply","_appendAreas","_createFocus","_appendBackground","_createBorderTopLine","_createLegend","_createHorizontalLine","boxPosition","textDistance","_focus","_focusLineGroup","_focusRect","_y","_focusDistance","_getTranslation","_focusHeight","_focusBlockDistance","_focusType","_areaTspan","_typeTspan","_focusLine","_distTspan","_altTspan","self","_horizontalLine","_elevationValueText","jsonTriangle","symbolTriangle","dragstart","d","classed","dragged","maxY","eventY","angle","_highlightedCoords","_findCoordsForY","format","invert","_markSegmentsOnMap","dragend","enter","symbol","call","drag","coords","_markedSegments","featureGroup","linePart","polyline","interactive","addTo","bringToFront","removeLayer","shortDist","Boolean","_x","scaleLinear","domain","_xAxis","axisBottom","scale","tickFormat","ticks","pow","_yAxis","axisLeft","background","_mousemoveHandler","bind","_mouseoutHandler","android","_make_x_axis","tickSize","_make_y_axis","block","eleIdx","c","_area","d3Area","xDiagonalCoordinate","y0","y1","curve","curveLinear","_areapath","datum","styles","svg","verticalItemPosition","jsonTriangles","selectionSign","merge","arrowRight","arrowLeft","chooseSelection","_selectionText","selection","leg","legendRectSize","legendSpacing","offset","horizontal","vertical","legendRect","textProp","_boxBoundY","legendHover","_showLegend","className","nodes","widths","getBoundingClientRect","borderTopLine","line","curveBasis","param","mapMouseoutHandler","delay","mouseoutDelay","clearTimeout","setTimeout","mapMousemoveHandler","showMapMarker","closestItem","closestDistance","exactMatchRounding","latDiff","lngDiff","abs","_internalMousemoveHandler","ctx","areaLength","alt","dist","boxWidth","toFixed","xPositionBox","totalWidth","bisect","bisector","xInvert","b","yInvert","list","newList","k","l","key","console","error","control","heightgraph"],"mappings":"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"} \ No newline at end of file diff --git a/dist/L.Control.Heightgraph.min.js b/dist/L.Control.Heightgraph.min.js index 008c4c1..b0f7228 100644 --- a/dist/L.Control.Heightgraph.min.js +++ b/dist/L.Control.Heightgraph.min.js @@ -1 +1 @@ -!function(){"use strict";function t(n){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(n)}function n(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}function e(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,r)}return e}function r(t){for(var r=1;rt.length)&&(n=t.length);for(var e=0,r=new Array(n);e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,u=!1;return{s:function(){e=t[Symbol.iterator]()},n:function(){var t=e.next();return s=t.done,t},e:function(t){u=!0,a=t},f:function(){try{s||null==e.return||e.return()}finally{if(u)throw a}}}}var a="http://www.w3.org/1999/xhtml",s={svg:"http://www.w3.org/2000/svg",xhtml:a,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function u(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),s.hasOwnProperty(n)?{space:s[n],local:t}:t}function l(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===a&&n.documentElement.namespaceURI===a?n.createElement(t):n.createElementNS(e,t)}}function h(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function c(t){var n=u(t);return(n.local?h:l)(n)}function f(){}function d(t){return null==t?f:function(){return this.querySelector(t)}}function p(){return[]}function g(t){return null==t?p:function(){return this.querySelectorAll(t)}}function _(t){return function(){return this.matches(t)}}function v(t){return new Array(t.length)}function y(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}y.prototype={constructor:y,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function m(t,n,e,r,i,o){for(var a,s=0,u=n.length,l=o.length;sn?1:t>=n?0:NaN}function b(t){return function(){this.removeAttribute(t)}}function M(t){return function(){this.removeAttributeNS(t.space,t.local)}}function k(t,n){return function(){this.setAttribute(t,n)}}function A(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function S(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function T(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function N(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function C(t){return function(){this.style.removeProperty(t)}}function E(t,n,e){return function(){this.style.setProperty(t,n,e)}}function H(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function D(t,n){return t.style.getPropertyValue(n)||N(t).getComputedStyle(t,null).getPropertyValue(n)}function F(t){return function(){delete this[t]}}function P(t,n){return function(){this[t]=n}}function B(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function O(t){return t.trim().split(/^|\s+/)}function z(t){return t.classList||new I(t)}function I(t){this._node=t,this._names=O(t.getAttribute("class")||"")}function j(t,n){for(var e=z(t),r=-1,i=n.length;++r=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var rt={},it=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(rt={mouseenter:"mouseover",mouseleave:"mouseout"}));function ot(t,n,e){return t=at(t,n,e),function(n){var e=n.relatedTarget;e&&(e===this||8&e.compareDocumentPosition(this))||t.call(this,n)}}function at(t,n,e){return function(r){var i=it;it=r;try{t.call(this,this.__data__,n,e)}finally{it=i}}}function st(t){return t.trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}function ut(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r=b&&(b=w+1);!(y=_[b])&&++b=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=w);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o1?this.each((null==n?C:"function"==typeof n?H:E)(t,n,null==e?"":e)):D(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?F:"function"==typeof n?B:P)(t,n)):this.node()[t]},classed:function(t,n){var e=O(t+"");if(arguments.length<2){for(var r=z(this.node()),i=-1,o=e.length;++i=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))}function Tt(t,n){for(var e,r=0,i=t.length;r0)for(var e,r,i=new Array(e),o=0;o=0&&n._call.call(null,t),n=n._next;--Ht}()}finally{Ht=0,function(){var t,n,e=Ct,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Ct=n);Et=t,Gt(r)}(),Pt=0}}function $t(){var t=Ot.now(),n=t-Ft;n>1e3&&(Bt-=n,Ft=t)}function Gt(t){Ht||(Lt&&(Lt=clearTimeout(Lt)),t-Pt>24?(t<1/0&&(Lt=setTimeout(Xt,t-Ot.now()-Bt)),Dt&&(Dt=clearInterval(Dt))):(Dt||(Ft=Ot.now(),Dt=setInterval($t,1e3)),Ht=1,zt(Xt)))}function Vt(t,n,e){var r=new Rt;return n=null==n?0:+n,r.restart((function(e){r.stop(),t(e+n)}),n,e),r}Rt.prototype=qt.prototype={constructor:Rt,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?It():+e)+(null==n?0:+n),this._next||Et===this||(Et?Et._next=this:Ct=this,Et=this),this._call=t,this._time=e,Gt()},stop:function(){this._call&&(this._call=null,this._time=1/0,Gt())}};var Yt=kt("start","end","cancel","interrupt"),Ut=[];function Wt(t,n,e,r,i,o){var a=t.__transition;if(a){if(e in a)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(u){var l,h,c,f;if(1!==e.state)return s();for(l in i)if((f=i[l]).name===e.name){if(3===f.state)return Vt(o);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete i[l]):+l0)throw new Error("too late; already scheduled");return e}function Kt(t,n){var e=Qt(t,n);if(e.state>3)throw new Error("too late; already running");return e}function Qt(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Jt(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function tn(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function nn(){}var en="\\s*([+-]?\\d+)\\s*",rn="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",on="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",an=/^#([0-9a-f]{3,8})$/,sn=new RegExp("^rgb\\("+[en,en,en]+"\\)$"),un=new RegExp("^rgb\\("+[on,on,on]+"\\)$"),ln=new RegExp("^rgba\\("+[en,en,en,rn]+"\\)$"),hn=new RegExp("^rgba\\("+[on,on,on,rn]+"\\)$"),cn=new RegExp("^hsl\\("+[rn,on,on]+"\\)$"),fn=new RegExp("^hsla\\("+[rn,on,on,rn]+"\\)$"),dn={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function pn(){return this.rgb().formatHex()}function gn(){return this.rgb().formatRgb()}function _n(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=an.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?vn(n):3===e?new wn(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?yn(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?yn(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=sn.exec(t))?new wn(n[1],n[2],n[3],1):(n=un.exec(t))?new wn(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=ln.exec(t))?yn(n[1],n[2],n[3],n[4]):(n=hn.exec(t))?yn(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=cn.exec(t))?An(n[1],n[2]/100,n[3]/100,1):(n=fn.exec(t))?An(n[1],n[2]/100,n[3]/100,n[4]):dn.hasOwnProperty(t)?vn(dn[t]):"transparent"===t?new wn(NaN,NaN,NaN,0):null}function vn(t){return new wn(t>>16&255,t>>8&255,255&t,1)}function yn(t,n,e,r){return r<=0&&(t=n=e=NaN),new wn(t,n,e,r)}function mn(t){return t instanceof nn||(t=_n(t)),t?new wn((t=t.rgb()).r,t.g,t.b,t.opacity):new wn}function xn(t,n,e,r){return 1===arguments.length?mn(t):new wn(t,n,e,null==r?1:r)}function wn(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function bn(){return"#"+kn(this.r)+kn(this.g)+kn(this.b)}function Mn(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function kn(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function An(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Tn(t,n,e,r)}function Sn(t){if(t instanceof Tn)return new Tn(t.h,t.s,t.l,t.opacity);if(t instanceof nn||(t=_n(t)),!t)return new Tn;if(t instanceof Tn)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,s=o-i,u=(o+i)/2;return s?(a=n===o?(e-r)/s+6*(e0&&u<1?0:a,new Tn(a,s,u,t.opacity)}function Tn(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Nn(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function Cn(t){return function(){return t}}function En(t){return 1==(t=+t)?Hn:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):Cn(isNaN(n)?e:n)}}function Hn(t,n){var e=n-t;return e?function(t,n){return function(e){return t+e*n}}(t,e):Cn(isNaN(t)?n:t)}Jt(nn,_n,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:pn,formatHex:pn,formatHsl:function(){return Sn(this).formatHsl()},formatRgb:gn,toString:gn}),Jt(wn,xn,tn(nn,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new wn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new wn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:bn,formatHex:bn,formatRgb:Mn,toString:Mn})),Jt(Tn,(function(t,n,e,r){return 1===arguments.length?Sn(t):new Tn(t,n,e,null==r?1:r)}),tn(nn,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Tn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Tn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new wn(Nn(t>=240?t-240:t+120,i,r),Nn(t,i,r),Nn(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var Ln=function t(n){var e=En(n);function r(t,n){var r=e((t=xn(t)).r,(n=xn(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),a=Hn(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}return r.gamma=t,r}(1);function Dn(t,n){n||(n=[]);var e,r=t?Math.min(n.length,t.length):0,i=n.slice();return function(o){for(e=0;eo&&(i=n.slice(o,i),s[a]?s[a]+=i:s[++a]=i),(e=e[0])===(r=r[0])?s[a]?s[a]+=r:s[++a]=r:(s[++a]=null,u.push({i:a,x:Bn(e,r)})),o=In.lastIndex;return o180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Bn(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,a.rotate,s,u),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Bn(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,a.skewX,s,u),function(t,n,e,r,o,a){if(t!==e||n!==r){var s=o.push(i(o)+"scale(",null,",",null,")");a.push({i:s-4,x:Bn(t,e)},{i:s-2,x:Bn(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,s,u),o=a=null,function(t){for(var n,e=-1,r=u.length;++e=0&&(t=t.slice(0,n)),!t||"start"===t}))}(n)?Zt:Kt;return function(){var a=o(this,t),s=a.on;s!==r&&(i=(r=s).copy()).on(n,e),a.on=i}}var me=_t.prototype.constructor;function xe(t){return function(){this.style.removeProperty(t)}}function we(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function be(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&we(t,o,e)),r}return o._value=n,o}function Me(t){return function(n){this.textContent=t.call(this,n)}}function ke(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&Me(r)),n}return r._value=t,r}var Ae=0;function Se(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function Te(t){return _t().transition(t)}function Ne(){return++Ae}var Ce=_t.prototype;Se.prototype=Te.prototype={constructor:Se,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=d(t));for(var r=this._groups,i=r.length,o=new Array(i),a=0;an?1:t>=n?0:NaN}function Xe(t){var n;return 1===t.length&&(n=t,t=function(t,e){return qe(n(t),e)}),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)<0?r=o+1:i=o}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)>0?i=o:r=o+1}return r}}}_t.prototype.interrupt=function(t){return this.each((function(){!function(t,n){var e,r,i,o=t.__transition,a=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>2&&e.state<5,e.state=6,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):a=!1;a&&delete t.__transition}}(this,t)}))},_t.prototype.transition=function(t){var n,e;t instanceof Se?(n=t._id,t=t._name):(n=Ne(),(e=Ee).time=It(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o=0?(o>=Ge?10:o>=Ve?5:o>=Ye?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Ge?10:o>=Ve?5:o>=Ye?2:1)}function We(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o=e)for(r=e;++or&&(r=e)}else for(;++o=e)for(r=e;++or&&(r=e);return r}function Ze(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function Ke(){}function Qe(t,n){var e=new Ke;if(t instanceof Ke)t.each((function(t,n){e.set(n,t)}));else if(Array.isArray(t)){var r,i=-1,o=t.length;if(null==n)for(;++ir&&(n=e,e=r,r=n),function(t){return Math.max(e,Math.min(r,t))}}function hr(t,n,e){var r=t[0],i=t[1],o=n[0],a=n[1];return i2?cr:hr,i=o=null,c}function c(n){return isNaN(n=+n)?e:(i||(i=r(a.map(t),s,u)))(t(l(n)))}return c.invert=function(e){return l(n((o||(o=r(s,a.map(t),Bn)))(e)))},c.domain=function(t){return arguments.length?(a=er.call(t,or),l===sr||(l=lr(a)),h()):a.slice()},c.range=function(t){return arguments.length?(s=rr.call(t),h()):s.slice()},c.rangeRound=function(t){return s=rr.call(t),u=qn,h()},c.clamp=function(t){return arguments.length?(l=t?lr(a):sr,c):l!==sr},c.interpolate=function(t){return arguments.length?(u=t,h()):u},c.unknown=function(t){return arguments.length?(e=t,c):e},function(e,r){return t=e,n=r,h()}}()(t,n)}function pr(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function gr(t){return(t=pr(Math.abs(t)))?t[1]:NaN}var _r,vr=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function yr(t){if(!(n=vr.exec(t)))throw new Error("invalid format: "+t);var n;return new mr({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function mr(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function xr(t,n){var e=pr(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}yr.prototype=mr.prototype,mr.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var wr={"%":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return xr(100*t,n)},r:xr,s:function(t,n){var e=pr(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(_r=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+pr(t,Math.max(0,n+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function br(t){return t}var Mr,kr,Ar,Sr=Array.prototype.map,Tr=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Nr(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?br:(n=Sr.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,s=n[0],u=0;i>0&&s>0&&(u+s+1>r&&(s=Math.max(1,r-u)),o.push(t.substring(i-=s,i+s)),!((u+=s+1)>r));)s=n[a=(a+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?br:function(t){return function(n){return n.replace(/[0-9]/g,(function(n){return t[+n]}))}}(Sr.call(t.numerals,String)),u=void 0===t.percent?"%":t.percent+"",l=void 0===t.minus?"-":t.minus+"",h=void 0===t.nan?"NaN":t.nan+"";function c(t){var n=(t=yr(t)).fill,e=t.align,c=t.sign,f=t.symbol,d=t.zero,p=t.width,g=t.comma,_=t.precision,v=t.trim,y=t.type;"n"===y?(g=!0,y="g"):wr[y]||(void 0===_&&(_=12),v=!0,y="g"),(d||"0"===n&&"="===e)&&(d=!0,n="0",e="=");var m="$"===f?i:"#"===f&&/[boxX]/.test(y)?"0"+y.toLowerCase():"",x="$"===f?o:/[%p]/.test(y)?u:"",w=wr[y],b=/[defgprs%]/.test(y);function M(t){var i,o,u,f=m,M=x;if("c"===y)M=w(t)+M,t="";else{var k=(t=+t)<0||1/t<0;if(t=isNaN(t)?h:w(Math.abs(t),_),v&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),k&&0==+t&&"+"!==c&&(k=!1),f=(k?"("===c?c:l:"-"===c||"("===c?"":c)+f,M=("s"===y?Tr[8+_r/3]:"")+M+(k&&"("===c?")":""),b)for(i=-1,o=t.length;++i(u=t.charCodeAt(i))||u>57){M=(46===u?a+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}g&&!d&&(t=r(t,1/0));var A=f.length+t.length+M.length,S=A>1)+f+t+M+S.slice(A);break;default:t=S+f+t+M}return s(t)}return _=void 0===_?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_)),M.toString=function(){return t+""},M}return{format:c,formatPrefix:function(t,n){var e=c(((t=yr(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(gr(n)/3))),i=Math.pow(10,-r),o=Tr[8+r/3];return function(t){return e(i*t)+o}}}}function Cr(t,n,e,r){var i,o=function(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Ge?i*=10:o>=Ve?i*=5:o>=Ye&&(i*=2),n0)return[t];if((r=n0)for(t=Math.ceil(t/a),n=Math.floor(n/a),o=new Array(i=Math.ceil(n-t+1));++s0?r=Ue(s=Math.floor(s/r)*r,u=Math.ceil(u/r)*r,e):r<0&&(r=Ue(s=Math.ceil(s*r)/r,u=Math.floor(u*r)/r,e)),r>0?(i[o]=Math.floor(s/r)*r,i[a]=Math.ceil(u/r)*r,n(i)):r<0&&(i[o]=Math.ceil(s*r)/r,i[a]=Math.floor(u*r)/r,n(i)),t},t}function Hr(){var t=dr(sr,sr);return t.copy=function(){return fr(t,Hr())},Ze.apply(t,arguments),Er(t)}function Lr(){it.stopImmediatePropagation()}function Dr(){it.preventDefault(),it.stopImmediatePropagation()}function Fr(t){var n=t.document.documentElement,e=vt(t).on("dragstart.drag",Dr,!0);"onselectstart"in n?e.on("selectstart.drag",Dr,!0):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}function Pr(t){return function(){return t}}function Br(t,n,e,r,i,o,a,s,u,l){this.target=t,this.type=n,this.subject=e,this.identifier=r,this.active=i,this.x=o,this.y=a,this.dx=s,this.dy=u,this._=l}function Or(){return!it.ctrlKey&&!it.button}function zr(){return this.parentNode}function Ir(t){return null==t?{x:it.x,y:it.y}:t}function jr(){return navigator.maxTouchPoints||"ontouchstart"in this}function Rr(){var t,n,e,r,i=Or,o=zr,a=Ir,s=jr,u={},l=kt("start","drag","end"),h=0,c=0;function f(t){t.on("mousedown.drag",d).filter(s).on("touchstart.drag",_).on("touchmove.drag",v).on("touchend.drag touchcancel.drag",y).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(){if(!r&&i.apply(this,arguments)){var a=m("mouse",o.apply(this,arguments),xt,this,arguments);a&&(vt(it.view).on("mousemove.drag",p,!0).on("mouseup.drag",g,!0),Fr(it.view),Lr(),e=!1,t=it.clientX,n=it.clientY,a("start"))}}function p(){if(Dr(),!e){var r=it.clientX-t,i=it.clientY-n;e=r*r+i*i>c}u.mouse("drag")}function g(){vt(it.view).on("mousemove.drag mouseup.drag",null),function(t,n){var e=t.document.documentElement,r=vt(t).on("dragstart.drag",null);n&&(r.on("click.drag",Dr,!0),setTimeout((function(){r.on("click.drag",null)}),0)),"onselectstart"in e?r.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}(it.view,e),Dr(),u.mouse("end")}function _(){if(i.apply(this,arguments)){var t,n,e=it.changedTouches,r=o.apply(this,arguments),a=e.length;for(t=0;t1e-6)if(Math.abs(h*s-u*l)>1e-6&&i){var f=e-o,d=r-a,p=s*s+u*u,g=f*f+d*d,_=Math.sqrt(p),v=Math.sqrt(c),y=i*Math.tan((Qr-Math.acos((p+c-g)/(2*_*v)))/2),m=y/v,x=y/_;Math.abs(m-1)>1e-6&&(this._+="L"+(t+m*l)+","+(n+m*h)),this._+="A"+i+","+i+",0,0,"+ +(h*f>l*d)+","+(this._x1=t+x*s)+","+(this._y1=n+x*u)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n,o=!!o;var a=(e=+e)*Math.cos(r),s=e*Math.sin(r),u=t+a,l=n+s,h=1^o,c=o?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+u+","+l:(Math.abs(this._x1-u)>1e-6||Math.abs(this._y1-l)>1e-6)&&(this._+="L"+u+","+l),e&&(c<0&&(c=c%Jr+Jr),c>ti?this._+="A"+e+","+e+",0,1,"+h+","+(t-a)+","+(n-s)+"A"+e+","+e+",0,1,"+h+","+(this._x1=u)+","+(this._y1=l):c>1e-6&&(this._+="A"+e+","+e+",0,"+ +(c>=Qr)+","+h+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};var ii=Math.PI,oi=2*ii;function ai(t){this._context=t}function si(t){return new ai(t)}function ui(t){return t[0]}function li(t){return t[1]}function hi(){var t=ui,n=li,e=ri(!0),r=null,i=si,o=null;function a(a){var s,u,l,h=a.length,c=!1;for(null==r&&(o=i(l=ei())),s=0;s<=h;++s)!(s=t.length)&&(this.options.selectedAttributeIdx=0),this._removeMarkedSegmentsOnMap(),this._resetDrag(!0),this._data=t,this._init_options(),this._prepareData(),this._calculateElevationBounds(),this._appendScales(),this._appendGrid(),0!==Object.keys(t).length&&this._createChart(this.options.selectedAttributeIdx),this._createSelectionBox()},resize:function(t){t.width&&(this.options.width=t.width),t.height&&(this.options.height=t.height),vt(this._container).selectAll("svg").attr("width",this.options.width).attr("height",this.options.height),this._addData(this._data)},_initToggle:function(){t.Browser.touch?t.DomEvent.on(this._container,"click",t.DomEvent.stopPropagation):t.DomEvent.disableClickPropagation(this._container),this.options.expandControls&&(t.DomEvent.on(this._button,"click",this._expand,this),t.DomEvent.on(this._closeButton,"click",this._expand,this))},_dragHandler:function(){"undefined"!=typeof event&&(event.preventDefault(),event.stopPropagation()),this._gotDragged=!0,this._drawDragRectangle()},_drawDragRectangle:function(){if(this._dragStartCoords){var t=this._dragCurrentCoords=this._dragCache.end=xt(this._background.node()),n=Math.min(this._dragStartCoords[0],t[0]),e=Math.max(this._dragStartCoords[0],t[0]);if(this._dragRectangle||this._dragRectangleG)this._dragRectangle.attr("width",e-n).attr("x",n);else{var r=vt(this._container).select("svg").select("g");this._dragRectangleG=r.append("g"),this._dragRectangle=this._dragRectangleG.append("rect").attr("width",e-n).attr("height",this._svgHeight).attr("x",n).attr("class","mouse-drag").style("fill","grey").style("opacity",.5).style("pointer-events","none")}}},_resetDrag:function(t){if(this._dragRectangleG&&(this._dragRectangleG.remove(),this._dragRectangleG=null,this._dragRectangle=null,!0!==t)){var n=this._calculateFullExtent(this._areasFlattended);n&&this._map.fitBounds(n)}},_dragEndHandler:function(){if(!this._dragStartCoords||!this._gotDragged)return this._dragStartCoords=null,this._gotDragged=!1,void this._resetDrag();var t=this._findItemForX(this._dragStartCoords[0]),n=this._findItemForX(this._dragCurrentCoords[0]);this._fitSection(t,n),this._dragStartCoords=null,this._gotDragged=!1},_dragStartHandler:function(){event.preventDefault(),event.stopPropagation(),this._gotDragged=!1,this._dragStartCoords=this._dragCache.start=xt(this._background.node())},_calculateFullExtent:function(n){if(!n||n.length<1)return null;var e=new t.latLngBounds(n[0].latlng,n[0].latlng);return n.forEach((function(t){e.contains(t.latlng)||e.extend(t.latlng)})),e},_fitSection:function(t,n){var e,r=Math.min(t,n),i=Math.max(t,n);r!==i?e=this._calculateFullExtent(this._areasFlattended.slice(r,i+1)):this._areasFlattended.length>0&&(e=[this._areasFlattended[r].latlng,this._areasFlattended[i].latlng]),e&&this._map.fitBounds(e)},_expand:function(){!0!==this.options.expandControls&&(this._showState=!1),this._showState?(vt(this._button).style("display","block"),vt(this._container).selectAll("svg").style("display","none"),vt(this._closeButton).style("display","none")):(vt(this._button).style("display","none"),vt(this._container).selectAll("svg").style("display","block"),vt(this._closeButton).style("display","block")),this._showState=!this._showState,"function"==typeof this.options.expandCallback&&this.options.expandCallback(this._showState)},_removeChart:function(){void 0!==this._svg&&(this._svg.selectAll("path.area").remove(),this._svg.selectAll("path.border-top").remove(),this._svg.selectAll(".legend").remove(),this._svg.selectAll(".lineSelection").remove(),this._svg.selectAll(".horizontalLine").remove(),this._svg.selectAll(".horizontalLineText").remove())},_randomNumber:function(t){return Math.round(Math.random()*(t-0))},_d3ColorCategorical:[xi,wi,Mi,mi,ki,bi],_prepareData:function(){this._coordinates=[],this._elevations=[],this._cumulatedDistances=[],this._cumulatedDistances.push(0),this._categories=[];var n,e=this._data;if(void 0===this._mappings){var r=this._randomNumber(this._d3ColorCategorical.length-1);n=function t(){var n=Qe(),e=[],r=[],i=ir;function o(t){var o=t+"",a=n.get(o);if(!a){if(i!==ir)return i;n.set(o,a=e.push(t))}return r[(a-1)%r.length]}return o.domain=function(t){if(!arguments.length)return e.slice();e=[],n=Qe();for(var r,i,a=-1,s=t.length;++a=e)for(r=e;++oe&&(r=e)}else for(;++o=e)for(r=e;++oe&&(r=e);return r}(this._elevations),e=t-n;this._elevationBounds={min:e<10?n-10:n-.1*e,max:e<10?t+10:t+.1*e}},_showMapMarker:function(t,n,e){var r=this._map.latLngToLayerPoint(t),i=r.y-75;if(!this._mouseHeightFocus){var o=vt(".leaflet-overlay-pane svg").append("g");this._mouseHeightFocus=o.append("svg:line").attr("class","height-focus line").attr("x2","0").attr("y2","0").attr("x1","0").attr("y1","0"),this._mouseHeightFocusLabel=o.append("g").attr("class","height-focus label"),this._mouseHeightFocusLabelRect=this._mouseHeightFocusLabel.append("rect").attr("class","bBox"),this._mouseHeightFocusLabelTextElev=this._mouseHeightFocusLabel.append("text").attr("class","tspan"),this._mouseHeightFocusLabelTextType=this._mouseHeightFocusLabel.append("text").attr("class","tspan"),(this._pointG=o.append("g").attr("class","height-focus circle")).append("svg:circle").attr("r",5).attr("cx",0).attr("cy",0).attr("class","height-focus circle-lower")}this._mouseHeightFocusLabel.style("display","block"),this._mouseHeightFocus.attr("x1",r.x).attr("x2",r.x).attr("y1",r.y).attr("y2",i).style("display","block"),this._pointG.attr("transform","translate("+r.x+","+r.y+")").style("display","block"),this._mouseHeightFocusLabelRect.attr("x",r.x+3).attr("y",i).attr("class","bBox"),this._mouseHeightFocusLabelTextElev.attr("x",r.x+5).attr("y",i+12).text(n+" m").attr("class","tspan mouse-height-box-text"),this._mouseHeightFocusLabelTextType.attr("x",r.x+5).attr("y",i+24).text(e).attr("class","tspan mouse-height-box-text");var a=this._dynamicBoxSize("text.tspan")[1],s=""===e?18:30;wt(".bBox").attr("width",a+10).attr("height",s)},_createChart:function(t){var n=0===this._categories.length?[]:this._categories[t].geometries;this._areasFlattended=[].concat.apply([],n);for(var e=0;ee?e:r)+") rotate("+t.angle+")"})),vt(".horizontalLine").attr("y1",r<0?0:r>e?e:r).attr("y2",r<0?0:r>e?e:r),t._highlightedCoords=r>=e?[]:t._findCoordsForY(r),vt(".horizontalLineText").attr("y",r<=10?0:r>e?e-10:r-10).text(kr(".0f")(t._y.invert(r<0?0:r>e?e:r))+" m"),t._removeMarkedSegmentsOnMap(),t._markSegmentsOnMap(t._highlightedCoords)})).on("end",(function(n){vt(this).classed("active",!1),vt(".horizontalLine").classed("active",!1),t._removeMarkedSegmentsOnMap(),t._markSegmentsOnMap(t._highlightedCoords)})))},_markSegmentsOnMap:function(n){if(n)if(n.length>1){this._markedSegments=t.featureGroup();var e,i=o(n);try{for(i.s();!(e=i.n()).done;){var a=e.value;t.polyline(a,r(r({},this._highlightStyle),{interactive:!1})).addTo(this._markedSegments)}}catch(t){i.e(t)}finally{i.f()}this._markedSegments.addTo(this._map).bringToFront()}else this._markedSegments=t.polyline(n,this._highlightStyle).addTo(this._map)},_removeMarkedSegmentsOnMap:function(){void 0!==this._markedSegments&&this._map.removeLayer(this._markedSegments)},_appendScales:function(){var t=Boolean(this._totalDistance<=10);this._x=Hr().range([0,this._svgWidth]),this._y=Hr().range([this._svgHeight,0]),this._x.domain([0,this._totalDistance]),this._y.domain([this._elevationBounds.min,this._elevationBounds.max]),this._xAxis=Zr().scale(this._x),!0===t?this._xAxis.tickFormat((function(t){return kr(".2f")(t)+" km"})):this._xAxis.tickFormat((function(t){return kr(".0f")(t)+" km"})),this._xAxis.ticks(this.options.xTicks?Math.pow(2,this.options.xTicks):Math.round(this._svgWidth/75),"s"),this._yAxis=Kr().scale(this._y).tickFormat((function(t){return t+" m"})),this._yAxis.ticks(this.options.yTicks?Math.pow(2,this.options.yTicks):Math.round(this._svgHeight/30),"s")},_appendBackground:function(){var n=this._background=vt(this._container).select("svg").select("g").append("rect").attr("width",this._svgWidth).attr("height",this._svgHeight).style("fill","none").style("stroke","none").style("pointer-events","all").on("mousemove.focusbox",this._mousemoveHandler.bind(this)).on("mouseout.focusbox",this._mouseoutHandler.bind(this));t.Browser.android?(n.on("touchstart.drag",this._dragHandler.bind(this)).on("touchstart.drag",this._dragStartHandler.bind(this)).on("touchstart.focusbox",this._mousemoveHandler.bind(this)),t.DomEvent.on(this._container,"touchend",this._dragEndHandler,this)):(n.on("mousemove.focusbox",this._mousemoveHandler.bind(this)).on("mouseout.focusbox",this._mouseoutHandler.bind(this)).on("mousedown.drag",this._dragStartHandler.bind(this)).on("mousemove.drag",this._dragHandler.bind(this)),t.DomEvent.on(this._container,"mouseup",this._dragEndHandler,this))},_appendGrid:function(){this._svg.append("g").attr("class","grid").attr("transform","translate(0,"+this._svgHeight+")").call(this._make_x_axis().tickSize(-this._svgHeight,0,0).ticks(Math.round(this._svgWidth/75)).tickFormat("")),this._svg.append("g").attr("class","grid").call(this._make_y_axis().tickSize(-this._svgWidth,0,0).ticks(Math.round(this._svgHeight/30)).tickFormat("")),this._svg.append("g").attr("transform","translate(0,"+this._svgHeight+")").attr("class","x axis").call(this._xAxis),this._svg.append("g").attr("transform","translate(-2,0)").attr("class","y axis").call(this._yAxis)},_appendAreas:function(t,n,e){var r=this._categories[n].attributes[e].color,i=this;this._area=function(){var t=ui,n=null,e=ri(0),r=li,i=ri(!0),o=null,a=si,s=null;function u(u){var l,h,c,f,d,p=u.length,g=!1,_=new Array(p),v=new Array(p);for(null==o&&(s=a(d=ei())),l=0;l<=p;++l){if(!(l=h;--c)s.point(_[c],v[c]);s.lineEnd(),s.areaEnd()}g&&(_[l]=+t(f,l,u),v[l]=+e(f,l,u),s.point(n?+n(f,l,u):_[l],r?+r(f,l,u):v[l]))}if(d)return s=null,d+""||null}function l(){return hi().defined(i).curve(a).context(o)}return u.x=function(e){return arguments.length?(t="function"==typeof e?e:ri(+e),n=null,u):t},u.x0=function(n){return arguments.length?(t="function"==typeof n?n:ri(+n),u):t},u.x1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:ri(+t),u):n},u.y=function(t){return arguments.length?(e="function"==typeof t?t:ri(+t),r=null,u):e},u.y0=function(t){return arguments.length?(e="function"==typeof t?t:ri(+t),u):e},u.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:ri(+t),u):r},u.lineX0=u.lineY0=function(){return l().x(t).y(e)},u.lineY1=function(){return l().x(t).y(r)},u.lineX1=function(){return l().x(n).y(e)},u.defined=function(t){return arguments.length?(i="function"==typeof t?t:ri(!!t),u):i},u.curve=function(t){return arguments.length?(a=t,null!=o&&(s=a(o)),u):a},u.context=function(t){return arguments.length?(null==t?o=s=null:s=a(o=t),u):o},u}().x((function(t){var n=i._x(t.position);return t.xDiagonalCoordinate=n,n})).y0(this._svgHeight).y1((function(t){return i._y(t.altitude)})).curve(si);this._areapath=this._svg.append("path").attr("class","area"),this._areapath.datum(t).attr("d",this._area).attr("stroke",r).styles(this._graphStyle).style("fill",r).style("pointer-events","none")},_make_x_axis:function(){return Zr().scale(this._x)},_make_y_axis:function(){return Kr().scale(this._y)},_createSelectionBox:function(){var t=this,n=vt(this._container).select("svg"),e=this._width-this._margin.right,r=this._height-this._margin.bottom+this._margin.bottom/2+6,i=[{x:e-25,y:r+3,color:"#000",type:di,id:"leftArrowSelection",angle:0},{x:e-10,y:r,color:"#000",type:di,id:"rightArrowSelection",angle:180}],o=n.selectAll(".select-symbol").data(i);o.remove(),o=n.selectAll(".select-symbol").data(i),t._data.length>1&&o.enter().append("path").merge(o).attr("class","select-symbol").attr("d",pi().type((function(t){return t.type}))).attr("transform",(function(t){return"translate("+t.x+","+t.y+") rotate("+t.angle+")"})).attr("id",(function(t){return t.id})).style("fill",(function(t){return t.color})).on("mousedown",(function(n){"rightArrowSelection"===n.id&&s(),"leftArrowSelection"===n.id&&u(),t._gotDragged=!0,t._dragStartCoords=t._dragCache.start,t._dragCurrentCoords=t._dragCache.end}));var a=function(i){if(t._selectionText&&t._selectionText.remove(),0!==t._categories.length){var o=t._categories[i].info;"function"==typeof t.options.chooseSelectionCallback&&t.options.chooseSelectionCallback(i,o);var a=[{selection:o.text}];t._selectionText=n.selectAll("selection_text").data(a).enter().append("text").attr("x",e-35).attr("y",r+4).text((function(t){return t.selection})).attr("class","select-info").attr("id","selectionText").attr("text-anchor","end")}};a(this.options.selectedAttributeIdx);var s=function(){var n=t.options.selectedAttributeIdx+=1;n===t._categories.length&&(t.options.selectedAttributeIdx=n=0),a(n),t._removeChart(),t._removeMarkedSegmentsOnMap(),t._createChart(n)},u=function(){var n=t.options.selectedAttributeIdx-=1;-1===n&&(t.options.selectedAttributeIdx=n=t._categories.length-1),a(n),t._removeChart(),t._removeMarkedSegmentsOnMap(),t._createChart(n)}},_createLegend:function(){var t=this,n=this,e=[];if(this._categories.length>0)for(var r in this._categories[this.options.selectedAttributeIdx].legend)e.push(this._categories[this.options.selectedAttributeIdx].legend[r]);var i=this._height-this._margin.bottom,o=i+this._margin.bottom/2,a=[{text:this._getTranslation("legend")}],s=this._svg.selectAll(".hlegend-hover").data(e).enter().append("g").attr("class","legend").style("display","none").attr("transform",(function(t,n){return"translate(-8,"+(14*n-28)+")"})),u=s.append("rect").attr("class","legend-rect").attr("x",15).attr("y",36).attr("width",6).attr("height",6);0!==Object.keys(this._graphStyle).length?u.styles(this._graphStyle).style("stroke",(function(t,n){return t.color})).style("fill",(function(t,n){return t.color})):u.style("stroke","black").style("fill",(function(t,n){return t.color})),s.append("text").attr("class","legend-text").attr("x",30).attr("y",42).text((function(t,e){var r=t.text;return n._boxBoundY=(i-2*i/3+7)*e,r}));var l=this._svg.selectAll(".legend-hover").data(a).enter().append("g").attr("class","legend-hover");this._showLegend=!1,l.append("text").attr("x",15).attr("y",o).attr("text-anchor","start").text((function(t,n){return t.text})).on("mouseover",(function(){wt(".legend").style("display","block")})).on("mouseleave",(function(){t._showLegend||wt(".legend").style("display","none")})).on("click",(function(){t._showLegend=!t._showLegend}))},_dynamicBoxSize:function(t){for(var n=wt(t).nodes().length,e=[],r=0;r0&&void 0!==arguments[0]?arguments[0]:1e3;this.mouseoutDelay&&window.clearTimeout(this.mouseoutDelay),this.mouseoutDelay=window.setTimeout((function(){t._mouseoutHandler()}),n)},mapMousemoveHandler:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=n.showMapMarker,r=void 0===e||e;if(!1!==this._areasFlattended){var i,a=null,s=2*Math.pow(100,2),u=1.1/111111,l=o(this._areasFlattended);try{for(l.s();!(i=l.n()).done;){var h=i.value,c=t.latlng.lat-h.latlng.lat,f=t.latlng.lng-h.latlng.lng;if(Math.abs(c)1&&void 0!==arguments[1])||arguments[1],r=t.altitude,i=t.position,o=t.latlng,a=t.areaIdx,s=t.type,u=this._dynamicBoxSize(".focusbox text")[1]+10;n=0===a?this._categories[this.options.selectedAttributeIdx].distances[a]:this._categories[this.options.selectedAttributeIdx].distances[a]-this._categories[this.options.selectedAttributeIdx].distances[a-1],e&&this._showMapMarker(o,r,s),this._distTspan.text(" "+i.toFixed(1)+" km"),this._altTspan.text(" "+r+" m"),this._areaTspan.text(" "+n.toFixed(1)+" km"),this._typeTspan.text(" "+s),this._focusRect.attr("width",u),this._focusLine.style("display","block").attr("x1",this._x(i)).attr("x2",this._x(i));var l=this._x(i)-(u+5),h=this._width-this._margin.left-this._margin.right;this._x(i)+uh&&this._focus.style("display","initial").attr("transform","translate("+l+","+this._y(this._elevationBounds.min)+")")},_findItemForX:function(t){var n=Xe((function(t){return t.position})).left,e=this._x.invert(t);return n(this._areasFlattended,e)},_findCoordsForY:function(t){var n=this._y.invert(t);return function(t,n){for(var e=[],r=0;r=n&&e.push(r);for(var i=[],o=0,a=0;at.length)&&(n=t.length);for(var e=0,r=new Array(n);e=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,u=!1;return{s:function(){e=t[Symbol.iterator]()},n:function(){var t=e.next();return s=t.done,t},e:function(t){u=!0,a=t},f:function(){try{s||null==e.return||e.return()}finally{if(u)throw a}}}}var a="http://www.w3.org/1999/xhtml",s={svg:"http://www.w3.org/2000/svg",xhtml:a,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function u(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),s.hasOwnProperty(n)?{space:s[n],local:t}:t}function l(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===a&&n.documentElement.namespaceURI===a?n.createElement(t):n.createElementNS(e,t)}}function c(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function h(t){var n=u(t);return(n.local?c:l)(n)}function f(){}function p(t){return null==t?f:function(){return this.querySelector(t)}}function d(){return[]}function g(t){return null==t?d:function(){return this.querySelectorAll(t)}}function _(t){return function(){return this.matches(t)}}function v(t){return new Array(t.length)}function y(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}y.prototype={constructor:y,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function m(t,n,e,r,i,o){for(var a,s=0,u=n.length,l=o.length;sn?1:t>=n?0:NaN}function b(t){return function(){this.removeAttribute(t)}}function M(t){return function(){this.removeAttributeNS(t.space,t.local)}}function k(t,n){return function(){this.setAttribute(t,n)}}function A(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function S(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function N(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function E(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function T(t){return function(){this.style.removeProperty(t)}}function C(t,n,e){return function(){this.style.setProperty(t,n,e)}}function H(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function D(t,n){return t.style.getPropertyValue(n)||E(t).getComputedStyle(t,null).getPropertyValue(n)}function P(t){return function(){delete this[t]}}function B(t,n){return function(){this[t]=n}}function O(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function F(t){return t.trim().split(/^|\s+/)}function j(t){return t.classList||new z(t)}function z(t){this._node=t,this._names=F(t.getAttribute("class")||"")}function I(t,n){for(var e=j(t),r=-1,i=n.length;++r=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var rt={},it=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(rt={mouseenter:"mouseover",mouseleave:"mouseout"}));function ot(t,n,e){return t=at(t,n,e),function(n){var e=n.relatedTarget;e&&(e===this||8&e.compareDocumentPosition(this))||t.call(this,n)}}function at(t,n,e){return function(r){var i=it;it=r;try{t.call(this,this.__data__,n,e)}finally{it=i}}}function st(t){return t.trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}function ut(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r=b&&(b=x+1);!(y=_[b])&&++b=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=x);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o1?this.each((null==n?T:"function"==typeof n?H:C)(t,n,null==e?"":e)):D(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?P:"function"==typeof n?O:B)(t,n)):this.node()[t]},classed:function(t,n){var e=F(t+"");if(arguments.length<2){for(var r=j(this.node()),i=-1,o=e.length;++i=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))}function Mt(t,n){for(var e,r=0,i=t.length;r0)for(var e,r,i=new Array(e),o=0;o=0&&n._call.call(null,t),n=n._next;--Nt}()}finally{Nt=0,function(){var t,n,e=At,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:At=n);St=t,Rt(r)}(),Lt=0}}function It(){var t=Dt.now(),n=t-Ct;n>1e3&&(Ht-=n,Ct=t)}function Rt(t){Nt||(Et&&(Et=clearTimeout(Et)),t-Lt>24?(t<1/0&&(Et=setTimeout(zt,t-Dt.now()-Ht)),Tt&&(Tt=clearInterval(Tt))):(Tt||(Ct=Dt.now(),Tt=setInterval(It,1e3)),Nt=1,Pt(zt)))}function qt(t,n,e){var r=new Ft;return n=null==n?0:+n,r.restart((function(e){r.stop(),t(e+n)}),n,e),r}Ft.prototype=jt.prototype={constructor:Ft,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?Bt():+e)+(null==n?0:+n),this._next||St===this||(St?St._next=this:At=this,St=this),this._call=t,this._time=e,Rt()},stop:function(){this._call&&(this._call=null,this._time=1/0,Rt())}};var Xt=wt("start","end","cancel","interrupt"),Vt=[];function Gt(t,n,e,r,i,o){var a=t.__transition;if(a){if(e in a)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(u){var l,c,h,f;if(1!==e.state)return s();for(l in i)if((f=i[l]).name===e.name){if(3===f.state)return qt(o);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete i[l]):+l0)throw new Error("too late; already scheduled");return e}function Ut(t,n){var e=$t(t,n);if(e.state>3)throw new Error("too late; already running");return e}function $t(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Wt(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function Zt(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function Kt(){}var Qt="\\s*([+-]?\\d+)\\s*",Jt="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",tn="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",nn=/^#([0-9a-f]{3,8})$/,en=new RegExp("^rgb\\("+[Qt,Qt,Qt]+"\\)$"),rn=new RegExp("^rgb\\("+[tn,tn,tn]+"\\)$"),on=new RegExp("^rgba\\("+[Qt,Qt,Qt,Jt]+"\\)$"),an=new RegExp("^rgba\\("+[tn,tn,tn,Jt]+"\\)$"),sn=new RegExp("^hsl\\("+[Jt,tn,tn]+"\\)$"),un=new RegExp("^hsla\\("+[Jt,tn,tn,Jt]+"\\)$"),ln={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function cn(){return this.rgb().formatHex()}function hn(){return this.rgb().formatRgb()}function fn(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=nn.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?pn(n):3===e?new vn(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?dn(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?dn(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=en.exec(t))?new vn(n[1],n[2],n[3],1):(n=rn.exec(t))?new vn(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=on.exec(t))?dn(n[1],n[2],n[3],n[4]):(n=an.exec(t))?dn(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=sn.exec(t))?xn(n[1],n[2]/100,n[3]/100,1):(n=un.exec(t))?xn(n[1],n[2]/100,n[3]/100,n[4]):ln.hasOwnProperty(t)?pn(ln[t]):"transparent"===t?new vn(NaN,NaN,NaN,0):null}function pn(t){return new vn(t>>16&255,t>>8&255,255&t,1)}function dn(t,n,e,r){return r<=0&&(t=n=e=NaN),new vn(t,n,e,r)}function gn(t){return t instanceof Kt||(t=fn(t)),t?new vn((t=t.rgb()).r,t.g,t.b,t.opacity):new vn}function _n(t,n,e,r){return 1===arguments.length?gn(t):new vn(t,n,e,null==r?1:r)}function vn(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function yn(){return"#"+wn(this.r)+wn(this.g)+wn(this.b)}function mn(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function wn(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function xn(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Mn(t,n,e,r)}function bn(t){if(t instanceof Mn)return new Mn(t.h,t.s,t.l,t.opacity);if(t instanceof Kt||(t=fn(t)),!t)return new Mn;if(t instanceof Mn)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,s=o-i,u=(o+i)/2;return s?(a=n===o?(e-r)/s+6*(e0&&u<1?0:a,new Mn(a,s,u,t.opacity)}function Mn(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function kn(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function An(t){return function(){return t}}function Sn(t){return 1==(t=+t)?Nn:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):An(isNaN(n)?e:n)}}function Nn(t,n){var e=n-t;return e?function(t,n){return function(e){return t+e*n}}(t,e):An(isNaN(t)?n:t)}Wt(Kt,fn,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:cn,formatHex:cn,formatHsl:function(){return bn(this).formatHsl()},formatRgb:hn,toString:hn}),Wt(vn,_n,Zt(Kt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new vn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new vn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:yn,formatHex:yn,formatRgb:mn,toString:mn})),Wt(Mn,(function(t,n,e,r){return 1===arguments.length?bn(t):new Mn(t,n,e,null==r?1:r)}),Zt(Kt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Mn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Mn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new vn(kn(t>=240?t-240:t+120,i,r),kn(t,i,r),kn(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var En=function t(n){var e=Sn(n);function r(t,n){var r=e((t=_n(t)).r,(n=_n(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),a=Nn(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}return r.gamma=t,r}(1);function Tn(t,n){n||(n=[]);var e,r=t?Math.min(n.length,t.length):0,i=n.slice();return function(o){for(e=0;eo&&(i=n.slice(o,i),s[a]?s[a]+=i:s[++a]=i),(e=e[0])===(r=r[0])?s[a]?s[a]+=r:s[++a]=r:(s[++a]=null,u.push({i:a,x:Hn(e,r)})),o=Bn.lastIndex;return o180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Hn(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,a.rotate,s,u),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Hn(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,a.skewX,s,u),function(t,n,e,r,o,a){if(t!==e||n!==r){var s=o.push(i(o)+"scale(",null,",",null,")");a.push({i:s-4,x:Hn(t,e)},{i:s-2,x:Hn(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,s,u),o=a=null,function(t){for(var n,e=-1,r=u.length;++e=0&&(t=t.slice(0,n)),!t||"start"===t}))}(n)?Yt:Ut;return function(){var a=o(this,t),s=a.on;s!==r&&(i=(r=s).copy()).on(n,e),a.on=i}}var ge=gt.prototype.constructor;function _e(t){return function(){this.style.removeProperty(t)}}function ve(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function ye(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&ve(t,o,e)),r}return o._value=n,o}function me(t){return function(n){this.textContent=t.call(this,n)}}function we(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&me(r)),n}return r._value=t,r}var xe=0;function be(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function Me(t){return gt().transition(t)}function ke(){return++xe}var Ae=gt.prototype;be.prototype=Me.prototype={constructor:be,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=p(t));for(var r=this._groups,i=r.length,o=new Array(i),a=0;an?1:t>=n?0:NaN}function ze(t){let n=t,e=t,r=t;function i(t,n,i=0,o=t.length){if(i>>1;r(t[e],n)<0?i=e+1:o=e}while(it(n)-e,e=je,r=(n,e)=>je(t(n),e)),{left:i,center:function(t,e,r=0,o=t.length){const a=i(t,e,r,o-1);return a>r&&n(t[a-1],e)>-n(t[a],e)?a-1:a},right:function(t,n,i=0,o=t.length){if(i>>1;r(t[e],n)<=0?i=e+1:o=e}while(i2&&e.state<5,e.state=6,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):a=!1;a&&delete t.__transition}}(this,t)}))},gt.prototype.transition=function(t){var n,e;t instanceof be?(n=t._id,t=t._name):(n=ke(),(e=Se).time=Bt(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o=0?(o>=Ge?10:o>=Ye?5:o>=Ue?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Ge?10:o>=Ye?5:o>=Ue?2:1)}function We(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e=i)&&(e=i)}return e}function Ze(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}const Ke=Symbol("implicit");function Qe(t){return+t}var Je=[0,1];function tr(t){return t}function nr(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:function(t){return function(){return t}}(isNaN(n)?NaN:.5)}function er(t,n,e){var r=t[0],i=t[1],o=n[0],a=n[1];return in&&(e=t,t=n,n=e),l=function(e){return Math.max(t,Math.min(n,e))}),r=u>2?rr:er,i=o=null,h}function h(n){return null==n||isNaN(n=+n)?e:(i||(i=r(a.map(t),s,u)))(t(l(n)))}return h.invert=function(e){return l(n((o||(o=r(s,a.map(t),Hn)))(e)))},h.domain=function(t){return arguments.length?(a=Array.from(t,Qe),c()):a.slice()},h.range=function(t){return arguments.length?(s=Array.from(t),c()):s.slice()},h.rangeRound=function(t){return s=Array.from(t),u=jn,c()},h.clamp=function(t){return arguments.length?(l=!!t||tr,c()):l!==tr},h.interpolate=function(t){return arguments.length?(u=t,c()):u},h.unknown=function(t){return arguments.length?(e=t,h):e},function(e,r){return t=e,n=r,c()}}function ar(){return or()(tr,tr)}function sr(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function ur(t){return(t=sr(Math.abs(t)))?t[1]:NaN}var lr,cr=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function hr(t){if(!(n=cr.exec(t)))throw new Error("invalid format: "+t);var n;return new fr({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function fr(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function pr(t,n){var e=sr(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}hr.prototype=fr.prototype,fr.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var dr={"%":(t,n)=>(100*t).toFixed(n),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,n)=>t.toExponential(n),f:(t,n)=>t.toFixed(n),g:(t,n)=>t.toPrecision(n),o:t=>Math.round(t).toString(8),p:(t,n)=>pr(100*t,n),r:pr,s:function(t,n){var e=sr(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(lr=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+sr(t,Math.max(0,n+o-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function gr(t){return t}var _r,vr,yr,mr=Array.prototype.map,wr=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function xr(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?gr:(n=mr.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,s=n[0],u=0;i>0&&s>0&&(u+s+1>r&&(s=Math.max(1,r-u)),o.push(t.substring(i-=s,i+s)),!((u+=s+1)>r));)s=n[a=(a+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?gr:function(t){return function(n){return n.replace(/[0-9]/g,(function(n){return t[+n]}))}}(mr.call(t.numerals,String)),u=void 0===t.percent?"%":t.percent+"",l=void 0===t.minus?"−":t.minus+"",c=void 0===t.nan?"NaN":t.nan+"";function h(t){var n=(t=hr(t)).fill,e=t.align,h=t.sign,f=t.symbol,p=t.zero,d=t.width,g=t.comma,_=t.precision,v=t.trim,y=t.type;"n"===y?(g=!0,y="g"):dr[y]||(void 0===_&&(_=12),v=!0,y="g"),(p||"0"===n&&"="===e)&&(p=!0,n="0",e="=");var m="$"===f?i:"#"===f&&/[boxX]/.test(y)?"0"+y.toLowerCase():"",w="$"===f?o:/[%p]/.test(y)?u:"",x=dr[y],b=/[defgprs%]/.test(y);function M(t){var i,o,u,f=m,M=w;if("c"===y)M=x(t)+M,t="";else{var k=(t=+t)<0||1/t<0;if(t=isNaN(t)?c:x(Math.abs(t),_),v&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),k&&0==+t&&"+"!==h&&(k=!1),f=(k?"("===h?h:l:"-"===h||"("===h?"":h)+f,M=("s"===y?wr[8+lr/3]:"")+M+(k&&"("===h?")":""),b)for(i=-1,o=t.length;++i(u=t.charCodeAt(i))||u>57){M=(46===u?a+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}g&&!p&&(t=r(t,1/0));var A=f.length+t.length+M.length,S=A>1)+f+t+M+S.slice(A);break;default:t=S+f+t+M}return s(t)}return _=void 0===_?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_)),M.toString=function(){return t+""},M}return{format:h,formatPrefix:function(t,n){var e=h(((t=hr(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(ur(n)/3))),i=Math.pow(10,-r),o=wr[8+r/3];return function(t){return e(i*t)+o}}}}function br(t,n,e,r){var i,o=function(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Ge?i*=10:o>=Ye?i*=5:o>=Ue&&(i*=2),n0)return[t];if((r=n0){let e=Math.round(t/a),r=Math.round(n/a);for(e*an&&--r,o=new Array(i=r-e+1);++sn&&--r,o=new Array(i=r-e+1);++s0;){if((i=$e(u,l,e))===r)return o[a]=u,o[s]=l,n(o);if(i>0)u=Math.floor(u/i)*i,l=Math.ceil(l/i)*i;else{if(!(i<0))break;u=Math.ceil(u*i)/i,l=Math.floor(l*i)/i}r=i}return t},t}function kr(){var t=ar();return t.copy=function(){return ir(t,kr())},Ze.apply(t,arguments),Mr(t)}_r=xr({thousands:",",grouping:[3],currency:["$",""]}),vr=_r.format,yr=_r.formatPrefix;var Ar="http://www.w3.org/1999/xhtml",Sr={svg:"http://www.w3.org/2000/svg",xhtml:Ar,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Nr(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),Sr.hasOwnProperty(n)?{space:Sr[n],local:t}:t}function Er(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===Ar&&n.documentElement.namespaceURI===Ar?n.createElement(t):n.createElementNS(e,t)}}function Tr(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Cr(t){var n=Nr(t);return(n.local?Tr:Er)(n)}function Lr(){}function Hr(t){return null==t?Lr:function(){return this.querySelector(t)}}function Dr(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function Pr(){return[]}function Br(t){return function(n){return n.matches(t)}}var Or=Array.prototype.find;function Fr(){return this.firstElementChild}var jr=Array.prototype.filter;function zr(){return Array.from(this.children)}function Ir(t){return new Array(t.length)}function Rr(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function qr(t){return function(){return t}}function Xr(t,n,e,r,i,o){for(var a,s=0,u=n.length,l=o.length;sn?1:t>=n?0:NaN}function $r(t){return function(){this.removeAttribute(t)}}function Wr(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Zr(t,n){return function(){this.setAttribute(t,n)}}function Kr(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function Qr(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function Jr(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function ti(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function ni(t){return function(){this.style.removeProperty(t)}}function ei(t,n,e){return function(){this.style.setProperty(t,n,e)}}function ri(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function ii(t,n){return t.style.getPropertyValue(n)||ti(t).getComputedStyle(t,null).getPropertyValue(n)}function oi(t){return function(){delete this[t]}}function ai(t,n){return function(){this[t]=n}}function si(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function ui(t){return t.trim().split(/^|\s+/)}function li(t){return t.classList||new ci(t)}function ci(t){this._node=t,this._names=ui(t.getAttribute("class")||"")}function hi(t,n){for(var e=li(t),r=-1,i=n.length;++r=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}function Ti(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Pi=[null];function Bi(t,n){this._groups=t,this._parents=n}function Oi(t){return"string"==typeof t?new Bi([[document.querySelector(t)]],[document.documentElement]):new Bi([[t]],Pi)}function Fi(t,n){if(t=function(t){let n;for(;n=t.sourceEvent;)t=n;return t}(t),void 0===n&&(n=t.currentTarget),n){var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,[(r=r.matrixTransform(n.getScreenCTM().inverse())).x,r.y]}if(n.getBoundingClientRect){var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}}return[t.pageX,t.pageY]}Bi.prototype={constructor:Bi,select:function(t){"function"!=typeof t&&(t=Hr(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i=x&&(x=w+1);!(m=_[x])&&++x=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=Ur);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o1?this.each((null==n?ni:"function"==typeof n?ri:ei)(t,n,null==e?"":e)):ii(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?oi:"function"==typeof n?si:ai)(t,n)):this.node()[t]},classed:function(t,n){var e=ui(t+"");if(arguments.length<2){for(var r=li(this.node()),i=-1,o=e.length;++i()=>t;function Xi(t,{sourceEvent:n,subject:e,target:r,identifier:i,active:o,x:a,y:s,dx:u,dy:l,dispatch:c}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:e,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:u,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:c}})}function Vi(t){return!t.ctrlKey&&!t.button}function Gi(){return this.parentNode}function Yi(t,n){return null==n?{x:t.x,y:t.y}:n}function Ui(){return navigator.maxTouchPoints||"ontouchstart"in this}function $i(){var t,n,e,r,i=Vi,o=Gi,a=Yi,s=Ui,u={},l=wt("start","drag","end"),c=0,h=0;function f(t){t.on("mousedown.drag",p).filter(s).on("touchstart.drag",_).on("touchmove.drag",v,ji).on("touchend.drag touchcancel.drag",y).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(a,s){if(!r&&i.call(this,a,s)){var u=m(this,o.call(this,a,s),a,s,"mouse");u&&(Oi(a.view).on("mousemove.drag",d,zi).on("mouseup.drag",g,zi),function(t){var n=t.document.documentElement,e=Oi(t).on("dragstart.drag",Ri,zi);"onselectstart"in n?e.on("selectstart.drag",Ri,zi):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}(a.view),Ii(a),e=!1,t=a.clientX,n=a.clientY,u("start",a))}}function d(r){if(Ri(r),!e){var i=r.clientX-t,o=r.clientY-n;e=i*i+o*o>h}u.mouse("drag",r)}function g(t){Oi(t.view).on("mousemove.drag mouseup.drag",null),function(t,n){var e=t.document.documentElement,r=Oi(t).on("dragstart.drag",null);n&&(r.on("click.drag",Ri,zi),setTimeout((function(){r.on("click.drag",null)}),0)),"onselectstart"in e?r.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}(t.view,e),Ri(t),u.mouse("end",t)}function _(t,n){if(i.call(this,t,n)){var e,r,a=t.changedTouches,s=o.call(this,t,n),u=a.length;for(e=0;e+t(n)}function Ji(t,n){return n=Math.max(0,t.bandwidth()-2*n)/2,t.round()&&(n=Math.round(n)),e=>+t(e)+n}function to(){return!this.__axis}function no(t,n){var e=[],r=null,i=null,o=6,a=6,s=3,u="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,l=1===t||4===t?-1:1,c=4===t||2===t?"x":"y",h=1===t||3===t?Zi:Ki;function f(f){var p=null==r?n.ticks?n.ticks.apply(n,e):n.domain():r,d=null==i?n.tickFormat?n.tickFormat.apply(n,e):Wi:i,g=Math.max(o,0)+s,_=n.range(),v=+_[0]+u,y=+_[_.length-1]+u,m=(n.bandwidth?Ji:Qi)(n.copy(),u),w=f.selection?f.selection():f,x=w.selectAll(".domain").data([null]),b=w.selectAll(".tick").data(p,n).order(),M=b.exit(),k=b.enter().append("g").attr("class","tick"),A=b.select("line"),S=b.select("text");x=x.merge(x.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),b=b.merge(k),A=A.merge(k.append("line").attr("stroke","currentColor").attr(c+"2",l*o)),S=S.merge(k.append("text").attr("fill","currentColor").attr(c,l*g).attr("dy",1===t?"0em":3===t?"0.71em":"0.32em")),f!==w&&(x=x.transition(f),b=b.transition(f),A=A.transition(f),S=S.transition(f),M=M.transition(f).attr("opacity",1e-6).attr("transform",(function(t){return isFinite(t=m(t))?h(t+u):this.getAttribute("transform")})),k.attr("opacity",1e-6).attr("transform",(function(t){var n=this.parentNode.__axis;return h((n&&isFinite(n=n(t))?n:m(t))+u)}))),M.remove(),x.attr("d",4===t||2===t?a?"M"+l*a+","+v+"H"+u+"V"+y+"H"+l*a:"M"+u+","+v+"V"+y:a?"M"+v+","+l*a+"V"+u+"H"+y+"V"+l*a:"M"+v+","+u+"H"+y),b.attr("opacity",1).attr("transform",(function(t){return h(m(t)+u)})),A.attr(c+"2",l*o),S.attr(c,l*g).text(d),w.filter(to).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===t?"start":4===t?"end":"middle"),w.each((function(){this.__axis=m}))}return f.scale=function(t){return arguments.length?(n=t,f):n},f.ticks=function(){return e=Array.from(arguments),f},f.tickArguments=function(t){return arguments.length?(e=null==t?[]:Array.from(t),f):e.slice()},f.tickValues=function(t){return arguments.length?(r=null==t?null:Array.from(t),f):r&&r.slice()},f.tickFormat=function(t){return arguments.length?(i=t,f):i},f.tickSize=function(t){return arguments.length?(o=a=+t,f):o},f.tickSizeInner=function(t){return arguments.length?(o=+t,f):o},f.tickSizeOuter=function(t){return arguments.length?(a=+t,f):a},f.tickPadding=function(t){return arguments.length?(s=+t,f):s},f.offset=function(t){return arguments.length?(u=+t,f):u},f}function eo(t){return no(3,t)}function ro(t){return no(4,t)}const io=Math.PI,oo=2*io,ao=oo-1e-6;function so(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function uo(){return new so}function lo(t){return function(){return t}}so.prototype=uo.prototype={constructor:so,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,e,r){this._+="Q"+ +t+","+ +n+","+(this._x1=+e)+","+(this._y1=+r)},bezierCurveTo:function(t,n,e,r,i,o){this._+="C"+ +t+","+ +n+","+ +e+","+ +r+","+(this._x1=+i)+","+(this._y1=+o)},arcTo:function(t,n,e,r,i){t=+t,n=+n,e=+e,r=+r,i=+i;var o=this._x1,a=this._y1,s=e-t,u=r-n,l=o-t,c=a-n,h=l*l+c*c;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(h>1e-6)if(Math.abs(c*s-u*l)>1e-6&&i){var f=e-o,p=r-a,d=s*s+u*u,g=f*f+p*p,_=Math.sqrt(d),v=Math.sqrt(h),y=i*Math.tan((io-Math.acos((d+h-g)/(2*_*v)))/2),m=y/v,w=y/_;Math.abs(m-1)>1e-6&&(this._+="L"+(t+m*l)+","+(n+m*c)),this._+="A"+i+","+i+",0,0,"+ +(c*f>l*p)+","+(this._x1=t+w*s)+","+(this._y1=n+w*u)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n,o=!!o;var a=(e=+e)*Math.cos(r),s=e*Math.sin(r),u=t+a,l=n+s,c=1^o,h=o?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+u+","+l:(Math.abs(this._x1-u)>1e-6||Math.abs(this._y1-l)>1e-6)&&(this._+="L"+u+","+l),e&&(h<0&&(h=h%oo+oo),h>ao?this._+="A"+e+","+e+",0,1,"+c+","+(t-a)+","+(n-s)+"A"+e+","+e+",0,1,"+c+","+(this._x1=u)+","+(this._y1=l):h>1e-6&&(this._+="A"+e+","+e+",0,"+ +(h>=io)+","+c+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};var co=Math.PI,ho=2*co;function fo(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function po(t){this._context=t}function go(t){return new po(t)}function _o(t){return t[0]}function vo(t){return t[1]}function yo(t,n){var e=lo(!0),r=null,i=go,o=null;function a(a){var s,u,l,c=(a=fo(a)).length,h=!1;for(null==r&&(o=i(l=uo())),s=0;s<=c;++s)!(s=t.length)&&(this.options.selectedAttributeIdx=0),this._removeMarkedSegmentsOnMap(),this._resetDrag(!0),this._data=t,this._init_options(),this._prepareData(),this._calculateElevationBounds(),this._appendScales(),this._appendGrid(),0!==Object.keys(t).length&&this._createChart(this.options.selectedAttributeIdx),this._createSelectionBox()},resize:function(t){t.width&&(this.options.width=t.width),t.height&&(this.options.height=t.height),_t(this._container).selectAll("svg").attr("width",this.options.width).attr("height",this.options.height),this._addData(this._data)},_initToggle:function(){t.Browser.touch?t.DomEvent.on(this._container,"click",t.DomEvent.stopPropagation):t.DomEvent.disableClickPropagation(this._container),this.options.expandControls&&(t.DomEvent.on(this._button,"click",this._expand,this),t.DomEvent.on(this._closeButton,"click",this._expand,this))},_dragHandler:function(){"undefined"!=typeof event&&(event.preventDefault(),event.stopPropagation()),this._gotDragged=!0,this._drawDragRectangle()},_drawDragRectangle:function(){if(this._dragStartCoords){var t=this._dragCurrentCoords=this._dragCache.end=vt(this._background.node()),n=Math.min(this._dragStartCoords[0],t[0]),e=Math.max(this._dragStartCoords[0],t[0]);if(this._dragRectangle||this._dragRectangleG)this._dragRectangle.attr("width",e-n).attr("x",n);else{var r=_t(this._container).select("svg").select("g");this._dragRectangleG=r.append("g"),this._dragRectangle=this._dragRectangleG.append("rect").attr("width",e-n).attr("height",this._svgHeight).attr("x",n).attr("class","mouse-drag").style("fill","grey").style("opacity",.5).style("pointer-events","none")}}},_resetDrag:function(t){if(this._dragRectangleG&&(this._dragRectangleG.remove(),this._dragRectangleG=null,this._dragRectangle=null,!0!==t)){var n=this._calculateFullExtent(this._areasFlattended);n&&this._map.fitBounds(n)}},_dragEndHandler:function(){if(!this._dragStartCoords||!this._gotDragged)return this._dragStartCoords=null,this._gotDragged=!1,void this._resetDrag();var t=this._findItemForX(this._dragStartCoords[0]),n=this._findItemForX(this._dragCurrentCoords[0]);this._fitSection(t,n),this._dragStartCoords=null,this._gotDragged=!1},_dragStartHandler:function(){event.preventDefault(),event.stopPropagation(),this._gotDragged=!1,this._dragStartCoords=this._dragCache.start=vt(this._background.node())},_calculateFullExtent:function(n){if(!n||n.length<1)return null;var e=new t.latLngBounds(n[0].latlng,n[0].latlng);return n.forEach((function(t){e.contains(t.latlng)||e.extend(t.latlng)})),e},_fitSection:function(t,n){var e,r=Math.min(t,n),i=Math.max(t,n);r!==i?e=this._calculateFullExtent(this._areasFlattended.slice(r,i+1)):this._areasFlattended.length>0&&(e=[this._areasFlattended[r].latlng,this._areasFlattended[i].latlng]),e&&this._map.fitBounds(e)},_expand:function(){!0!==this.options.expandControls&&(this._showState=!1),this._showState?(_t(this._button).style("display","block"),_t(this._container).selectAll("svg").style("display","none"),_t(this._closeButton).style("display","none")):(_t(this._button).style("display","none"),_t(this._container).selectAll("svg").style("display","block"),_t(this._closeButton).style("display","block")),this._showState=!this._showState,"function"==typeof this.options.expandCallback&&this.options.expandCallback(this._showState)},_removeChart:function(){void 0!==this._svg&&(this._svg.selectAll("path.area").remove(),this._svg.selectAll("path.border-top").remove(),this._svg.selectAll(".legend").remove(),this._svg.selectAll(".lineSelection").remove(),this._svg.selectAll(".horizontalLine").remove(),this._svg.selectAll(".horizontalLineText").remove())},_randomNumber:function(t){return Math.round(Math.random()*(t-0))},_d3ColorCategorical:[Eo,To,Lo,No,Ho,Co],_prepareData:function(){this._coordinates=[],this._elevations=[],this._cumulatedDistances=[],this._cumulatedDistances.push(0),this._categories=[];var n,e=this._data;if(void 0===this._mappings){var r=this._randomNumber(this._d3ColorCategorical.length-1);n=function t(){var n=new qe,e=[],r=[],i=Ke;function o(t){let o=n.get(t);if(void 0===o){if(i!==Ke)return i;n.set(t,o=e.push(t)-1)}return r[o%r.length]}return o.domain=function(t){if(!arguments.length)return e.slice();e=[],n=new qe;for(const r of t)n.has(r)||n.set(r,e.push(r)-1);return o},o.range=function(t){return arguments.length?(r=Array.from(t),o):r.slice()},o.unknown=function(t){return arguments.length?(i=t,o):i},o.copy=function(){return t(e,r).unknown(i)},Ze.apply(o,arguments),o}(this._d3ColorCategorical[r])}for(var i=0;in||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e>i||void 0===e&&i>=i)&&(e=i)}return e}(this._elevations),e=t-n;this._elevationBounds={min:e<10?n-10:n-.1*e,max:e<10?t+10:t+.1*e}},_showMapMarker:function(t,n,e){var r=this._map.latLngToLayerPoint(t),i=r.y-75;if(!this._mouseHeightFocus){var o=_t(".leaflet-overlay-pane svg").append("g");this._mouseHeightFocus=o.append("svg:line").attr("class","height-focus line").attr("x2","0").attr("y2","0").attr("x1","0").attr("y1","0"),this._mouseHeightFocusLabel=o.append("g").attr("class","height-focus label"),this._mouseHeightFocusLabelRect=this._mouseHeightFocusLabel.append("rect").attr("class","bBox"),this._mouseHeightFocusLabelTextElev=this._mouseHeightFocusLabel.append("text").attr("class","tspan"),this._mouseHeightFocusLabelTextType=this._mouseHeightFocusLabel.append("text").attr("class","tspan"),(this._pointG=o.append("g").attr("class","height-focus circle")).append("svg:circle").attr("r",5).attr("cx",0).attr("cy",0).attr("class","height-focus circle-lower")}this._mouseHeightFocusLabel.style("display","block"),this._mouseHeightFocus.attr("x1",r.x).attr("x2",r.x).attr("y1",r.y).attr("y2",i).style("display","block"),this._pointG.attr("transform","translate("+r.x+","+r.y+")").style("display","block"),this._mouseHeightFocusLabelRect.attr("x",r.x+3).attr("y",i).attr("class","bBox"),this._mouseHeightFocusLabelTextElev.attr("x",r.x+5).attr("y",i+12).text(n+" m").attr("class","tspan mouse-height-box-text"),this._mouseHeightFocusLabelTextType.attr("x",r.x+5).attr("y",i+24).text(e).attr("class","tspan mouse-height-box-text");var a=this._dynamicBoxSize("text.tspan")[1],s=""===e?18:30;yt(".bBox").attr("width",a+10).attr("height",s)},_createChart:function(t){var n=0===this._categories.length?[]:this._categories[t].geometries;this._areasFlattended=[].concat.apply([],n);for(var e=0;ee?e:r)+") rotate("+t.angle+")"})),_t(".horizontalLine").attr("y1",r<0?0:r>e?e:r).attr("y2",r<0?0:r>e?e:r),t._highlightedCoords=r>=e?[]:t._findCoordsForY(r),_t(".horizontalLineText").attr("y",r<=10?0:r>e?e-10:r-10).text(vr(".0f")(t._y.invert(r<0?0:r>e?e:r))+" m"),t._removeMarkedSegmentsOnMap(),t._markSegmentsOnMap(t._highlightedCoords)})).on("end",(function(n){_t(this).classed("active",!1),_t(".horizontalLine").classed("active",!1),t._removeMarkedSegmentsOnMap(),t._markSegmentsOnMap(t._highlightedCoords)})))},_markSegmentsOnMap:function(n){if(n)if(n.length>1){this._markedSegments=t.featureGroup();var e,i=o(n);try{for(i.s();!(e=i.n()).done;){var a=e.value;t.polyline(a,r(r({},this._highlightStyle),{interactive:!1})).addTo(this._markedSegments)}}catch(t){i.e(t)}finally{i.f()}this._markedSegments.addTo(this._map).bringToFront()}else this._markedSegments=t.polyline(n,this._highlightStyle).addTo(this._map)},_removeMarkedSegmentsOnMap:function(){void 0!==this._markedSegments&&this._map.removeLayer(this._markedSegments)},_appendScales:function(){var t=Boolean(this._totalDistance<=10);this._x=kr().range([0,this._svgWidth]),this._y=kr().range([this._svgHeight,0]),this._x.domain([0,this._totalDistance]),this._y.domain([this._elevationBounds.min,this._elevationBounds.max]),this._xAxis=eo().scale(this._x),!0===t?this._xAxis.tickFormat((function(t){return vr(".2f")(t)+" km"})):this._xAxis.tickFormat((function(t){return vr(".0f")(t)+" km"})),this._xAxis.ticks(this.options.xTicks?Math.pow(2,this.options.xTicks):Math.round(this._svgWidth/75),"s"),this._yAxis=ro().scale(this._y).tickFormat((function(t){return t+" m"})),this._yAxis.ticks(this.options.yTicks?Math.pow(2,this.options.yTicks):Math.round(this._svgHeight/30),"s")},_appendBackground:function(){var n=this._background=_t(this._container).select("svg").select("g").append("rect").attr("width",this._svgWidth).attr("height",this._svgHeight).style("fill","none").style("stroke","none").style("pointer-events","all").on("mousemove.focusbox",this._mousemoveHandler.bind(this)).on("mouseout.focusbox",this._mouseoutHandler.bind(this));t.Browser.android?(n.on("touchstart.drag",this._dragHandler.bind(this)).on("touchstart.drag",this._dragStartHandler.bind(this)).on("touchstart.focusbox",this._mousemoveHandler.bind(this)),t.DomEvent.on(this._container,"touchend",this._dragEndHandler,this)):(n.on("mousemove.focusbox",this._mousemoveHandler.bind(this)).on("mouseout.focusbox",this._mouseoutHandler.bind(this)).on("mousedown.drag",this._dragStartHandler.bind(this)).on("mousemove.drag",this._dragHandler.bind(this)),t.DomEvent.on(this._container,"mouseup",this._dragEndHandler,this))},_appendGrid:function(){this._svg.append("g").attr("class","grid").attr("transform","translate(0,"+this._svgHeight+")").call(this._make_x_axis().tickSize(-this._svgHeight,0,0).ticks(Math.round(this._svgWidth/75)).tickFormat("")),this._svg.append("g").attr("class","grid").call(this._make_y_axis().tickSize(-this._svgWidth,0,0).ticks(Math.round(this._svgHeight/30)).tickFormat("")),this._svg.append("g").attr("transform","translate(0,"+this._svgHeight+")").attr("class","x axis").call(this._xAxis),this._svg.append("g").attr("transform","translate(-2,0)").attr("class","y axis").call(this._yAxis)},_appendAreas:function(t,n,e){var r=this._categories[n].attributes[e].color,i=this;this._area=function(t,n,e){var r=null,i=lo(!0),o=null,a=go,s=null;function u(u){var l,c,h,f,p,d=(u=fo(u)).length,g=!1,_=new Array(d),v=new Array(d);for(null==o&&(s=a(p=uo())),l=0;l<=d;++l){if(!(l=c;--h)s.point(_[h],v[h]);s.lineEnd(),s.areaEnd()}g&&(_[l]=+t(f,l,u),v[l]=+n(f,l,u),s.point(r?+r(f,l,u):_[l],e?+e(f,l,u):v[l]))}if(p)return s=null,p+""||null}function l(){return yo().defined(i).curve(a).context(o)}return t="function"==typeof t?t:void 0===t?_o:lo(+t),n="function"==typeof n?n:lo(void 0===n?0:+n),e="function"==typeof e?e:void 0===e?vo:lo(+e),u.x=function(n){return arguments.length?(t="function"==typeof n?n:lo(+n),r=null,u):t},u.x0=function(n){return arguments.length?(t="function"==typeof n?n:lo(+n),u):t},u.x1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:lo(+t),u):r},u.y=function(t){return arguments.length?(n="function"==typeof t?t:lo(+t),e=null,u):n},u.y0=function(t){return arguments.length?(n="function"==typeof t?t:lo(+t),u):n},u.y1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:lo(+t),u):e},u.lineX0=u.lineY0=function(){return l().x(t).y(n)},u.lineY1=function(){return l().x(t).y(e)},u.lineX1=function(){return l().x(r).y(n)},u.defined=function(t){return arguments.length?(i="function"==typeof t?t:lo(!!t),u):i},u.curve=function(t){return arguments.length?(a=t,null!=o&&(s=a(o)),u):a},u.context=function(t){return arguments.length?(null==t?o=s=null:s=a(o=t),u):o},u}().x((function(t){var n=i._x(t.position);return t.xDiagonalCoordinate=n,n})).y0(this._svgHeight).y1((function(t){return i._y(t.altitude)})).curve(go),this._areapath=this._svg.append("path").attr("class","area"),this._areapath.datum(t).attr("d",this._area).attr("stroke",r).styles(this._graphStyle).style("fill",r).style("pointer-events","none")},_make_x_axis:function(){return eo().scale(this._x)},_make_y_axis:function(){return ro().scale(this._y)},_createSelectionBox:function(){var t=this,n=_t(this._container).select("svg"),e=this._width-this._margin.right,r=this._height-this._margin.bottom+this._margin.bottom/2+6,i=[{x:e-25,y:r+3,color:"#000",type:xo,id:"leftArrowSelection",angle:0},{x:e-10,y:r,color:"#000",type:xo,id:"rightArrowSelection",angle:180}],o=n.selectAll(".select-symbol").data(i);o.remove(),o=n.selectAll(".select-symbol").data(i),t._data.length>1&&o.enter().append("path").merge(o).attr("class","select-symbol").attr("d",bo().type((function(t){return t.type}))).attr("transform",(function(t){return"translate("+t.x+","+t.y+") rotate("+t.angle+")"})).attr("id",(function(t){return t.id})).style("fill",(function(t){return t.color})).on("mousedown",(function(n){"rightArrowSelection"===n.id&&s(),"leftArrowSelection"===n.id&&u(),t._gotDragged=!0,t._dragStartCoords=t._dragCache.start,t._dragCurrentCoords=t._dragCache.end}));var a=function(i){if(t._selectionText&&t._selectionText.remove(),0!==t._categories.length){var o=t._categories[i].info;"function"==typeof t.options.chooseSelectionCallback&&t.options.chooseSelectionCallback(i,o);var a=[{selection:o.text}];t._selectionText=n.selectAll("selection_text").data(a).enter().append("text").attr("x",e-35).attr("y",r+4).text((function(t){return t.selection})).attr("class","select-info").attr("id","selectionText").attr("text-anchor","end")}};a(this.options.selectedAttributeIdx);var s=function(){var n=t.options.selectedAttributeIdx+=1;n===t._categories.length&&(t.options.selectedAttributeIdx=n=0),a(n),t._removeChart(),t._removeMarkedSegmentsOnMap(),t._createChart(n)},u=function(){var n=t.options.selectedAttributeIdx-=1;-1===n&&(t.options.selectedAttributeIdx=n=t._categories.length-1),a(n),t._removeChart(),t._removeMarkedSegmentsOnMap(),t._createChart(n)}},_createLegend:function(){var t=this,n=this,e=[];if(this._categories.length>0)for(var r in this._categories[this.options.selectedAttributeIdx].legend)e.push(this._categories[this.options.selectedAttributeIdx].legend[r]);var i=this._height-this._margin.bottom,o=i+this._margin.bottom/2,a=[{text:this._getTranslation("legend")}],s=this._svg.selectAll(".hlegend-hover").data(e).enter().append("g").attr("class","legend").style("display","none").attr("transform",(function(t,n){return"translate(-8,"+(14*n-28)+")"})),u=s.append("rect").attr("class","legend-rect").attr("x",15).attr("y",36).attr("width",6).attr("height",6);0!==Object.keys(this._graphStyle).length?u.styles(this._graphStyle).style("stroke",(function(t,n){return t.color})).style("fill",(function(t,n){return t.color})):u.style("stroke","black").style("fill",(function(t,n){return t.color})),s.append("text").attr("class","legend-text").attr("x",30).attr("y",42).text((function(t,e){var r=t.text;return n._boxBoundY=(i-2*i/3+7)*e,r}));var l=this._svg.selectAll(".legend-hover").data(a).enter().append("g").attr("class","legend-hover");this._showLegend=!1,l.append("text").attr("x",15).attr("y",o).attr("text-anchor","start").text((function(t,n){return t.text})).on("mouseover",(function(){yt(".legend").style("display","block")})).on("mouseleave",(function(){t._showLegend||yt(".legend").style("display","none")})).on("click",(function(){t._showLegend=!t._showLegend}))},_dynamicBoxSize:function(t){for(var n=yt(t).nodes().length,e=[],r=0;r0&&void 0!==arguments[0]?arguments[0]:1e3;this.mouseoutDelay&&window.clearTimeout(this.mouseoutDelay),this.mouseoutDelay=window.setTimeout((function(){t._mouseoutHandler()}),n)},mapMousemoveHandler:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=n.showMapMarker,r=void 0===e||e;if(!1!==this._areasFlattended){var i,a=null,s=2*Math.pow(100,2),u=1.1/111111,l=o(this._areasFlattended);try{for(l.s();!(i=l.n()).done;){var c=i.value,h=t.latlng.lat-c.latlng.lat,f=t.latlng.lng-c.latlng.lng;if(Math.abs(h)1&&void 0!==arguments[1])||arguments[1],r=t.altitude,i=t.position,o=t.latlng,a=t.areaIdx,s=t.type,u=this._dynamicBoxSize(".focusbox text")[1]+10;n=0===a?this._categories[this.options.selectedAttributeIdx].distances[a]:this._categories[this.options.selectedAttributeIdx].distances[a]-this._categories[this.options.selectedAttributeIdx].distances[a-1],e&&this._showMapMarker(o,r,s),this._distTspan.text(" "+i.toFixed(1)+" km"),this._altTspan.text(" "+r+" m"),this._areaTspan.text(" "+n.toFixed(1)+" km"),this._typeTspan.text(" "+s),this._focusRect.attr("width",u),this._focusLine.style("display","block").attr("x1",this._x(i)).attr("x2",this._x(i));var l=this._x(i)-(u+5),c=this._width-this._margin.left-this._margin.right;this._x(i)+uc&&this._focus.style("display","initial").attr("transform","translate("+l+","+this._y(this._elevationBounds.min)+")")},_findItemForX:function(t){var n=ze((function(t){return t.position})).left,e=this._x.invert(t);return n(this._areasFlattended,e)},_findCoordsForY:function(t){var n=this._y.invert(t);return function(t,n){for(var e=[],r=0;r=n&&e.push(r);for(var i=[],o=0,a=0;a= 2.1.2 < 3.0.0" + } + } } }, "d3-ease": { @@ -2383,45 +2487,44 @@ "dev": true }, "d3-fetch": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.2.0.tgz", - "integrity": "sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", "dev": true, "requires": { - "d3-dsv": "1" + "d3-dsv": "1 - 3" } }, "d3-force": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz", - "integrity": "sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dev": true, "requires": { - "d3-collection": "1", - "d3-dispatch": "1", - "d3-quadtree": "1", - "d3-timer": "1" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" } }, "d3-format": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.4.tgz", - "integrity": "sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.0.1.tgz", + "integrity": "sha512-hdL7+HBIohpgfolhBxr1KX47VMD6+vVD/oEFrxk5yhmzV2prk99EkFKYpXuhVkFpTgHdJ6/4bYcjdLPPXV4tIA==", "dev": true }, "d3-geo": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz", - "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "dev": true, "requires": { - "d3-array": "1" + "d3-array": "2.5.0 - 3" } }, "d3-hierarchy": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", - "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.0.1.tgz", + "integrity": "sha512-RlLTaofEoOrMK1JoXYIGhKTkJFI/6rFrYPgxy6QlZo2BcVc4HGTqEU0rPpzuMq5T/5XcMtAzv1XiLA3zRTfygw==", "dev": true }, "d3-interpolate": { @@ -2434,51 +2537,50 @@ } }, "d3-path": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", "dev": true }, "d3-polygon": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.6.tgz", - "integrity": "sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", "dev": true }, "d3-quadtree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz", - "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", "dev": true }, "d3-random": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.2.tgz", - "integrity": "sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", "dev": true }, "d3-scale": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz", - "integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dev": true, "requires": { - "d3-array": "^1.2.0", - "d3-collection": "1", - "d3-format": "1", - "d3-interpolate": "1", - "d3-time": "1", - "d3-time-format": "2" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" } }, "d3-scale-chromatic": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz", - "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", "dev": true, "requires": { - "d3-color": "1", - "d3-interpolate": "1" + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" } }, "d3-selection": { @@ -2498,27 +2600,30 @@ } }, "d3-shape": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", - "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.0.1.tgz", + "integrity": "sha512-HNZNEQoDhuCrDWEc/BMbF/hKtzMZVoe64TvisFLDp2Iyj0UShB/E6/lBsLlJTfBMbYgftHj90cXJ0SEitlE6Xw==", "dev": true, "requires": { - "d3-path": "1" + "d3-path": "1 - 3" } }, "d3-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", - "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", + "dev": true, + "requires": { + "d3-array": "2 - 3" + } }, "d3-time-format": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.2.3.tgz", - "integrity": "sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.0.0.tgz", + "integrity": "sha512-nzaCwlj+ZVBIlFuVOT1RmU+6xb/7D5IcnhHzHQcBgS/aTa5K9fWZNN5LCXA27LgF5WxoSNJqKBbLcGMtM6Ca6A==", "dev": true, "requires": { - "d3-time": "1" + "d3-time": "1 - 3" } }, "d3-timer": { @@ -2541,23 +2646,38 @@ "d3-timer": "1" } }, - "d3-voronoi": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz", - "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==", - "dev": true - }, "d3-zoom": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", - "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", "dev": true, "requires": { - "d3-dispatch": "1", - "d3-drag": "1", - "d3-interpolate": "1", - "d3-selection": "1", - "d3-transition": "1" + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "dependencies": { + "d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "dev": true + }, + "d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dev": true, + "requires": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + } + } } }, "dashdash": { @@ -2629,6 +2749,15 @@ "object-keys": "^1.0.12" } }, + "delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dev": true, + "requires": { + "robust-predicates": "^3.0.0" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -3419,6 +3548,12 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "dev": true + }, "intersection-observer": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.7.0.tgz", @@ -4964,6 +5099,12 @@ "glob": "^7.1.3" } }, + "robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==", + "dev": true + }, "rollup": { "version": "2.23.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.23.0.tgz", @@ -4973,6 +5114,26 @@ "fsevents": "~2.1.2" } }, + "rollup-plugin-cleaner": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-cleaner/-/rollup-plugin-cleaner-1.0.0.tgz", + "integrity": "sha512-q+Zf9estkFwGede9QzmbkhKeuXzlliOvcICVNzBHAs5xYPPs1XLtfin5TMU2tC2EYjmfaF97saY9MnQM6Og4eA==", + "dev": true, + "requires": { + "rimraf": "^2.6.3" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, "rollup-plugin-copy": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.3.0.tgz", diff --git a/package.json b/package.json index 7296dc7..4ab4630 100755 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "@rollup/plugin-babel": "^5.1.0", "@rollup/plugin-commonjs": "^13.0.2", "@rollup/plugin-node-resolve": "^8.4.0", - "d3": "^5.16.0", + "d3": "^7.1.0", "d3-selection-multi": "^1.0.1", "es-dev-server": "^1.57.0", "jasmine-core": "^3.5.0", @@ -36,6 +36,7 @@ "karma-jasmine": "^3.3.1", "karma-jasmine-html-reporter": "^1.5.4", "rollup": "^2.23.0", + "rollup-plugin-cleaner": "^1.0.0", "rollup-plugin-copy": "^3.3.0", "rollup-plugin-css-porter": "^1.0.2", "rollup-plugin-embed-css": "^1.0.18", diff --git a/rollup.config.js b/rollup.config.js index 3d04a6b..948a104 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,4 +1,5 @@ import nodeResolve from '@rollup/plugin-node-resolve' +import cleaner from 'rollup-plugin-cleaner'; import {terser} from 'rollup-plugin-terser' import babel from '@rollup/plugin-babel' import css from 'rollup-plugin-css-porter' @@ -6,11 +7,12 @@ import copy from 'rollup-plugin-copy' // noinspection JSUnusedGlobalSymbols export default { - input: 'src/L.Control.Heightgraph.js', + input: 'src/index.js', output: [ { file: 'dist/L.Control.Heightgraph.js', - format: 'cjs' + format: 'cjs', + sourcemap: true }, { file: 'dist/L.Control.Heightgraph.min.js', @@ -21,6 +23,11 @@ export default { ], plugins: [ + cleaner({ + targets: [ + './dist/' + ] + }), nodeResolve({ mainFields: ['module','jsnext', 'main'] }), diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..bf06e24 --- /dev/null +++ b/src/index.js @@ -0,0 +1,2 @@ +import './L.Control.Heightgraph' +import './L.Control.Heightgraph.css' \ No newline at end of file