@hpcc-js/common 3.2.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +9528 -289
- package/dist/index.js.map +1 -7
- package/dist/index.umd.cjs +30 -0
- package/dist/index.umd.cjs.map +1 -0
- package/font-awesome/css/font-awesome.css +2337 -0
- package/font-awesome/css/font-awesome.css.map +7 -0
- package/font-awesome/css/font-awesome.min.css +4 -0
- package/package.json +14 -11
- package/src/__package__.ts +1 -1
- package/types/__package__.d.ts +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.umd.cjs","sources":["../src/__package__.ts","../../../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/create.js","../../../node_modules/d3-selection/src/local.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-selection/src/touch.js","../../../node_modules/d3-selection/src/touches.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-color/src/math.js","../../../node_modules/d3-color/src/lab.js","../../../node_modules/d3-color/src/cubehelix.js","../../../node_modules/d3-interpolate/src/basis.js","../../../node_modules/d3-interpolate/src/basisClosed.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/discrete.js","../../../node_modules/d3-interpolate/src/hue.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-interpolate/src/zoom.js","../../../node_modules/d3-interpolate/src/hsl.js","../../../node_modules/d3-interpolate/src/lab.js","../../../node_modules/d3-interpolate/src/hcl.js","../../../node_modules/d3-interpolate/src/cubehelix.js","../../../node_modules/d3-interpolate/src/piecewise.js","../../../node_modules/d3-interpolate/src/quantize.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/linear.js","../../../node_modules/d3-ease/src/quad.js","../../../node_modules/d3-ease/src/cubic.js","../../../node_modules/d3-ease/src/poly.js","../../../node_modules/d3-ease/src/sin.js","../../../node_modules/d3-ease/src/math.js","../../../node_modules/d3-ease/src/exp.js","../../../node_modules/d3-ease/src/circle.js","../../../node_modules/d3-ease/src/bounce.js","../../../node_modules/d3-ease/src/back.js","../../../node_modules/d3-ease/src/elastic.js","../../../node_modules/d3-transition/src/selection/transition.js","../../../node_modules/d3-transition/src/selection/index.js","../../../node_modules/d3-transition/src/active.js","../../../node_modules/d3-array/src/ascending.js","../../../node_modules/d3-array/src/bisector.js","../../../node_modules/d3-array/src/bisect.js","../../../node_modules/d3-array/src/pairs.js","../../../node_modules/d3-array/src/cross.js","../../../node_modules/d3-array/src/descending.js","../../../node_modules/d3-array/src/number.js","../../../node_modules/d3-array/src/variance.js","../../../node_modules/d3-array/src/deviation.js","../../../node_modules/d3-array/src/extent.js","../../../node_modules/d3-array/src/array.js","../../../node_modules/d3-array/src/constant.js","../../../node_modules/d3-array/src/identity.js","../../../node_modules/d3-array/src/range.js","../../../node_modules/d3-array/src/ticks.js","../../../node_modules/d3-array/src/threshold/sturges.js","../../../node_modules/d3-array/src/histogram.js","../../../node_modules/d3-array/src/quantile.js","../../../node_modules/d3-array/src/threshold/freedmanDiaconis.js","../../../node_modules/d3-array/src/threshold/scott.js","../../../node_modules/d3-array/src/max.js","../../../node_modules/d3-array/src/mean.js","../../../node_modules/d3-array/src/median.js","../../../node_modules/d3-array/src/merge.js","../../../node_modules/d3-array/src/min.js","../../../node_modules/d3-array/src/permute.js","../../../node_modules/d3-array/src/scan.js","../../../node_modules/d3-array/src/shuffle.js","../../../node_modules/d3-array/src/sum.js","../../../node_modules/d3-array/src/transpose.js","../../../node_modules/d3-array/src/zip.js","../../../node_modules/d3-collection/src/map.js","../../../node_modules/d3-collection/src/nest.js","../../../node_modules/d3-collection/src/set.js","../../../node_modules/d3-collection/src/keys.js","../../../node_modules/d3-collection/src/values.js","../../../node_modules/d3-collection/src/entries.js","../../../node_modules/d3-dsv/src/dsv.js","../../../node_modules/d3-dsv/src/csv.js","../../../node_modules/d3-dsv/src/tsv.js","../../../node_modules/d3-dsv/src/autoType.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-time/src/interval.js","../../../node_modules/d3-time/src/millisecond.js","../../../node_modules/d3-time/src/duration.js","../../../node_modules/d3-time/src/second.js","../../../node_modules/d3-time/src/minute.js","../../../node_modules/d3-time/src/hour.js","../../../node_modules/d3-time/src/day.js","../../../node_modules/d3-time/src/week.js","../../../node_modules/d3-time/src/month.js","../../../node_modules/d3-time/src/year.js","../../../node_modules/d3-time/src/utcMinute.js","../../../node_modules/d3-time/src/utcHour.js","../../../node_modules/d3-time/src/utcDay.js","../../../node_modules/d3-time/src/utcWeek.js","../../../node_modules/d3-time/src/utcMonth.js","../../../node_modules/d3-time/src/utcYear.js","../../../node_modules/d3-time-format/src/locale.js","../../../node_modules/d3-time-format/src/defaultLocale.js","../../../node_modules/d3-time-format/src/isoFormat.js","../../../node_modules/d3-time-format/src/isoParse.js","../src/Class.ts","../src/PropertyExt.ts","../src/Utility.ts","../src/Database.ts","../src/Widget.ts","../src/HTMLWidget.ts","../src/CanvasWidget.ts","../src/Platform.ts","../src/Transition.ts","../src/SVGWidget.ts","../src/Text.ts","../src/FAChar.ts","../../../node_modules/colorbrewer/index.es.js","../../../node_modules/d3-scale/src/array.js","../../../node_modules/d3-scale/src/ordinal.js","../../../node_modules/d3-scale/src/band.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-scale/src/tickFormat.js","../../../node_modules/d3-scale/src/linear.js","../../../node_modules/d3-scale/src/identity.js","../../../node_modules/d3-scale/src/nice.js","../../../node_modules/d3-scale/src/log.js","../../../node_modules/d3-scale/src/pow.js","../../../node_modules/d3-scale/src/quantile.js","../../../node_modules/d3-scale/src/quantize.js","../../../node_modules/d3-scale/src/threshold.js","../../../node_modules/d3-scale/src/time.js","../../../node_modules/d3-scale/src/utcTime.js","../../../node_modules/d3-scale/src/colors.js","../../../node_modules/d3-scale/src/category10.js","../../../node_modules/d3-scale/src/category20b.js","../../../node_modules/d3-scale/src/category20c.js","../../../node_modules/d3-scale/src/category20.js","../../../node_modules/d3-scale/src/cubehelix.js","../../../node_modules/d3-scale/src/rainbow.js","../../../node_modules/d3-scale/src/viridis.js","../../../node_modules/d3-scale/src/sequential.js","../src/Palette.ts","../src/Shape.ts","../src/Icon.ts","../src/Entity.ts","../src/EntityCard.ts","../src/EntityPin.ts","../src/EntityRect.ts","../src/TextBox.ts","../src/EntityVertex.ts","../src/Image.ts","../src/List.ts","../src/Menu.ts","../src/ProgressBar.ts","../../../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","../src/Surface.ts","../src/ResizeSurface.ts","../../../node_modules/d3-zoom/src/constant.js","../../../node_modules/d3-zoom/src/event.js","../../../node_modules/d3-zoom/src/transform.js","../../../node_modules/d3-zoom/src/noevent.js","../../../node_modules/d3-zoom/src/zoom.js","../src/TitleBar.ts","../src/SVGZoomWidget.ts","../src/WidgetArray.ts","../../../node_modules/d3-brush/src/constant.js","../../../node_modules/d3-brush/src/event.js","../../../node_modules/d3-brush/src/noevent.js","../../../node_modules/d3-brush/src/brush.js","../src/index.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/common\";\nexport const PKG_VERSION = \"3.2.0\";\nexport const BUILD_VERSION = \"3.2.1\";\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\";\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 creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","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","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\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(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\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_formatHex8() {\n return this.rgb().formatHex8();\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(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(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() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\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 formatHex8: rgb_formatHex8,\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_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\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(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(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() {\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 clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\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() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\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 const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\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(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\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","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","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 linear(t) {\n return +t;\n}\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\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","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\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 {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\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(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nvar fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","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 \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return 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 decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\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","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import { classID2Meta, ClassMeta } from \"@hpcc-js/util\";\n\nfunction applyMixins(derivedCtor: any, baseCtors: any[]) {\n baseCtors.forEach(baseCtor => {\n Object.getOwnPropertyNames(baseCtor).forEach(name => {\n if (name !== \"constructor\") {\n const descriptor = Object.getOwnPropertyDescriptor(baseCtor, name);\n Object.defineProperty(derivedCtor, name, descriptor);\n }\n });\n });\n}\n\nexport class Class {\n static _class: string;\n _class: string;\n\n constructor() {\n this._class = Object.getPrototypeOf(this)._class;\n }\n\n class(): string;\n class(_: string): this;\n class(_?: string): string | this {\n if (!arguments.length) return this._class;\n this._class = _;\n return this;\n }\n\n classID() {\n return this._class.split(\" \").pop();\n }\n\n classMeta(): ClassMeta {\n return classID2Meta(this.classID());\n }\n\n implements(source) {\n applyMixins(this, [source]);\n }\n\n mixin(mixinClass) {\n this.implements(mixinClass.prototype);\n // Special case mixins ---\n if (mixinClass.prototype.hasOwnProperty(\"_class\")) {\n this._class += \" \" + mixinClass.prototype._class.split(\" \").pop();\n }\n }\n\n overrideMethod<M extends keyof this>(methodID: M, newMethod: this[M]): this {\n if (this[methodID] === undefined) {\n throw new Error(`Method: ${methodID.toString()} does not exist.`);\n }\n const origMethod = this[methodID];\n this[methodID] = function () {\n arguments[arguments.length] = origMethod;\n arguments.length++;\n return (newMethod as any).apply(this, arguments);\n } as any;\n return this;\n }\n\n cssTag(id: string): string {\n return (\"\" + id).replace(/[^a-z0-9]/g, (s) => {\n const c = s.charCodeAt(0);\n if (c === 32) return \"-\";\n if (c >= 65 && c <= 90) return \"_\" + s.toLowerCase();\n return \"_0x\" + c.toString(16);\n });\n }\n}\nClass.prototype._class = \"common_Class\";\n","import { hashSum } from \"@hpcc-js/util\";\nimport { event as d3Event } from \"d3-selection\";\nimport { Class } from \"./Class.ts\";\n\nconst GEN_PUB_STUBS: boolean = false;\n\nfunction deepEqual(a, b) {\n if (a === b) return true;\n\n const arrA = Array.isArray(a);\n const arrB = Array.isArray(b);\n let i;\n\n if (arrA && arrB) {\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++)\n if (!deepEqual(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n\n const dateA = a instanceof Date;\n const dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() === b.getTime();\n if (dateA != dateB) return false;\n\n const regexpA = a instanceof RegExp;\n const regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() === b.toString();\n if (regexpA != regexpB) return false;\n\n for (i = 0; i < keys.length; i++)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = 0; i < keys.length; i++)\n if (!deepEqual(a[keys[i]], b[keys[i]])) return false;\n\n return true;\n }\n\n return false;\n}\n\nconst __meta_ = \"__meta_\";\nconst __private_ = \"__private_\";\nconst __prop_ = \"_\";\nconst __prop_data_ = \"__prop_\";\nconst __default_ = \"__default_\";\n\nfunction isMeta(key) {\n return key.indexOf(__meta_) === 0;\n}\n\nfunction isPrivate(obj, key) {\n return obj[__private_ + key] || obj[__private_ + __meta_ + key];\n}\n\nexport interface IAutoExpand extends PropertyExt {\n // AutoExpand items may have \"incomplete\" instances while the user is editing them in the PropertyEditor\n owner(): PropertyExt;\n owner(_: PropertyExt): this;\n valid(): boolean;\n}\n\nexport type TagTypes = \"Private\" | \"Shared\" | \"Basic\" | \"Intermediate\" | \"Advanced\" | \"Theme\" | \"Serial\";\nexport type PublishTypes = \"any\" | \"number\" | \"boolean\" | \"string\" | \"set\" | \"array\" | \"object\" | \"widget\" | \"widgetArray\" | \"propertyArray\" | \"html-color\" | \"proxy\";\nexport interface IPublishExt {\n override?: boolean;\n disable?: (w) => boolean;\n validate?: (w) => boolean;\n hidden?: (w) => boolean;\n optional?: boolean;\n tags?: TagTypes[];\n autoExpand?: new () => IAutoExpand;\n noDeserialize?: boolean;\n render?: boolean;\n icons?: string[];\n editor_input?: (context, widget, cell, param) => void;\n saveButton?: string;\n saveButtonID?: string;\n number?: any;\n reset?: boolean;\n // Amcharts - really needed?\n min?: number;\n max?: number;\n step?: number;\n inputType?: string;\n internal?: boolean;\n range?: { min: number, max: number, step: number };\n multiline?: boolean;\n}\n\nexport class Meta {\n id;\n type: PublishTypes;\n origDefaultValue;\n defaultValue;\n description;\n set;\n ext: IPublishExt;\n checkedAssign;\n\n constructor(id, defaultValue, type, description, set, ext?: IPublishExt) {\n ext = ext || {};\n this.id = id;\n this.type = type;\n this.origDefaultValue = defaultValue;\n this.defaultValue = ext.optional && defaultValue === null ? undefined : defaultValue;\n this.description = description;\n this.set = set;\n this.ext = ext;\n\n switch (type) {\n case \"any\":\n this.checkedAssign = _ => _;\n break;\n case \"set\":\n this.checkedAssign = function (_) {\n if ((window as any).__hpcc_debug) {\n const options = typeof set === \"function\" ? set.call(this) : set;\n if (options && options.length && options.indexOf(_) < 0) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + JSON.stringify(options));\n }\n }\n return _;\n };\n break;\n case \"html-color\":\n this.checkedAssign = function (_) {\n if ((window as any).__hpcc_debug && _ && _ !== \"red\") {\n const litmus = \"red\";\n const d = document.createElement(\"div\");\n d.style.color = litmus;\n d.style.color = _;\n // Element's style.color will be reverted to litmus or set to \"\" if an invalid color is given\n if (d.style.color === litmus || d.style.color === \"\") {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n }\n return _;\n };\n break;\n case \"boolean\":\n this.checkedAssign = function (_) {\n return typeof (_) === \"string\" && [\"false\", \"off\", \"0\"].indexOf(_.toLowerCase()) >= 0 ? false : Boolean(_);\n };\n break;\n case \"number\":\n this.checkedAssign = function (_) {\n return Number(_);\n };\n break;\n case \"string\":\n this.checkedAssign = function (_) {\n return String(_);\n };\n break;\n case \"array\":\n this.checkedAssign = function (_) {\n if (!(_ instanceof Array)) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n case \"object\":\n this.checkedAssign = function (_) {\n if (!(_ instanceof Object)) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n case \"widget\":\n this.checkedAssign = function (_) {\n if (!_._class || _._class.indexOf(\"common_PropertyExt\") < 0) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n case \"widgetArray\":\n this.checkedAssign = function (_) {\n if (_.some(function (row) { return (!row._class || row._class.indexOf(\"common_Widget\") < 0); })) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n case \"propertyArray\":\n this.checkedAssign = function (_) {\n if (_.some(function (row) { return !row.publishedProperties; })) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n default:\n this.checkedAssign = function (_) {\n if ((window as any).__hpcc_debug) {\n console.error(\"Unchecked property type for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n }\n }\n}\n\nclass MetaProxy {\n id: string;\n type;\n proxy;\n method;\n defaultValue;\n ext: IPublishExt;\n\n constructor(id: string, proxy, method, defaultValue, ext?: IPublishExt) {\n this.id = id;\n this.type = \"proxy\";\n this.proxy = proxy;\n this.method = method;\n this.defaultValue = defaultValue;\n this.ext = ext || {};\n }\n}\n\nfunction isMetaProxy(meta: Meta | MetaProxy): meta is MetaProxy {\n return meta.type === \"proxy\";\n}\n\nexport interface IMonitorHandle {\n remove(): void;\n}\n\nlet propExtID = 0;\nexport class PropertyExt extends Class {\n protected _id: string;\n private _watchArrIdx: number;\n private _watchArr: any;\n private _publishedProperties: Meta[] = [];\n\n constructor() {\n super();\n this.calcPublishedProperties();\n\n this._id = \"_pe\" + (++propExtID);\n this._watchArrIdx = 0;\n this._watchArr = {};\n\n this.publishedProperties(true).forEach(function (meta) {\n switch (meta.type) {\n case \"array\":\n case \"widgetArray\":\n case \"propertyArray\":\n this[meta.id + \"_reset\"]();\n break;\n }\n }, this);\n }\n\n id(): string;\n id(_: string): this;\n id(_?): string | this {\n if (!arguments.length) return this._id;\n this._id = _;\n return this;\n }\n\n // Publish Properties ---\n calcPublishedProperties(includePrivate = false, expandProxies = false): void {\n this._publishedProperties = [];\n const protoStack = [];\n let __proto__ = Object.getPrototypeOf(this);\n while (__proto__) {\n if (__proto__ === PropertyExt.prototype) {\n break;\n }\n protoStack.unshift(__proto__);\n __proto__ = Object.getPrototypeOf(__proto__);\n }\n for (__proto__ of protoStack) {\n for (const key in __proto__) {\n if (__proto__.hasOwnProperty(key)) {\n if (isMeta(key)) {\n this._publishedProperties.push(this[key]);\n }\n }\n }\n }\n }\n\n resolvePublishedProxy(meta: Meta | MetaProxy) {\n let item = this;\n while (meta instanceof MetaProxy) {\n item = item[meta.proxy];\n meta = item.publishedProperty(meta.method);\n }\n return meta;\n }\n\n publishedProperties(includePrivate = false, expandProxies = false): Meta[] {\n return this._publishedProperties.filter(meta => includePrivate || !isPrivate(this, meta.id)).map(meta => {\n if (expandProxies && isMetaProxy(meta)) {\n const selfProp = meta;\n let item = this;\n while (meta.type === \"proxy\") {\n item = item[(meta as any).proxy];\n meta = item.publishedProperty((meta as any).method);\n }\n if (meta.id !== selfProp.id) {\n meta = JSON.parse(JSON.stringify(meta)); // Clone meta so we can safely replace the id.\n meta.id = selfProp.id;\n }\n }\n return meta;\n });\n }\n\n widgetWalker(visitor: (item: PropertyExt) => void) {\n visitor(this);\n this.publishedProperties(false, true).forEach(publishItem => {\n switch (publishItem.type) {\n case \"widget\":\n const widget: PropertyExt = this[publishItem.id]();\n if (widget) {\n widget.widgetWalker(visitor);\n }\n break;\n case \"widgetArray\":\n case \"propertyArray\":\n const widgets: PropertyExt[] = this[publishItem.id]();\n if (widgets) {\n widgets.forEach((widget) => {\n widget.widgetWalker(visitor);\n });\n }\n break;\n }\n });\n }\n\n propertyWalker(visitor: (context: this, publishItem: Meta) => void, filter?: (context: this, publishItem: Meta) => boolean) {\n const context = this;\n this.publishedProperties(false, true).forEach(function (publishItem) {\n if (typeof (filter) !== \"function\" || filter(context, publishItem)) {\n visitor(context, publishItem);\n }\n });\n }\n\n serialize(): { __class, [id: string]: any } {\n const retVal = {\n __class: this.classID()\n };\n for (const prop of this.publishedProperties()) {\n if (prop.id === \"fields\") continue;\n const val = (this as any)[prop.id]();\n switch (prop.type) {\n case \"propertyArray\":\n if ((this as any)[`${prop.id}_modified`]()) {\n }\n const serialization = val.filter(item => item.valid()).map(item => item.serialize()).filter(item => item !== undefined);\n if (serialization) {\n retVal[prop.id] = serialization;\n }\n break;\n case \"widget\":\n retVal[prop.id] = val?.serialize();\n break;\n default:\n if ((this as any)[`${prop.id}_modified`]()) {\n if (!(val instanceof Object)) {\n retVal[prop.id] = val;\n }\n }\n }\n }\n return retVal;\n }\n\n deserialize(props?: { __class, [id: string]: any }): this {\n if (!props) return this;\n for (const prop of this.publishedProperties()) {\n const val = props[prop.id];\n if (val !== undefined) {\n switch (prop.type) {\n case \"propertyArray\":\n if (prop.ext && prop.ext.autoExpand) {\n this[`${prop.id}`](val.map(item => new prop.ext.autoExpand().deserialize(item)));\n }\n break;\n case \"widget\":\n const currVal = this[`${prop.id}`]();\n if (currVal.classID() === val.__class) {\n currVal.deserialize(val);\n } else {\n console.warn(\"Dynamic class initialization not supported.\");\n }\n break;\n default:\n this[`${prop.id}`](val);\n }\n }\n }\n return this;\n }\n\n publishedProperty(id) {\n return this[__meta_ + id];\n }\n\n publishedModified() {\n return this.publishedProperties().some(function (prop) {\n return this[prop.id + \"_modified\"]();\n }, this);\n }\n\n publishReset(privateArr?, exceptionsArr?) {\n privateArr = (privateArr || []).map(function (id) { return __meta_ + id; });\n exceptionsArr = (exceptionsArr || []).map(function (id) { return __meta_ + id; });\n for (const key in this) {\n if (isMeta(key)) {\n const isPrivateItem = !privateArr.length || (privateArr.length && privateArr.indexOf(key) >= 0);\n const isException = exceptionsArr.indexOf(key) >= 0;\n if (isPrivateItem && !isException) {\n this[__private_ + key] = true;\n }\n }\n }\n }\n static prevClassID: string = \"\";\n publish(id: string, defaultValue, type?: PublishTypes, description?: string, set?: string[] | (() => string[] | Array<{ value: string, text: string }>) | IPublishExt, ext: IPublishExt = {}): void {\n if (GEN_PUB_STUBS) {\n if (PropertyExt.prevClassID !== (this as any).constructor.name) {\n PropertyExt.prevClassID = (this as any).constructor.name;\n console.info(`// ${PropertyExt.prevClassID} ---`);\n }\n let jsType: string = type;\n switch (type) {\n case \"set\":\n case \"html-color\":\n jsType = \"string\";\n break;\n case \"array\":\n case \"widgetArray\":\n case \"propertyArray\":\n jsType = \"any[]\";\n break;\n }\n console.info(` ${id}(): ${jsType};\n ${id}(_: ${jsType}): this;\n ${id}_exists(): boolean;`);\n }\n if (id.indexOf(\"_\") === 0) {\n id = id.slice(1);\n }\n if (this[__meta_ + id] !== undefined && !ext.override) {\n throw new Error(id + \" is already published.\");\n }\n const meta = this[__meta_ + id] = new Meta(id, defaultValue, type, description, set, ext);\n if (meta.ext.internal) {\n this[__private_ + id] = true;\n }\n Object.defineProperty(this, __prop_ + id, {\n set(_) {\n if (_ === undefined) {\n _ = null;\n } else if (_ === \"\" && meta.ext.optional) {\n _ = null;\n } else if (_ !== null) {\n _ = meta.checkedAssign.call(this, _);\n }\n this.broadcast(id, _, this[__prop_data_ + id]);\n if (_ === null) {\n delete this[__prop_data_ + id];\n } else {\n this[__prop_data_ + id] = _;\n }\n },\n\n get() {\n if (this[id + \"_disabled\"]()) return this[id + \"_default\"]();\n return this[__prop_data_ + id] !== undefined ? this[__prop_data_ + id] : this[id + \"_default\"]();\n },\n configurable: true\n });\n if (this[id]) {\n } else {\n if (type === \"propertyArray\") {\n this[id] = function (_?) {\n if (!arguments.length) return this[__prop_ + id];\n this[__prop_ + id] = _.map(item => {\n if (!meta.ext.noDeserialize && meta.ext.autoExpand && !(item instanceof meta.ext.autoExpand)) {\n item = new meta.ext.autoExpand().deserialize(item);\n }\n item.owner(this);\n return item;\n });\n return this;\n };\n } else {\n this[id] = function (_?) {\n if (!arguments.length) return this[__prop_ + id] ?? this[id + \"_default\"]();\n this[__prop_ + id] = _;\n return this;\n };\n }\n }\n this[id + \"_disabled\"] = function () {\n return ext && ext.disable ? !!ext.disable(this) : false;\n };\n this[id + \"_hidden\"] = function () {\n return ext && ext.hidden ? !!ext.hidden(this) : false;\n };\n this[id + \"_valid\"] = function () {\n return ext && ext.validate ? this[id + \"_disabled\"]() || (ext.optional && !this[id + \"_exists\"]()) || (ext.autoExpand && !this.valid()) || !!ext.validate(this) : true;\n };\n this[id + \"_modified\"] = function () {\n if (type === \"propertyArray\") {\n return this[__prop_data_ + id] && (this[__prop_data_ + id].some(item => item.valid()));\n }\n return this[__prop_data_ + id] !== undefined;\n };\n this[id + \"_exists\"] = function () {\n if (this[__prop_data_ + id] != null && !(this[__prop_data_ + id] === \"\" && ext.optional === true)) return true;\n if (this[id + \"_default\"]() != null && !(this[id + \"_default\"]() === \"\" && ext.optional === true)) return true;\n return false;\n };\n this[id + \"_default\"] = function (_?) {\n if (!arguments.length) return this[__default_ + id] !== undefined ? this[__default_ + id] : meta.defaultValue;\n if (_ === \"\") {\n _ = null;\n }\n if (_ === null) {\n delete this[__default_ + id];\n } else {\n this[__default_ + id] = _;\n }\n return this;\n };\n this[id + \"_reset\"] = function () {\n switch (type) {\n case \"widget\":\n if (this[__prop_data_ + id]) {\n this[__prop_data_ + id].target(null);\n }\n break;\n case \"widgetArray\":\n if (this[__prop_data_ + id]) {\n this[__prop_data_ + id].forEach(function (widget) {\n widget.target(null);\n });\n }\n break;\n }\n\n switch (type) {\n case \"array\":\n case \"widgetArray\":\n case \"propertyArray\":\n this[__default_ + id] = this[id + \"_default\"]().map(function (row) { return row; });\n break;\n }\n delete this[__prop_data_ + id];\n return this;\n };\n this[id + \"_options\"] = function () {\n if (typeof set === \"function\") {\n const retVal = meta.ext.optional ? [null] : [];\n return retVal.concat(set.apply(this, arguments));\n }\n return set;\n };\n }\n\n publishWidget(prefix, WidgetType, id) {\n for (const key in WidgetType.prototype) {\n if (key.indexOf(\"__meta\") === 0) {\n const publishItem = WidgetType.prototype[key];\n this.publishProxy(prefix + __prop_data_ + publishItem.id, id, publishItem.method || publishItem.id);\n }\n }\n }\n\n publishProxy(id: string, proxy, method?, defaultValue?) {\n method = method || id;\n if (this[__meta_ + id] !== undefined) {\n throw new Error(id + \" is already published.\");\n }\n this[__meta_ + id] = new MetaProxy(id, proxy, method, defaultValue);\n this[id] = function (_?) {\n if (!arguments.length) return defaultValue === undefined || this[id + \"_modified\"]() ? this[proxy][method]() : defaultValue;\n if (defaultValue !== undefined && _ === defaultValue) {\n this[proxy][method + \"_reset\"]();\n } else {\n this[proxy][method](_);\n }\n return this;\n };\n this[id + \"_disabled\"] = function () {\n return this[proxy][method + \"_disabled\"]();\n };\n this[id + \"_modified\"] = function () {\n return this[proxy][method + \"_modified\"]() && (defaultValue === undefined || this[proxy][method]() !== defaultValue);\n };\n this[id + \"_exists\"] = function () {\n return this[proxy][method + \"_exists\"]();\n };\n this[id + \"_default\"] = function (_?) {\n if (!arguments.length) return this[proxy][method + \"_default\"]();\n this[proxy][method + \"_default\"](_);\n return this;\n };\n this[id + \"_reset\"] = function () {\n this[proxy][method + \"_reset\"]();\n return this;\n };\n this[id + \"_options\"] = function () {\n return this[proxy][method + \"_options\"]();\n };\n }\n\n monitorProperty(propID: string, func: (id: string, newVal: any, oldVal: any) => void): IMonitorHandle {\n const meta = this.publishedProperty(propID);\n switch (meta.type) {\n case \"proxy\":\n if (this[meta.proxy]) {\n return this[meta.proxy].monitorProperty(meta.method, function (_key, newVal, oldVal) {\n func(meta.id, newVal, oldVal);\n });\n } else {\n return {\n remove: () => { }\n };\n }\n default:\n const idx = this._watchArrIdx++;\n this._watchArr[idx] = { propertyID: propID, callback: func };\n const context = this;\n return {\n remove: () => {\n delete context._watchArr[idx];\n }\n };\n }\n }\n\n monitor(func: (id: string, newVal: any, oldVal: any, source: PropertyExt) => void): { remove: () => void } {\n const idx = this._watchArrIdx++;\n this._watchArr[idx] = { propertyID: undefined, callback: func };\n return {\n remove: () => {\n delete this._watchArr[idx];\n }\n };\n }\n\n broadcast(key, newVal, oldVal, source?) {\n source = source || this;\n if (!deepEqual(newVal, oldVal)) {\n for (const idx in this._watchArr) {\n const monitor = this._watchArr[idx];\n if ((monitor.propertyID === undefined || monitor.propertyID === key) && monitor.callback) {\n // console.log(`${this.classID()}->broadcast(${key}, ${newVal}, ${oldVal})`);\n setTimeout(function (monitor2) {\n monitor2.callback(key, newVal, oldVal, source);\n }, 0, monitor);\n }\n }\n }\n }\n\n applyTheme(theme) {\n if (!theme) {\n return;\n }\n const clsArr = this._class.split(\" \");\n for (const i in clsArr) {\n if (theme[clsArr[i]]) {\n for (const paramName in theme[clsArr[i]]) {\n if (paramName === \"overrideTags\" && theme[clsArr[i]][paramName] instanceof Object) {\n for (const param in theme[clsArr[i]][paramName]) {\n if (this.publishedProperty(paramName).ext) {\n this.publishedProperty(paramName).ext.tags = theme[clsArr[i]][paramName][param];\n }\n }\n continue;\n }\n if (this.publishedProperty(paramName)) {\n this.publishedProperty(paramName).defaultValue = theme[clsArr[i]][paramName];\n }\n }\n }\n }\n }\n\n copyPropsTo(other: PropertyExt, ignore: string[] = []): this {\n this.publishedProperties(false).filter(meta => ignore.indexOf(meta.id) < 0).forEach(meta => {\n if (this[meta.id + \"_exists\"]()) {\n other[meta.id](this[meta.id]());\n } else {\n other[meta.id + \"_reset\"]();\n }\n });\n return this;\n }\n\n private metaHash(meta): string {\n if (this[meta.id + \"_exists\"]()) {\n let value = this[meta.id]();\n const proxyMeta = this.resolvePublishedProxy(meta);\n switch (proxyMeta.type) {\n case \"widget\":\n value = value.hashSum();\n break;\n case \"widgetArray\":\n case \"propertyArray\":\n value = hashSum(value.map(v => v.hashSum()));\n break;\n default:\n }\n return value;\n }\n return \"\";\n }\n\n propertyHash(properties: string[] = [], more = {}): string {\n const props: { [key: string]: any } = more;\n this.publishedProperties(false).filter(meta => properties.length === 0 || properties.indexOf(meta.id) >= 0).forEach(meta => {\n props[meta.id] = this.metaHash(meta);\n });\n return hashSum(props);\n }\n\n hashSum(ignore: string[] = [], more = {}): string {\n ignore = [...ignore, \"classed\"];\n const props: { [key: string]: any } = more;\n this.publishedProperties(false).filter(meta => ignore.indexOf(meta.id) < 0).forEach(meta => {\n props[meta.id] = this.metaHash(meta);\n });\n return hashSum(props);\n }\n\n // Events ---\n on(eventID, func, stopPropagation = false): this {\n const context = this;\n this.overrideMethod(eventID, function (...args: any[]) {\n const origFunc = args[args.length - 1];\n let retVal;\n if (stopPropagation) {\n if (d3Event && d3Event.stopPropagation) {\n d3Event.stopPropagation();\n }\n [].push.call(args, origFunc);\n } else {\n retVal = origFunc.apply(context, args);\n }\n const retVal2 = func.apply(context, args);\n return retVal2 !== undefined ? retVal2 : retVal;\n });\n return this;\n }\n}\nPropertyExt.prototype._class += \" common_PropertyExt\";\n","import { isArray } from \"@hpcc-js/util\";\nimport { ascending as d3Ascending, descending as d3Descending } from \"d3-array\";\nimport { select as d3Select, Selection as d3SelectionT } from \"d3-selection\";\nimport { timeFormat as d3TimeFormat } from \"d3-time-format\";\n\nfunction _naturalSort(a, b, order, idx, sortCaseSensitive) {\n const re = /(^([+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi;\n const sre = /(^[ ]*|[ ]*$)/g;\n const dre = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[\\/\\-]\\d{1,4}[\\/\\-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/;\n const ore = /^0/;\n const i = function (s) { return !sortCaseSensitive && (\"\" + s).toLowerCase() || \"\" + s; };\n // convert all to strings strip whitespace\n const x = i(idx ? a[idx] : a).replace(sre, \"\") || \"\";\n const y = i(idx ? b[idx] : b).replace(sre, \"\") || \"\";\n // chunk/tokenize\n const xN = x.replace(re, \"\\0$1\\0\").replace(/\\0$/, \"\").replace(/^\\0/, \"\").split(\"\\0\");\n const yN = y.replace(re, \"\\0$1\\0\").replace(/\\0$/, \"\").replace(/^\\0/, \"\").split(\"\\0\");\n // numeric or date detection\n const xD = (xN.length !== 1 && x.match(dre) && Date.parse(x));\n const yD = xD && y.match(dre) && Date.parse(y) || null;\n let oFxNcL;\n let oFyNcL;\n // first try and sort Hex codes or Dates\n if (yD) {\n if (xD < yD) {\n return order === \"ascending\" ? -1 : 1;\n } else if (xD > yD) {\n return order === \"ascending\" ? 1 : -1;\n }\n }\n // natural sorting through split numeric strings and default strings\n for (let cLoc = 0, numS = Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {\n // find floats not starting with \"0\", string or 0 if not defined (Clint Priest)\n oFxNcL = !(xN[cLoc] || \"\").match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;\n oFyNcL = !(yN[cLoc] || \"\").match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;\n // handle numeric vs string comparison - number < string - (Kyle Adams)\n if (isNaN(oFxNcL) !== isNaN(oFyNcL)) {\n return (isNaN(oFxNcL)) ? 1 : -1;\n } else if (typeof oFxNcL !== typeof oFyNcL) {\n // rely on string comparison if different types - i.e. \"02\" < 2 != \"02\" < \"2\"\n oFxNcL += \"\";\n oFyNcL += \"\";\n }\n if (oFxNcL < oFyNcL) { return order === \"ascending\" ? -1 : 1; }\n if (oFxNcL > oFyNcL) { return order === \"ascending\" ? 1 : -1; }\n }\n return 0;\n}\n\n// Selection Bag(s) ---\nexport class SelectionBase {\n protected __widget;\n private __svgGlowID: string;\n\n constructor(widget) {\n // Can't import Widget or SVGWidget as it breaks AMD loading...\n this.__widget = widget;\n }\n\n svgGlowID(): string {\n if (this.__svgGlowID === undefined) {\n this.__svgGlowID = this.__widget.svgGlowID && this.__widget.svgGlowID() || \"\";\n }\n return this.__svgGlowID;\n }\n}\n\nexport interface ISelectionItem {\n _id: string;\n element(): d3SelectionT<Element, any, Element, any>;\n}\n\nexport class SelectionBag extends SelectionBase {\n items: { [key: string]: ISelectionItem };\n constructor(widget) {\n super(widget);\n this.items = {};\n }\n\n clear() {\n for (const key in this.items) {\n this.items[key].element()\n .classed(\"selected\", false)\n .attr(\"filter\", null)\n ;\n }\n this.items = {};\n }\n\n isEmpty() {\n for (const _key in this.items) { // jshint ignore:line\n return false;\n }\n return true;\n }\n\n append(item: ISelectionItem) {\n this.items[item._id] = item;\n item.element()\n .classed(\"selected\", true)\n .attr(\"filter\", this.svgGlowID() ? `url(#${this.svgGlowID()})` : null)\n ;\n }\n\n remove(item: ISelectionItem) {\n this.items[item._id].element()\n .classed(\"selected\", false)\n .attr(\"filter\", null)\n ;\n delete this.items[item._id];\n }\n\n isSelected(item: ISelectionItem) {\n return this.items[item._id] !== undefined;\n }\n\n get() {\n const retVal = [];\n for (const key in this.items) {\n retVal.push(this.items[key]);\n }\n return retVal;\n }\n\n set(itemArray: ISelectionItem[]) {\n this.clear();\n itemArray.forEach(function (item) {\n this.append(item);\n }, this);\n }\n\n click = function (item: ISelectionItem, evt) {\n if (evt.ctrlKey) {\n if (this.items[item._id]) {\n this.remove(item);\n } else {\n this.append(item);\n }\n } else {\n this.clear();\n this.append(item);\n }\n };\n}\n\nexport class SimpleSelection extends SelectionBase {\n constructor(widget, widgetElement, skipBringToTop?) {\n super(widget);\n this.widgetElement(widgetElement);\n this.skipBringToTop(skipBringToTop);\n }\n\n _widgetElement;\n widgetElement(_?) {\n if (!arguments.length) return this._widgetElement;\n this._widgetElement = _;\n return this;\n }\n\n _skipBringToTop;\n skipBringToTop(_?) {\n if (!arguments.length) return this._skipBringToTop;\n this._skipBringToTop = _;\n return this;\n }\n\n _initialSelection: (d) => boolean;\n enter(elements) {\n const context = this;\n elements\n .each(function (d) {\n const selected: boolean = context._initialSelection ? context._initialSelection(d.data) : false;\n d3Select(this)\n .classed(\"selected\", selected)\n .classed(\"deselected\", !selected)\n .attr(\"filter\", context.svgGlowID() && selected ? `url(#${context.svgGlowID()})` : null)\n ;\n })\n .on(\"click.SimpleSelection\", function () {\n context.click(this);\n })\n .on(\"mouseover.SimpleSelection\", function () {\n context.mouseOver(this);\n })\n .on(\"mouseout.SimpleSelection\", function () {\n context.mouseOut(this);\n })\n ;\n }\n click(domNode): boolean {\n if (!this._skipBringToTop) {\n domNode.parentNode.appendChild(domNode);\n }\n const element = d3Select(domNode);\n const wasSelected = element.classed(\"selected\");\n this._widgetElement.selectAll(\".selected\")\n .classed(\"selected\", false)\n .classed(\"deselected\", true)\n .attr(\"filter\", null)\n ;\n if (!wasSelected) {\n element\n .classed(\"selected\", true)\n .classed(\"deselected\", false)\n .attr(\"filter\", this.svgGlowID() ? `url(#${this.svgGlowID()})` : null)\n ;\n }\n return !wasSelected;\n }\n mouseOver(domNode) {\n d3Select(domNode)\n .classed(\"over\", true)\n ;\n }\n mouseOut(domNode) {\n d3Select(domNode)\n .classed(\"over\", null)\n ;\n }\n selected(domNode) {\n return d3Select(domNode).classed(\"selected\");\n }\n selection(_?) {\n if (!arguments.length) {\n return this.selection2().map(row => JSON.stringify(row));\n }\n this.selection2(d => _.indexOf(JSON.stringify(d)) >= 0);\n return this;\n }\n selection2(): any[];\n selection2(isSelected: (d) => boolean): this;\n selection2(isSelected?: (d) => boolean): any[] | this {\n if (!arguments.length) {\n const retVal: any[] = [];\n if (this._widgetElement) {\n this._widgetElement.selectAll(\".selected\")\n .each(d => retVal.push(d))\n ;\n }\n return retVal;\n }\n if (this._widgetElement) {\n const context = this;\n this._widgetElement.selectAll(\".selected,.deselected\")\n .each(function (d) {\n const selected = isSelected(d);\n d3Select(this)\n .classed(\"selected\", selected)\n .classed(\"deselected\", !selected)\n .attr(\"filter\", (selected && context.svgGlowID()) ? `url(#${context.svgGlowID()})` : null)\n ;\n if (selected && !context._skipBringToTop) {\n safeRaise(this);\n }\n })\n ;\n } else {\n this._initialSelection = isSelected;\n }\n return this;\n }\n}\n\nexport function SimpleSelectionMixin(skipBringToTop) {\n this._selection = new SimpleSelection(this, null, skipBringToTop);\n}\n\nSimpleSelectionMixin.prototype.serializeState = function () {\n return {\n selection: this._selection.selection(),\n data: this.data()\n };\n};\n\nSimpleSelectionMixin.prototype.deserializeState = function (state) {\n if (state) {\n this._selection.selection(state.selection);\n if (state.data) {\n this.data(state.data);\n }\n }\n return this;\n};\n\nconst perf: any = window.performance;\nconst now = perf && (perf.now || perf.mozNow || perf.msNow || perf.oNow || perf.webkitNow);\n\nconst faCharMap = { \"fa-500px\": \"\", \"fa-address-book\": \"\", \"fa-address-book-o\": \"\", \"fa-address-card\": \"\", \"fa-address-card-o\": \"\", \"fa-adjust\": \"\", \"fa-adn\": \"\", \"fa-align-center\": \"\", \"fa-align-justify\": \"\", \"fa-align-left\": \"\", \"fa-align-right\": \"\", \"fa-amazon\": \"\", \"fa-ambulance\": \"\", \"fa-american-sign-language-interpreting\": \"\", \"fa-anchor\": \"\", \"fa-android\": \"\", \"fa-angellist\": \"\", \"fa-angle-double-down\": \"\", \"fa-angle-double-left\": \"\", \"fa-angle-double-right\": \"\", \"fa-angle-double-up\": \"\", \"fa-angle-down\": \"\", \"fa-angle-left\": \"\", \"fa-angle-right\": \"\", \"fa-angle-up\": \"\", \"fa-apple\": \"\", \"fa-archive\": \"\", \"fa-area-chart\": \"\", \"fa-arrow-circle-down\": \"\", \"fa-arrow-circle-left\": \"\", \"fa-arrow-circle-o-down\": \"\", \"fa-arrow-circle-o-left\": \"\", \"fa-arrow-circle-o-right\": \"\", \"fa-arrow-circle-o-up\": \"\", \"fa-arrow-circle-right\": \"\", \"fa-arrow-circle-up\": \"\", \"fa-arrow-down\": \"\", \"fa-arrow-left\": \"\", \"fa-arrow-right\": \"\", \"fa-arrow-up\": \"\", \"fa-arrows\": \"\", \"fa-arrows-alt\": \"\", \"fa-arrows-h\": \"\", \"fa-arrows-v\": \"\", \"fa-asl-interpreting\": \"\", \"fa-assistive-listening-systems\": \"\", \"fa-asterisk\": \"\", \"fa-at\": \"\", \"fa-audio-description\": \"\", \"fa-automobile\": \"\", \"fa-backward\": \"\", \"fa-balance-scale\": \"\", \"fa-ban\": \"\", \"fa-bandcamp\": \"\", \"fa-bank\": \"\", \"fa-bar-chart\": \"\", \"fa-bar-chart-o\": \"\", \"fa-barcode\": \"\", \"fa-bars\": \"\", \"fa-bath\": \"\", \"fa-bathtub\": \"\", \"fa-battery\": \"\", \"fa-battery-0\": \"\", \"fa-battery-1\": \"\", \"fa-battery-2\": \"\", \"fa-battery-3\": \"\", \"fa-battery-4\": \"\", \"fa-battery-empty\": \"\", \"fa-battery-full\": \"\", \"fa-battery-half\": \"\", \"fa-battery-quarter\": \"\", \"fa-battery-three-quarters\": \"\", \"fa-bed\": \"\", \"fa-beer\": \"\", \"fa-behance\": \"\", \"fa-behance-square\": \"\", \"fa-bell\": \"\", \"fa-bell-o\": \"\", \"fa-bell-slash\": \"\", \"fa-bell-slash-o\": \"\", \"fa-bicycle\": \"\", \"fa-binoculars\": \"\", \"fa-birthday-cake\": \"\", \"fa-bitbucket\": \"\", \"fa-bitbucket-square\": \"\", \"fa-bitcoin\": \"\", \"fa-black-tie\": \"\", \"fa-blind\": \"\", \"fa-bluetooth\": \"\", \"fa-bluetooth-b\": \"\", \"fa-bold\": \"\", \"fa-bolt\": \"\", \"fa-bomb\": \"\", \"fa-book\": \"\", \"fa-bookmark\": \"\", \"fa-bookmark-o\": \"\", \"fa-braille\": \"\", \"fa-briefcase\": \"\", \"fa-btc\": \"\", \"fa-bug\": \"\", \"fa-building\": \"\", \"fa-building-o\": \"\", \"fa-bullhorn\": \"\", \"fa-bullseye\": \"\", \"fa-bus\": \"\", \"fa-buysellads\": \"\", \"fa-cab\": \"\", \"fa-calculator\": \"\", \"fa-calendar\": \"\", \"fa-calendar-check-o\": \"\", \"fa-calendar-minus-o\": \"\", \"fa-calendar-o\": \"\", \"fa-calendar-plus-o\": \"\", \"fa-calendar-times-o\": \"\", \"fa-camera\": \"\", \"fa-camera-retro\": \"\", \"fa-car\": \"\", \"fa-caret-down\": \"\", \"fa-caret-left\": \"\", \"fa-caret-right\": \"\", \"fa-caret-square-o-down\": \"\", \"fa-caret-square-o-left\": \"\", \"fa-caret-square-o-right\": \"\", \"fa-caret-square-o-up\": \"\", \"fa-caret-up\": \"\", \"fa-cart-arrow-down\": \"\", \"fa-cart-plus\": \"\", \"fa-cc\": \"\", \"fa-cc-amex\": \"\", \"fa-cc-diners-club\": \"\", \"fa-cc-discover\": \"\", \"fa-cc-jcb\": \"\", \"fa-cc-mastercard\": \"\", \"fa-cc-paypal\": \"\", \"fa-cc-stripe\": \"\", \"fa-cc-visa\": \"\", \"fa-certificate\": \"\", \"fa-chain\": \"\", \"fa-chain-broken\": \"\", \"fa-check\": \"\", \"fa-check-circle\": \"\", \"fa-check-circle-o\": \"\", \"fa-check-square\": \"\", \"fa-check-square-o\": \"\", \"fa-chevron-circle-down\": \"\", \"fa-chevron-circle-left\": \"\", \"fa-chevron-circle-right\": \"\", \"fa-chevron-circle-up\": \"\", \"fa-chevron-down\": \"\", \"fa-chevron-left\": \"\", \"fa-chevron-right\": \"\", \"fa-chevron-up\": \"\", \"fa-child\": \"\", \"fa-chrome\": \"\", \"fa-circle\": \"\", \"fa-circle-o\": \"\", \"fa-circle-o-notch\": \"\", \"fa-circle-thin\": \"\", \"fa-clipboard\": \"\", \"fa-clock-o\": \"\", \"fa-clone\": \"\", \"fa-close\": \"\", \"fa-cloud\": \"\", \"fa-cloud-download\": \"\", \"fa-cloud-upload\": \"\", \"fa-cny\": \"\", \"fa-code\": \"\", \"fa-code-fork\": \"\", \"fa-codepen\": \"\", \"fa-codiepie\": \"\", \"fa-coffee\": \"\", \"fa-cog\": \"\", \"fa-cogs\": \"\", \"fa-columns\": \"\", \"fa-comment\": \"\", \"fa-comment-o\": \"\", \"fa-commenting\": \"\", \"fa-commenting-o\": \"\", \"fa-comments\": \"\", \"fa-comments-o\": \"\", \"fa-compass\": \"\", \"fa-compress\": \"\", \"fa-connectdevelop\": \"\", \"fa-contao\": \"\", \"fa-copy\": \"\", \"fa-copyright\": \"\", \"fa-creative-commons\": \"\", \"fa-credit-card\": \"\", \"fa-credit-card-alt\": \"\", \"fa-crop\": \"\", \"fa-crosshairs\": \"\", \"fa-css3\": \"\", \"fa-cube\": \"\", \"fa-cubes\": \"\", \"fa-cut\": \"\", \"fa-cutlery\": \"\", \"fa-dashboard\": \"\", \"fa-dashcube\": \"\", \"fa-database\": \"\", \"fa-deaf\": \"\", \"fa-deafness\": \"\", \"fa-dedent\": \"\", \"fa-delicious\": \"\", \"fa-desktop\": \"\", \"fa-deviantart\": \"\", \"fa-diamond\": \"\", \"fa-digg\": \"\", \"fa-dollar\": \"\", \"fa-dot-circle-o\": \"\", \"fa-download\": \"\", \"fa-dribbble\": \"\", \"fa-drivers-license\": \"\", \"fa-drivers-license-o\": \"\", \"fa-dropbox\": \"\", \"fa-drupal\": \"\", \"fa-edge\": \"\", \"fa-edit\": \"\", \"fa-eercast\": \"\", \"fa-eject\": \"\", \"fa-ellipsis-h\": \"\", \"fa-ellipsis-v\": \"\", \"fa-empire\": \"\", \"fa-envelope\": \"\", \"fa-envelope-o\": \"\", \"fa-envelope-open\": \"\", \"fa-envelope-open-o\": \"\", \"fa-envelope-square\": \"\", \"fa-envira\": \"\", \"fa-eraser\": \"\", \"fa-etsy\": \"\", \"fa-eur\": \"\", \"fa-euro\": \"\", \"fa-exchange\": \"\", \"fa-exclamation\": \"\", \"fa-exclamation-circle\": \"\", \"fa-exclamation-triangle\": \"\", \"fa-expand\": \"\", \"fa-expeditedssl\": \"\", \"fa-external-link\": \"\", \"fa-external-link-square\": \"\", \"fa-eye\": \"\", \"fa-eye-slash\": \"\", \"fa-eyedropper\": \"\", \"fa-fa\": \"\", \"fa-facebook\": \"\", \"fa-facebook-f\": \"\", \"fa-facebook-official\": \"\", \"fa-facebook-square\": \"\", \"fa-fast-backward\": \"\", \"fa-fast-forward\": \"\", \"fa-fax\": \"\", \"fa-feed\": \"\", \"fa-female\": \"\", \"fa-fighter-jet\": \"\", \"fa-file\": \"\", \"fa-file-archive-o\": \"\", \"fa-file-audio-o\": \"\", \"fa-file-code-o\": \"\", \"fa-file-excel-o\": \"\", \"fa-file-image-o\": \"\", \"fa-file-movie-o\": \"\", \"fa-file-o\": \"\", \"fa-file-pdf-o\": \"\", \"fa-file-photo-o\": \"\", \"fa-file-picture-o\": \"\", \"fa-file-powerpoint-o\": \"\", \"fa-file-sound-o\": \"\", \"fa-file-text\": \"\", \"fa-file-text-o\": \"\", \"fa-file-video-o\": \"\", \"fa-file-word-o\": \"\", \"fa-file-zip-o\": \"\", \"fa-files-o\": \"\", \"fa-film\": \"\", \"fa-filter\": \"\", \"fa-fire\": \"\", \"fa-fire-extinguisher\": \"\", \"fa-firefox\": \"\", \"fa-first-order\": \"\", \"fa-flag\": \"\", \"fa-flag-checkered\": \"\", \"fa-flag-o\": \"\", \"fa-flash\": \"\", \"fa-flask\": \"\", \"fa-flickr\": \"\", \"fa-floppy-o\": \"\", \"fa-folder\": \"\", \"fa-folder-o\": \"\", \"fa-folder-open\": \"\", \"fa-folder-open-o\": \"\", \"fa-font\": \"\", \"fa-font-awesome\": \"\", \"fa-fonticons\": \"\", \"fa-fort-awesome\": \"\", \"fa-forumbee\": \"\", \"fa-forward\": \"\", \"fa-foursquare\": \"\", \"fa-free-code-camp\": \"\", \"fa-frown-o\": \"\", \"fa-futbol-o\": \"\", \"fa-gamepad\": \"\", \"fa-gavel\": \"\", \"fa-gbp\": \"\", \"fa-ge\": \"\", \"fa-gear\": \"\", \"fa-gears\": \"\", \"fa-genderless\": \"\", \"fa-get-pocket\": \"\", \"fa-gg\": \"\", \"fa-gg-circle\": \"\", \"fa-gift\": \"\", \"fa-git\": \"\", \"fa-git-square\": \"\", \"fa-github\": \"\", \"fa-github-alt\": \"\", \"fa-github-square\": \"\", \"fa-gitlab\": \"\", \"fa-gittip\": \"\", \"fa-glass\": \"\", \"fa-glide\": \"\", \"fa-glide-g\": \"\", \"fa-globe\": \"\", \"fa-google\": \"\", \"fa-google-plus\": \"\", \"fa-google-plus-circle\": \"\", \"fa-google-plus-official\": \"\", \"fa-google-plus-square\": \"\", \"fa-google-wallet\": \"\", \"fa-graduation-cap\": \"\", \"fa-gratipay\": \"\", \"fa-grav\": \"\", \"fa-group\": \"\", \"fa-h-square\": \"\", \"fa-hacker-news\": \"\", \"fa-hand-grab-o\": \"\", \"fa-hand-lizard-o\": \"\", \"fa-hand-o-down\": \"\", \"fa-hand-o-left\": \"\", \"fa-hand-o-right\": \"\", \"fa-hand-o-up\": \"\", \"fa-hand-paper-o\": \"\", \"fa-hand-peace-o\": \"\", \"fa-hand-pointer-o\": \"\", \"fa-hand-rock-o\": \"\", \"fa-hand-scissors-o\": \"\", \"fa-hand-spock-o\": \"\", \"fa-hand-stop-o\": \"\", \"fa-handshake-o\": \"\", \"fa-hard-of-hearing\": \"\", \"fa-hashtag\": \"\", \"fa-hdd-o\": \"\", \"fa-header\": \"\", \"fa-headphones\": \"\", \"fa-heart\": \"\", \"fa-heart-o\": \"\", \"fa-heartbeat\": \"\", \"fa-history\": \"\", \"fa-home\": \"\", \"fa-hospital-o\": \"\", \"fa-hotel\": \"\", \"fa-hourglass\": \"\", \"fa-hourglass-1\": \"\", \"fa-hourglass-2\": \"\", \"fa-hourglass-3\": \"\", \"fa-hourglass-end\": \"\", \"fa-hourglass-half\": \"\", \"fa-hourglass-o\": \"\", \"fa-hourglass-start\": \"\", \"fa-houzz\": \"\", \"fa-html5\": \"\", \"fa-i-cursor\": \"\", \"fa-id-badge\": \"\", \"fa-id-card\": \"\", \"fa-id-card-o\": \"\", \"fa-ils\": \"\", \"fa-image\": \"\", \"fa-imdb\": \"\", \"fa-inbox\": \"\", \"fa-indent\": \"\", \"fa-industry\": \"\", \"fa-info\": \"\", \"fa-info-circle\": \"\", \"fa-inr\": \"\", \"fa-instagram\": \"\", \"fa-institution\": \"\", \"fa-internet-explorer\": \"\", \"fa-intersex\": \"\", \"fa-ioxhost\": \"\", \"fa-italic\": \"\", \"fa-joomla\": \"\", \"fa-jpy\": \"\", \"fa-jsfiddle\": \"\", \"fa-key\": \"\", \"fa-keyboard-o\": \"\", \"fa-krw\": \"\", \"fa-language\": \"\", \"fa-laptop\": \"\", \"fa-lastfm\": \"\", \"fa-lastfm-square\": \"\", \"fa-leaf\": \"\", \"fa-leanpub\": \"\", \"fa-legal\": \"\", \"fa-lemon-o\": \"\", \"fa-level-down\": \"\", \"fa-level-up\": \"\", \"fa-life-bouy\": \"\", \"fa-life-buoy\": \"\", \"fa-life-ring\": \"\", \"fa-life-saver\": \"\", \"fa-lightbulb-o\": \"\", \"fa-line-chart\": \"\", \"fa-link\": \"\", \"fa-linkedin\": \"\", \"fa-linkedin-square\": \"\", \"fa-linode\": \"\", \"fa-linux\": \"\", \"fa-list\": \"\", \"fa-list-alt\": \"\", \"fa-list-ol\": \"\", \"fa-list-ul\": \"\", \"fa-location-arrow\": \"\", \"fa-lock\": \"\", \"fa-long-arrow-down\": \"\", \"fa-long-arrow-left\": \"\", \"fa-long-arrow-right\": \"\", \"fa-long-arrow-up\": \"\", \"fa-low-vision\": \"\", \"fa-magic\": \"\", \"fa-magnet\": \"\", \"fa-mail-forward\": \"\", \"fa-mail-reply\": \"\", \"fa-mail-reply-all\": \"\", \"fa-male\": \"\", \"fa-map\": \"\", \"fa-map-marker\": \"\", \"fa-map-o\": \"\", \"fa-map-pin\": \"\", \"fa-map-signs\": \"\", \"fa-mars\": \"\", \"fa-mars-double\": \"\", \"fa-mars-stroke\": \"\", \"fa-mars-stroke-h\": \"\", \"fa-mars-stroke-v\": \"\", \"fa-maxcdn\": \"\", \"fa-meanpath\": \"\", \"fa-medium\": \"\", \"fa-medkit\": \"\", \"fa-meetup\": \"\", \"fa-meh-o\": \"\", \"fa-mercury\": \"\", \"fa-microchip\": \"\", \"fa-microphone\": \"\", \"fa-microphone-slash\": \"\", \"fa-minus\": \"\", \"fa-minus-circle\": \"\", \"fa-minus-square\": \"\", \"fa-minus-square-o\": \"\", \"fa-mixcloud\": \"\", \"fa-mobile\": \"\", \"fa-mobile-phone\": \"\", \"fa-modx\": \"\", \"fa-money\": \"\", \"fa-moon-o\": \"\", \"fa-mortar-board\": \"\", \"fa-motorcycle\": \"\", \"fa-mouse-pointer\": \"\", \"fa-music\": \"\", \"fa-navicon\": \"\", \"fa-neuter\": \"\", \"fa-newspaper-o\": \"\", \"fa-object-group\": \"\", \"fa-object-ungroup\": \"\", \"fa-odnoklassniki\": \"\", \"fa-odnoklassniki-square\": \"\", \"fa-opencart\": \"\", \"fa-openid\": \"\", \"fa-opera\": \"\", \"fa-optin-monster\": \"\", \"fa-outdent\": \"\", \"fa-pagelines\": \"\", \"fa-paint-brush\": \"\", \"fa-paper-plane\": \"\", \"fa-paper-plane-o\": \"\", \"fa-paperclip\": \"\", \"fa-paragraph\": \"\", \"fa-paste\": \"\", \"fa-pause\": \"\", \"fa-pause-circle\": \"\", \"fa-pause-circle-o\": \"\", \"fa-paw\": \"\", \"fa-paypal\": \"\", \"fa-pencil\": \"\", \"fa-pencil-square\": \"\", \"fa-pencil-square-o\": \"\", \"fa-percent\": \"\", \"fa-phone\": \"\", \"fa-phone-square\": \"\", \"fa-photo\": \"\", \"fa-picture-o\": \"\", \"fa-pie-chart\": \"\", \"fa-pied-piper\": \"\", \"fa-pied-piper-alt\": \"\", \"fa-pied-piper-pp\": \"\", \"fa-pinterest\": \"\", \"fa-pinterest-p\": \"\", \"fa-pinterest-square\": \"\", \"fa-plane\": \"\", \"fa-play\": \"\", \"fa-play-circle\": \"\", \"fa-play-circle-o\": \"\", \"fa-plug\": \"\", \"fa-plus\": \"\", \"fa-plus-circle\": \"\", \"fa-plus-square\": \"\", \"fa-plus-square-o\": \"\", \"fa-podcast\": \"\", \"fa-power-off\": \"\", \"fa-print\": \"\", \"fa-product-hunt\": \"\", \"fa-puzzle-piece\": \"\", \"fa-qq\": \"\", \"fa-qrcode\": \"\", \"fa-question\": \"\", \"fa-question-circle\": \"\", \"fa-question-circle-o\": \"\", \"fa-quora\": \"\", \"fa-quote-left\": \"\", \"fa-quote-right\": \"\", \"fa-ra\": \"\", \"fa-random\": \"\", \"fa-ravelry\": \"\", \"fa-rebel\": \"\", \"fa-recycle\": \"\", \"fa-reddit\": \"\", \"fa-reddit-alien\": \"\", \"fa-reddit-square\": \"\", \"fa-refresh\": \"\", \"fa-registered\": \"\", \"fa-remove\": \"\", \"fa-renren\": \"\", \"fa-reorder\": \"\", \"fa-repeat\": \"\", \"fa-reply\": \"\", \"fa-reply-all\": \"\", \"fa-resistance\": \"\", \"fa-retweet\": \"\", \"fa-rmb\": \"\", \"fa-road\": \"\", \"fa-rocket\": \"\", \"fa-rotate-left\": \"\", \"fa-rotate-right\": \"\", \"fa-rouble\": \"\", \"fa-rss\": \"\", \"fa-rss-square\": \"\", \"fa-rub\": \"\", \"fa-ruble\": \"\", \"fa-rupee\": \"\", \"fa-s15\": \"\", \"fa-safari\": \"\", \"fa-save\": \"\", \"fa-scissors\": \"\", \"fa-scribd\": \"\", \"fa-search\": \"\", \"fa-search-minus\": \"\", \"fa-search-plus\": \"\", \"fa-sellsy\": \"\", \"fa-send\": \"\", \"fa-send-o\": \"\", \"fa-server\": \"\", \"fa-share\": \"\", \"fa-share-alt\": \"\", \"fa-share-alt-square\": \"\", \"fa-share-square\": \"\", \"fa-share-square-o\": \"\", \"fa-shekel\": \"\", \"fa-sheqel\": \"\", \"fa-shield\": \"\", \"fa-ship\": \"\", \"fa-shirtsinbulk\": \"\", \"fa-shopping-bag\": \"\", \"fa-shopping-basket\": \"\", \"fa-shopping-cart\": \"\", \"fa-shower\": \"\", \"fa-sign-in\": \"\", \"fa-sign-language\": \"\", \"fa-sign-out\": \"\", \"fa-signal\": \"\", \"fa-signing\": \"\", \"fa-simplybuilt\": \"\", \"fa-sitemap\": \"\", \"fa-skyatlas\": \"\", \"fa-skype\": \"\", \"fa-slack\": \"\", \"fa-sliders\": \"\", \"fa-slideshare\": \"\", \"fa-smile-o\": \"\", \"fa-snapchat\": \"\", \"fa-snapchat-ghost\": \"\", \"fa-snapchat-square\": \"\", \"fa-snowflake-o\": \"\", \"fa-soccer-ball-o\": \"\", \"fa-sort\": \"\", \"fa-sort-alpha-asc\": \"\", \"fa-sort-alpha-desc\": \"\", \"fa-sort-amount-asc\": \"\", \"fa-sort-amount-desc\": \"\", \"fa-sort-asc\": \"\", \"fa-sort-desc\": \"\", \"fa-sort-down\": \"\", \"fa-sort-numeric-asc\": \"\", \"fa-sort-numeric-desc\": \"\", \"fa-sort-up\": \"\", \"fa-soundcloud\": \"\", \"fa-space-shuttle\": \"\", \"fa-spinner\": \"\", \"fa-spoon\": \"\", \"fa-spotify\": \"\", \"fa-square\": \"\", \"fa-square-o\": \"\", \"fa-stack-exchange\": \"\", \"fa-stack-overflow\": \"\", \"fa-star\": \"\", \"fa-star-half\": \"\", \"fa-star-half-empty\": \"\", \"fa-star-half-full\": \"\", \"fa-star-half-o\": \"\", \"fa-star-o\": \"\", \"fa-steam\": \"\", \"fa-steam-square\": \"\", \"fa-step-backward\": \"\", \"fa-step-forward\": \"\", \"fa-stethoscope\": \"\", \"fa-sticky-note\": \"\", \"fa-sticky-note-o\": \"\", \"fa-stop\": \"\", \"fa-stop-circle\": \"\", \"fa-stop-circle-o\": \"\", \"fa-street-view\": \"\", \"fa-strikethrough\": \"\", \"fa-stumbleupon\": \"\", \"fa-stumbleupon-circle\": \"\", \"fa-subscript\": \"\", \"fa-subway\": \"\", \"fa-suitcase\": \"\", \"fa-sun-o\": \"\", \"fa-superpowers\": \"\", \"fa-superscript\": \"\", \"fa-support\": \"\", \"fa-table\": \"\", \"fa-tablet\": \"\", \"fa-tachometer\": \"\", \"fa-tag\": \"\", \"fa-tags\": \"\", \"fa-tasks\": \"\", \"fa-taxi\": \"\", \"fa-telegram\": \"\", \"fa-television\": \"\", \"fa-tencent-weibo\": \"\", \"fa-terminal\": \"\", \"fa-text-height\": \"\", \"fa-text-width\": \"\", \"fa-th\": \"\", \"fa-th-large\": \"\", \"fa-th-list\": \"\", \"fa-themeisle\": \"\", \"fa-thermometer\": \"\", \"fa-thermometer-0\": \"\", \"fa-thermometer-1\": \"\", \"fa-thermometer-2\": \"\", \"fa-thermometer-3\": \"\", \"fa-thermometer-4\": \"\", \"fa-thermometer-empty\": \"\", \"fa-thermometer-full\": \"\", \"fa-thermometer-half\": \"\", \"fa-thermometer-quarter\": \"\", \"fa-thermometer-three-quarters\": \"\", \"fa-thumb-tack\": \"\", \"fa-thumbs-down\": \"\", \"fa-thumbs-o-down\": \"\", \"fa-thumbs-o-up\": \"\", \"fa-thumbs-up\": \"\", \"fa-ticket\": \"\", \"fa-times\": \"\", \"fa-times-circle\": \"\", \"fa-times-circle-o\": \"\", \"fa-times-rectangle\": \"\", \"fa-times-rectangle-o\": \"\", \"fa-tint\": \"\", \"fa-toggle-down\": \"\", \"fa-toggle-left\": \"\", \"fa-toggle-off\": \"\", \"fa-toggle-on\": \"\", \"fa-toggle-right\": \"\", \"fa-toggle-up\": \"\", \"fa-trademark\": \"\", \"fa-train\": \"\", \"fa-transgender\": \"\", \"fa-transgender-alt\": \"\", \"fa-trash\": \"\", \"fa-trash-o\": \"\", \"fa-tree\": \"\", \"fa-trello\": \"\", \"fa-tripadvisor\": \"\", \"fa-trophy\": \"\", \"fa-truck\": \"\", \"fa-try\": \"\", \"fa-tty\": \"\", \"fa-tumblr\": \"\", \"fa-tumblr-square\": \"\", \"fa-turkish-lira\": \"\", \"fa-tv\": \"\", \"fa-twitch\": \"\", \"fa-twitter\": \"\", \"fa-twitter-square\": \"\", \"fa-umbrella\": \"\", \"fa-underline\": \"\", \"fa-undo\": \"\", \"fa-universal-access\": \"\", \"fa-university\": \"\", \"fa-unlink\": \"\", \"fa-unlock\": \"\", \"fa-unlock-alt\": \"\", \"fa-unsorted\": \"\", \"fa-upload\": \"\", \"fa-usb\": \"\", \"fa-usd\": \"\", \"fa-user\": \"\", \"fa-user-circle\": \"\", \"fa-user-circle-o\": \"\", \"fa-user-md\": \"\", \"fa-user-o\": \"\", \"fa-user-plus\": \"\", \"fa-user-secret\": \"\", \"fa-user-times\": \"\", \"fa-users\": \"\", \"fa-vcard\": \"\", \"fa-vcard-o\": \"\", \"fa-venus\": \"\", \"fa-venus-double\": \"\", \"fa-venus-mars\": \"\", \"fa-viacoin\": \"\", \"fa-viadeo\": \"\", \"fa-viadeo-square\": \"\", \"fa-video-camera\": \"\", \"fa-vimeo\": \"\", \"fa-vimeo-square\": \"\", \"fa-vine\": \"\", \"fa-vk\": \"\", \"fa-volume-control-phone\": \"\", \"fa-volume-down\": \"\", \"fa-volume-off\": \"\", \"fa-volume-up\": \"\", \"fa-warning\": \"\", \"fa-wechat\": \"\", \"fa-weibo\": \"\", \"fa-weixin\": \"\", \"fa-whatsapp\": \"\", \"fa-wheelchair\": \"\", \"fa-wheelchair-alt\": \"\", \"fa-wifi\": \"\", \"fa-wikipedia-w\": \"\", \"fa-window-close\": \"\", \"fa-window-close-o\": \"\", \"fa-window-maximize\": \"\", \"fa-window-minimize\": \"\", \"fa-window-restore\": \"\", \"fa-windows\": \"\", \"fa-won\": \"\", \"fa-wordpress\": \"\", \"fa-wpbeginner\": \"\", \"fa-wpexplorer\": \"\", \"fa-wpforms\": \"\", \"fa-wrench\": \"\", \"fa-xing\": \"\", \"fa-xing-square\": \"\", \"fa-y-combinator\": \"\", \"fa-y-combinator-square\": \"\", \"fa-yahoo\": \"\", \"fa-yc\": \"\", \"fa-yc-square\": \"\", \"fa-yelp\": \"\", \"fa-yen\": \"\", \"fa-yoast\": \"\", \"fa-youtube\": \"\", \"fa-youtube-play\": \"\", \"fa-youtube-square\": \"\" };\nconst faClassMap = {\n \"fa-arrows\": \"fas fa-arrows-alt\",\n \"fa-address-book-o\": \"fa fa-address-book\",\n \"fa-address-card-o\": \"fa fa-address-card\",\n \"fa-arrow-circle-o-down\": \"fa fa-arrow-alt-circle-down\",\n \"fa-arrow-circle-o-left\": \"fa fa-arrow-alt-circle-left\",\n \"fa-arrow-circle-o-right\": \"fa fa-arrow-alt-circle-right\",\n \"fa-arrow-circle-o-up\": \"fa fa-arrow-alt-circle-up\",\n \"fa-arrows-h\": \"fas fa-arrows-alt-h\",\n \"fa-arrows-v\": \"fas fa-arrows-alt-v\",\n \"fa-bell-o\": \"fa fa-bell\",\n \"fa-bell-slash-o\": \"fa fa-bell-slash\",\n \"fa-bitbucket-square\": \"fab fa-bitbucket\",\n \"fa-bookmark-o\": \"fa fa-bookmark\",\n \"fa-building-o\": \"fa fa-building\",\n \"fa-check-circle-o\": \"fa fa-check-circle\",\n \"fa-check-square-o\": \"fa fa-check-square\",\n \"fa-circle-o\": \"fa fa-circle\",\n \"fa-circle-thin\": \"fa fa-circle\",\n \"fa-cloud-download\": \"fas fa-cloud-download-alt\",\n \"fa-cloud-upload\": \"fas fa-cloud-upload-alt\",\n \"fa-comment-o\": \"fa fa-comment\",\n \"fa-commenting-o\": \"fa fa-comment-dots\",\n \"fa-comments-o\": \"fa fa-comments\",\n \"fa-credit-card-alt\": \"fas fa-credit-card\",\n \"fa-cutlery\": \"fas fa-utensils\",\n \"fa-dashboard\": \"fas fa-tachometer-alt\",\n \"fa-diamond\": \"fa fa-gem\",\n \"fa-drivers-license-o\": \"fa fa-address-card\",\n \"fa-envelope-o\": \"fa fa-envelope\",\n \"fa-envelope-open-o\": \"fa fa-envelope-open\",\n \"fa-exchange\": \"fas fa-exchange-alt\",\n \"fa-external-link\": \"fas fa-external-link-alt\",\n \"fa-external-link-square\": \"fas fa-external-link-square-alt\",\n \"fa-facebook-official\": \"fab fa-facebook-square\",\n \"fa-file-o\": \"fa fa-file\",\n \"fa-file-text-o\": \"fa fa-file-alt\",\n \"fa-flag-o\": \"fa fa-flag\",\n \"fa-folder-o\": \"fa fa-folder\",\n \"fa-folder-open-o\": \"fa fa-folder-open\",\n \"fa-heart-o\": \"fa fa-heart\",\n \"fa-hourglass-o\": \"fa fa-hourglass\",\n \"fa-id-card-o\": \"fa fa-id-card\",\n \"fa-level-down\": \"fas fa-level-down-alt\",\n \"fa-level-up\": \"fas fa-level-up-alt\",\n \"fa-long-arrow-down\": \"fas fa-long-arrow-alt-down\",\n \"fa-long-arrow-left\": \"fas fa-long-arrow-alt-left\",\n \"fa-long-arrow-right\": \"fas fa-long-arrow-alt-right\",\n \"fa-long-arrow-up\": \"fas fa-long-arrow-alt-up\",\n \"fa-mail-reply\": \"fas fa-reply\",\n \"fa-map-o\": \"fa fa-map\",\n \"fa-meanpath\": \"fas fa-square\",\n \"fa-minus-square-o\": \"fa fa-minus-square\",\n \"fa-paper-plane-o\": \"fa fa-paper-plane\",\n \"fa-pause-circle-o\": \"fa fa-pause-circle\",\n \"fa-pencil\": \"fas fa-pencil-alt\",\n \"fa-play-circle-o\": \"fa fa-play-circle\",\n \"fa-plus-square-o\": \"fa fa-plus-square\",\n \"fa-question-circle-o\": \"fa fa-question-circle\",\n \"fa-reply\": \"fas fa-reply\",\n \"fa-send-o\": \"fa fa-paper-plane\",\n \"fa-share-square-o\": \"fa fa-share-square\",\n \"fa-shield\": \"fas fa-shield-alt\",\n \"fa-sign-in\": \"fas fa-sign-in-alt\",\n \"fa-sign-out\": \"fas fa-sign-out-alt\",\n \"fa-spoon\": \"fas fa-utensil-spoon\",\n \"fa-square-o\": \"fa fa-square\",\n \"fa-star-half-empty\": \"fa fa-star-half\",\n \"fa-star-half-full\": \"fas fa-star-half-alt\",\n \"fa-star-half-o\": \"fa fa-star-half\",\n \"fa-star-o\": \"fa fa-star\",\n \"fa-sticky-note-o\": \"fa fa-sticky-note\",\n \"fa-stop-circle-o\": \"fa fa-stop-circle\",\n \"fa-tachometer\": \"fas fa-tachometer-alt\",\n \"fa-thumbs-o-down\": \"fa fa-thumbs-down\",\n \"fa-thumbs-o-up\": \"fa fa-thumbs-up\",\n \"fa-ticket\": \"fas fa-ticket-alt\",\n \"fa-times-circle-o\": \"fa fa-times-circle\",\n \"fa-times-rectangle\": \"fas fa-window-close\",\n \"fa-times-rectangle-o\": \"fa fa-window-close\",\n \"fa-trash-o\": \"fa fa-trash-alt\",\n \"fa-user-circle-o\": \"fa fa-user-circle\",\n \"fa-user-o\": \"fa fa-user\",\n \"fa-vcard-o\": \"fa fa-address-card\",\n \"fa-wheelchair-alt\": \"fas fa-wheelchair\",\n \"fa-window-close\": \"fas fa-window-close\",\n \"fa-window-close-o\": \"fa fa-window-close\",\n \"fa-youtube-play\": \"fab fa-youtube\",\n \"fa-youtube-square\": \"fab fa-youtube-square\"\n};\nexport function faKeys(): string[] {\n return Object.keys(faCharMap);\n}\n\nexport function fa5Class(key: string): string {\n return faClassMap[key] ? faClassMap[key] : key;\n}\n\nexport function faChar(key: string, defChar: string = \"fa-question\"): string {\n if (key.indexOf(\"fa-\") === 0) {\n return faCharMap[key] || faCharMap[defChar];\n }\n return key;\n}\n\nexport function faCode(key: string): number {\n return faChar(key).charCodeAt(0);\n}\n\nexport function removeHTMLFromString(str: string, div?: HTMLDivElement) {\n div = div ? div : document.createElement(\"div\");\n div.innerHTML = str;\n return div.textContent || div.innerText || \"\";\n}\n\n// Template ---\n// https://github.com/Matt-Esch/string-template (MIT)\nconst nargs = /\\{([0-9a-zA-Z_\\s\\[\\]]+)\\}/g;\nconst nargs2 = /\\{\\{([0-9a-zA-Z_\\s\\[\\]]+)\\}\\}/g;\n\nexport function templateFields(tpl: string): string[] {\n if (!tpl) return [];\n const retVal: string[] = [];\n const matches = tpl.match(nargs);\n if (matches && matches.length) {\n for (const tplField of matches) {\n retVal.push(tplField.substring(1, tplField.length - 1));\n }\n }\n return retVal;\n}\n\nexport function template(tpl?: string, _args?) {\n if (!tpl) return \"\";\n let args;\n\n if (arguments.length === 2 && typeof arguments[1] === \"object\") {\n args = arguments[1];\n } else {\n args = new Array(arguments.length - 1);\n for (let i = 1; i < arguments.length; ++i) {\n args[i - 1] = arguments[i];\n }\n }\n\n if (!args || !args.hasOwnProperty) {\n args = {};\n }\n\n // Array handling\n for (const key in args) {\n if (isArray(args[key])) {\n args[key].forEach(function (row, idx) {\n args[key + \"[\" + idx + \"]\"] = row;\n });\n }\n }\n\n return tpl\n .replace(nargs2, function replaceArg(match, i) {\n const result = args.hasOwnProperty(i) ? args[i] : null;\n if (result === null || result === undefined) {\n return match;\n }\n return removeHTMLFromString(result);\n })\n .replace(nargs, function replaceArg(match, i, index) {\n const result = args.hasOwnProperty(i) ? args[i] : null;\n if (result === null || result === undefined) {\n return \"\";\n }\n return result;\n })\n ;\n}\n\nexport function naturalSort(data, order, idx, sortCaseSensitive) {\n return data.slice(0).sort(function (a, b) {\n return _naturalSort(a, b, order, idx, sortCaseSensitive);\n });\n}\n\nexport function multiSort(data, sortBy) {\n if (sortBy && sortBy.length) {\n data.sort(function (l, r) {\n for (let i = 0; i < sortBy.length; ++i) {\n const lVal = l[sortBy[i].idx];\n const rVal = r[sortBy[i].idx];\n if (lVal !== rVal) {\n return sortBy[i].reverse ? d3Descending(lVal, rVal) : d3Ascending(lVal, rVal);\n }\n }\n return 0;\n });\n }\n return data;\n}\n\nexport const Selection = SelectionBag;\n\nexport function urlParams() {\n const retVal = {};\n const url = window.location.href;\n const idx = url.indexOf(\"?\");\n if (idx >= 0) {\n url.substring(idx + 1).split(\"&\").forEach(function (param) {\n const paramParts = param.split(\"=\");\n switch (paramParts.length) {\n case 1:\n retVal[decodeURIComponent(paramParts[0])] = undefined;\n break;\n case 2:\n retVal[decodeURIComponent(paramParts[0])] = decodeURIComponent(paramParts[1]);\n break;\n default:\n throw new Error(\"Invalid URL Param: \" + param);\n }\n });\n }\n return retVal;\n}\n\nexport function endsWith(str: string, searchStr: string, pos?: number) {\n const subjectString = str.toString();\n if (typeof pos !== \"number\" || !isFinite(pos) || Math.floor(pos) !== pos || pos > subjectString.length) {\n pos = subjectString.length;\n }\n pos -= searchStr.length;\n const lastIndex = subjectString.indexOf(searchStr, pos);\n return lastIndex !== -1 && lastIndex === pos;\n}\n\nexport function d3ArrayAdapter(array) {\n return {\n ownerDocument: {\n createElement(_tagName) {\n return {\n get __data__() { return this.row; },\n set __data__(_) { this.row = array[this.index] = _; }\n };\n },\n\n createElementNS(_ns, tagName) {\n return this.createElement(tagName);\n }\n },\n\n querySelectorAll(selectors) {\n if (selectors) throw new Error(\"unsupported\");\n const context = this;\n return array.map(function (row, idx) {\n return {\n ownerDocument: context.ownerDocument,\n parentNode: context,\n get __data__() { return row; },\n set __data__(_) { array[idx] = _; }\n };\n });\n },\n\n appendChild(node) {\n node.parentNode = this;\n node.index = array.length;\n array.push(null);\n return node;\n },\n\n insertBefore(node, referenceNode) {\n const idx = array.indexOf(node.__data__);\n const refIdx = array.indexOf(referenceNode.__data__);\n if (idx > refIdx) {\n array.splice(refIdx, 0, array.splice(idx, 1)[0]);\n } else if (idx < refIdx - 1) {\n array.splice(refIdx - 1, 0, array.splice(idx, 1)[0]);\n }\n return node;\n },\n\n removeChild(node) {\n array.splice(array.indexOf(node.__data__), 1);\n return node;\n }\n };\n}\n\nexport function downloadBlob(blob: Blob, filename: string) {\n let a = document.createElement(\"a\");\n if (navigator[\"msSaveBlob\"]) { // IE10+\n a = null;\n return navigator[\"msSaveBlob\"](blob, filename);\n } else if (\"download\" in a) { // html 5\n a.href = URL.createObjectURL(blob);\n a.setAttribute(\"download\", filename);\n document.body.appendChild(a);\n setTimeout(function () {\n a.click();\n document.body.removeChild(a);\n }, 10);\n return true;\n }\n}\n\nexport function timestamp() {\n const currentdate = new Date();\n const timeFormat = d3TimeFormat(\"%Y-%m-%dT%H_%M_%S\");\n return timeFormat(currentdate);\n}\n\nexport function downloadString(format: \"CSV\" | \"TSV\" | \"JSON\" | \"TEXT\" | \"SVG\", blob: string, id?: string) {\n const filename = id || (\"data_\" + timestamp()) + \".\" + format.toLowerCase();\n\n let mimeType = \"\";\n switch (format) {\n case \"TSV\":\n mimeType = \"text/tab-seperated-values\";\n break;\n case \"JSON\":\n mimeType = \"application/json\";\n break;\n case \"SVG\":\n mimeType = \"image/svg+xml\";\n break;\n case \"CSV\":\n case \"TEXT\":\n default:\n mimeType = \"text/csv\";\n }\n downloadBlob(new Blob([blob], { type: mimeType }), filename);\n}\n\nexport function widgetPath(classID) {\n return \"../\" + classID.split(\"_\").join(\"/\");\n}\n\nexport function parseClassID(classID, prefix = \"..\") {\n const parts = classID.split(\".\");\n const classParts = parts[0].split(\"_\");\n return {\n package: `@hpcc-js/${classParts[0]}`,\n path: prefix + \"/\" + parts[0].split(\"_\").join(\"/\"),\n widgetID: classParts.length > 1 ? classParts[1] : null,\n memberWidgetID: parts.length > 1 ? parts[1] : null\n };\n}\n\nexport function checksum(s) {\n if (s instanceof Array) {\n s = s.join(\"\") + s.length;\n }\n switch (typeof s) {\n case \"string\":\n break;\n default:\n s = \"\" + s;\n }\n let chk = 0x12345678;\n for (let i = 0, l = s.length; i < l; ++i) {\n chk += (s.charCodeAt(i) * (i + 1));\n }\n return (chk & 0xffffffff).toString(16);\n}\nexport function getTime() {\n return (now && now.call(perf)) || (new Date().getTime());\n}\nexport function mixin(dest, _sources) {\n dest = dest || {};\n for (let i = 1, l = arguments.length; i < l; i++) {\n _mixin(dest, arguments[i]);\n }\n return dest;\n}\n\nfunction _mixin(dest, source) {\n let s;\n const empty = {};\n for (const key in source) {\n s = source[key];\n if (!(key in dest) || (dest[key] !== s && (!(key in empty) || empty[key] !== s))) {\n dest[key] = s;\n }\n }\n return dest;\n}\n\nexport function exists(prop, scope) {\n if (!prop || !scope) {\n return false;\n }\n const propParts = prop.split(\".\");\n let testScope = scope;\n for (let i = 0; i < propParts.length; ++i) {\n const item = propParts[i];\n if (testScope[item] === undefined) {\n return false;\n }\n testScope = testScope[item];\n }\n return true;\n}\n\nexport function logStringify(obj) {\n const cache = [];\n return JSON.stringify(obj, function (_key, value) {\n if (typeof value === \"object\" && value !== null) {\n if (cache.indexOf(value) !== -1) {\n return;\n }\n\n cache.push(value);\n }\n return value;\n });\n}\n\nexport function debounce(func, threshold = 100, execAsap = false) {\n return function debounced(..._dummyArgs) {\n const obj = this || {};\n const args = arguments;\n function delayed() {\n if (!execAsap)\n func.apply(obj, args);\n obj.__hpcc_debounce_timeout = null;\n }\n if (obj.__hpcc_debounce_timeout)\n clearTimeout(obj.__hpcc_debounce_timeout);\n else if (execAsap)\n func.apply(obj, args);\n obj.__hpcc_debounce_timeout = setTimeout(delayed, threshold);\n };\n}\n\nexport function parseVersionString(versionString) {\n const _sp = versionString.split(\".\");\n return {\n major: parseInt(_sp[0].replace(\"v\", \"\")),\n minor: parseInt(_sp[1]),\n patch: parseInt(_sp[2].split(\"-\")[0])\n };\n}\n\nexport type TextSize = { width: number; height: number; };\nlet g_fontSizeContext: CanvasRenderingContext2D;\nconst g_fontSizeContextCache: { [key: string]: TextSize } = {};\n\nexport function textSize(_text: string | string[], fontName: string = \"Verdana\", fontSize: number = 12, bold: boolean = false): Readonly<TextSize> {\n g_fontSizeContext = globalCanvasContext();\n const text = _text instanceof Array ? _text : [_text];\n const hash = `${bold}::${fontSize}::${fontName}::${text.join(\"::\")}`;\n let retVal = g_fontSizeContextCache[hash];\n if (!retVal) {\n retVal = { width: 0, height: 0 };\n g_fontSizeContext.font = `${bold ? \"bold \" : \"\"}${fontSize}px ${fontName}`;\n text.forEach(line => {\n const textMeasurement = g_fontSizeContext.measureText(\"\" + line);\n const width = textMeasurement.width;\n const height = (textMeasurement.fontBoundingBoxDescent + textMeasurement.fontBoundingBoxAscent) * text.length;\n g_fontSizeContextCache[hash] = retVal = {\n width: width > retVal.width ? width : retVal.width,\n height: height > retVal.height ? height : retVal.height\n };\n });\n }\n return retVal;\n}\n\nexport type TextRect = { width: number; height: number; top: number; right: number; bottom: number; left: number; };\nlet g_fontCanvas;\nconst g_fontRectContextCache: { [key: string]: TextRect } = {};\nexport function textRect(text: string, fontName: string = \"Verdana\", fontSize: number = 12, bold: boolean = false): Readonly<TextRect> {\n // This function is relatively expensive and should be used conservatively\n g_fontCanvas = globalCanvasElement();\n g_fontSizeContext = globalCanvasContext();\n const hash = `${bold}::${fontSize}::${fontName}::${text}`;\n let retVal = g_fontRectContextCache[hash];\n if (!retVal) {\n const font = `${bold ? \"bold \" : \"\"}${fontSize}px '${fontName}'`;\n g_fontSizeContext.font = font;\n const m = g_fontSizeContext.measureText(text);\n const w = g_fontCanvas.width = Math.ceil(m.width);\n const h = g_fontCanvas.height = fontSize * 1.5;\n const canvas = document.createElement(\"canvas\");\n canvas.width = w;\n canvas.height = h;\n g_fontSizeContext.font = font;\n g_fontSizeContext.fillStyle = \"black\";\n g_fontSizeContext.textAlign = \"start\";\n g_fontSizeContext.textBaseline = \"top\";\n g_fontSizeContext.fillText(text, 0, 0);\n\n let top, right, bottom, left = 0;\n if (w > 0) {\n const data = g_fontSizeContext.getImageData(0, 0, w, h).data;\n for (let y = 0; y < h; y++) {\n for (let x = 0; x < w; x++) {\n const i = (x + y * w) * 4;\n if (data[i + 3] !== 0) {\n if (top === undefined) {\n top = y;\n }\n if (left === undefined || left > x) {\n left = x;\n }\n if (right === undefined || right < x) {\n right = x;\n }\n bottom = y;\n }\n }\n }\n }\n retVal = {\n width: right - left + 1,\n height: bottom - top + 1,\n top,\n right,\n bottom,\n left\n };\n g_fontRectContextCache[hash] = retVal;\n }\n return retVal;\n}\n\nfunction globalCanvasElement() {\n if (!g_fontCanvas) {\n g_fontCanvas = document.getElementById(\"hpcc_js_font_size\");\n if (!g_fontCanvas) {\n g_fontCanvas = document.createElement(\"canvas\");\n g_fontCanvas.id = \"hpcc_js_font_size\";\n document.body.appendChild(g_fontCanvas);\n }\n }\n return g_fontCanvas;\n}\n\nfunction globalCanvasContext() {\n if (!g_fontSizeContext) {\n g_fontCanvas = globalCanvasElement();\n g_fontSizeContext = (g_fontCanvas as HTMLCanvasElement).getContext(\"2d\");\n }\n return g_fontSizeContext;\n}\n\nexport function safeRaise(domNode: Element) {\n const target = domNode;\n let nextSibling = target.nextSibling;\n while (nextSibling) {\n target.parentNode.insertBefore(nextSibling, target);\n nextSibling = target.nextSibling;\n }\n}\n","import { deviation as d3Deviation, max as d3Max, mean as d3Mean, median as d3Median, min as d3Min, sum as d3Sum, variance as d3Variance } from \"d3-array\";\nimport { map as d3Map, nest as d3Nest } from \"d3-collection\";\nimport { csvFormatRows as d3CsvFormatRows, csvParse as d3CsvParse, tsvFormatRows as d3TsvFormatRows, tsvParse as d3TsvParse } from \"d3-dsv\";\nimport { format as d3Format } from \"d3-format\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\nimport { PropertyExt } from \"./PropertyExt.ts\";\nimport * as Utility from \"./Utility.ts\";\n\nconst d3Aggr = {\n min: d3Min,\n max: d3Max,\n mean: d3Mean,\n median: d3Median,\n variance: d3Variance,\n deviation: d3Deviation,\n sum: d3Sum\n};\n\nlet lastFoundFormat = null;\n\nexport interface INestedColumn {\n label: string;\n columns: Array<string | INestedColumn>;\n}\n\n// Field ---\nexport type FieldType = \"string\" | \"number\" | \"boolean\" | \"date\" | \"time\" | \"hidden\" | \"nested\";\n\nexport class Field extends PropertyExt {\n private _owner: Grid;\n idx: number;\n protected _children: Field[] = [];\n\n constructor(id?) {\n super();\n\n this._id = id || this._id;\n }\n\n owner(): Grid;\n owner(_: Grid): this;\n owner(_?: Grid): Grid | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.label();\n }\n\n checksum(): string {\n return Utility.checksum(this.label() + this.type() + this.mask() + this.format());\n }\n\n typeTransformer(_: any) {\n switch (this.type()) {\n case \"number\":\n return Number(_);\n case \"string\":\n return String(_);\n case \"boolean\":\n return typeof (_) === \"string\" && [\"false\", \"off\", \"0\"].indexOf(_.toLowerCase()) >= 0 ? false : Boolean(_);\n case \"time\":\n case \"date\":\n return this.maskTransformer(_);\n }\n return _;\n }\n\n maskTransformer(_) {\n return this.formatter(this.mask()).parse(String(_));\n }\n\n formatTransformer(_) {\n return this.formatter(this.format())(_);\n }\n\n parse(_) {\n if (!_) {\n return _;\n }\n try {\n return this.typeTransformer(_);\n } catch (e) {\n console.warn(\"Unable to parse: \" + _);\n return null;\n }\n }\n\n transform(_) {\n if (!_) {\n return _;\n }\n try {\n return this.formatTransformer(this.typeTransformer(_));\n } catch (e) {\n console.warn(\"Unable to transform: \" + _);\n return null;\n }\n }\n\n clone() {\n const context = this;\n const retVal = new Field(this._id);\n cloneProp(retVal, \"label\");\n cloneProp(retVal, \"type\");\n cloneProp(retVal, \"mask\");\n cloneProp(retVal, \"format\");\n\n function cloneProp(dest, key) {\n dest[key + \"_default\"](context[key + \"_default\"]());\n if (context[key + \"_exists\"]()) {\n dest[key](context[key]());\n }\n }\n return retVal;\n }\n\n formatter(format) {\n let retVal;\n if (!format) {\n retVal = function (_) {\n return _;\n };\n retVal.parse = function (_) {\n return _;\n };\n return retVal;\n }\n switch (this.type()) {\n case \"time\":\n case \"date\":\n return d3TimeFormat(format);\n }\n retVal = d3Format(format);\n retVal.parse = function (_) {\n return _;\n };\n return retVal;\n }\n\n children(): Field[];\n children(_: Array<string | INestedColumn | Field>, asDefault?: boolean): this;\n children(_?: Array<string | INestedColumn | Field>, asDefault?: boolean): Field[] | this {\n if (_ === void 0) return this._children;\n this.type(\"nested\");\n const fieldsArr = this._children;\n this._children = _.map((field: string | INestedColumn | Field, idx): Field => {\n if (field instanceof Field) {\n fieldsArr[idx] = field;\n return field;\n } else if (typeof field === \"string\") {\n if (asDefault) {\n return (fieldsArr[idx] || new Field()).label_default(field);\n } else {\n return (fieldsArr[idx] || new Field()).label(field);\n }\n } else {\n if (asDefault) {\n return (fieldsArr[idx] || new Field())\n .label_default(field.label)\n .children(field.columns) as Field\n ;\n } else {\n return (fieldsArr[idx] || new Field())\n .label(field.label)\n .children(field.columns) as Field\n ;\n }\n }\n }, this);\n return this;\n }\n\n}\nField.prototype._class += \" common_Database.Field\";\n\nexport interface Field {\n label(): string;\n label(_: string): this;\n label_default(): string;\n label_default(_: string): this;\n type(): FieldType;\n type(_: FieldType): this;\n mask(): string;\n mask(_: string): this;\n format(): string;\n format(_: string): this;\n}\n\nField.prototype.publish(\"label\", \"\", \"string\", \"Label\", null, { optional: true });\nField.prototype.publish(\"type\", \"\", \"set\", \"Type\", [\"\", \"string\", \"number\", \"boolean\", \"date\", \"time\", \"hidden\", \"nested\"], { optional: true });\nField.prototype.publish(\"mask\", \"\", \"string\", \"Time Mask\", null, { disable: (w: any) => w.type() !== \"time\", optional: true });\nField.prototype.publish(\"format\", \"\", \"string\", \"Format\", null, { optional: true });\n\n// Grid ---\nexport class Grid extends PropertyExt {\n _dataChecksum: boolean;\n _dataVersion: number;\n\n private _data = [];\n private _dataChecksums = [];\n\n constructor(dataChecksum?) {\n super();\n dataChecksum = dataChecksum || false;\n this._dataChecksum = dataChecksum;\n this._dataVersion = 0;\n this.clear();\n }\n\n clear() {\n this.fields([]);\n this._data = [];\n this._dataChecksums = [];\n ++this._dataVersion;\n return this;\n }\n\n // Backward compatability ---\n resetColumns() {\n const fields = this.fields() as Field[];\n this.legacyColumns([]);\n this.legacyColumns(fields.map(function (field) {\n return field.label();\n }));\n }\n\n legacyColumns(_?, asDefault?): any | Grid {\n if (!arguments.length) return this.row(0);\n this.row(0, _, asDefault);\n return this;\n }\n\n legacyData(_?, _clone?) {\n return Grid.prototype.data.apply(this, arguments);\n }\n\n // Meta ---\n schema() {\n }\n\n field(idx) {\n return this.fields()[idx];\n }\n\n fieldByLabel(_, ignoreCase?) {\n return this.fields().filter(function (field: Field, idx) {\n field.idx = idx;\n return ignoreCase ? field.label().toLowerCase() === _.toLowerCase() : field.label() === _;\n })[0];\n }\n\n data(_?, clone?): any | Grid {\n if (!arguments.length) return this._data;\n this._data = clone ? _.map(function (d) { return d.map(function (d2) { return d2; }); }) : _;\n this._dataCalcChecksum();\n return this;\n }\n\n parsedData() {\n const context = this;\n return this._data.map(function (row) {\n return row.map(function (cell, idx) {\n return context.fields()[idx].parse(cell);\n });\n });\n }\n\n formattedData() {\n return this._data.map(row => {\n return this.fields().map((field, idx) => {\n return field.transform(row[idx]);\n });\n });\n }\n\n fieldsChecksum() {\n return Utility.checksum(this.fields().map(function (field) { return field.checksum(); }));\n }\n\n dataChecksum() {\n return Utility.checksum(this._dataChecksum ? this._dataChecksums : this._dataVersion);\n }\n\n checksum() {\n return Utility.checksum([this.dataChecksum(), this.fieldsChecksum()]);\n }\n\n // Row Access ---\n private _dataCalcChecksum(idx?) {\n ++this._dataVersion;\n if (this._dataChecksum) {\n if (arguments.length) {\n this._dataChecksums[idx] = Utility.checksum(this._data[idx]);\n } else {\n this._dataChecksums = this._data.map(function (row) { return Utility.checksum(row); });\n }\n }\n return this;\n }\n\n row(row?, _?, asDefault?): any | Grid {\n if (arguments.length < 2) return row === 0 ? this.fields().map(function (d) { return d.label(); }) : this._data[row - 1];\n if (row === 0) {\n const fieldsArr = this.fields();\n this.fields(_.map(function (field: string | INestedColumn, idx) {\n if (typeof field === \"string\") {\n if (asDefault) {\n return (fieldsArr[idx] || new Field()).label_default(field);\n } else {\n return (fieldsArr[idx] || new Field()).label(field);\n }\n } else {\n if (asDefault) {\n return (fieldsArr[idx] || new Field())\n .label_default(field.label)\n .children(field.columns)\n ;\n } else {\n return (fieldsArr[idx] || new Field())\n .label(field.label)\n .children(field.columns)\n ;\n }\n }\n }, this));\n } else {\n this._data[row - 1] = _;\n this._dataCalcChecksum(row - 1);\n }\n return this;\n }\n\n rows(_?): any | Grid {\n if (!arguments.length) return [this.row(0)].concat(this._data);\n this.row(0, _[0]);\n this._data = _.filter(function (_row, idx) { return idx > 0; });\n this._dataCalcChecksum();\n return this;\n }\n\n // Column Access ---\n column(col, _?): any | Grid {\n if (arguments.length < 2) return [this.fields()[col].label()].concat(this._data.map(function (row, _idx) { return row[col]; }));\n _.forEach(function (d, idx) {\n if (idx === 0) {\n this.fields()[col] = new Field().label(_[0]);\n } else {\n this._data[idx - 1][col] = d;\n this._dataCalcChecksum(idx - 1);\n }\n }, this);\n return this;\n }\n\n columnData(col, _): any | Grid {\n if (arguments.length < 2) return this._data.map(function (row, _idx) { return row[col]; });\n _.forEach(function (d, idx) {\n this._data[idx][col] = d;\n this._dataCalcChecksum(idx);\n }, this);\n return this;\n }\n\n columns(_?): any | Grid {\n if (!arguments.length) return this.fields().map(function (_col, idx) {\n return this.column(idx);\n }, this);\n _.forEach(function (_col, idx) {\n this.column(idx, _[idx]);\n }, this);\n return this;\n }\n\n // Cell Access ---\n cell(row, col, _) {\n if (arguments.length < 3) return this.row(row)[col];\n if (row === 0) {\n this.fields()[col] = new Field().label(_);\n } else {\n this._data[row][col] = _;\n this._dataCalcChecksum(row);\n }\n return this;\n }\n\n // Grid Access ---\n grid(_?) {\n return Grid.prototype.rows.apply(this, arguments);\n }\n\n // Hipie Helpers ---\n\n hipieMappings(columns, missingDataString) {\n missingDataString = missingDataString || \"\";\n if (!this.fields().length || !this._data.length) {\n return [];\n }\n const mappedColumns = [];\n let hasRollup = false;\n columns.forEach(function (mapping, idx) {\n const mappedColumn = {\n groupby: false,\n func: \"\",\n params: []\n };\n if (mapping.hasFunction()) {\n mappedColumn.func = mapping.function();\n if (mappedColumn.func === \"SCALE\") {\n mappedColumn.groupby = true;\n } else {\n hasRollup = true;\n }\n\n mapping.params().forEach(function (param) {\n const field = this.fieldByLabel(param, true);\n mappedColumn.params.push(field ? field.idx : -1);\n }, this);\n } else {\n mappedColumn.groupby = true;\n const field = this.fieldByLabel(mapping.id(), true);\n mappedColumn.params.push(field ? field.idx : -1);\n }\n mappedColumns.push(mappedColumn);\n }, this);\n\n if (hasRollup) {\n const retVal = [];\n this.rollup(mappedColumns.filter(function (mappedColumn) {\n return mappedColumn.groupby === true;\n }).map(function (d) {\n return d.params[0];\n }), function (leaves) {\n const row = mappedColumns.map(function (mappedColumn) {\n const param1 = mappedColumn.params[0];\n const param2 = mappedColumn.params[1];\n switch (mappedColumn.func) {\n case \"SUM\":\n return d3Sum(leaves, function (d) { return d[param1]; });\n case \"AVE\":\n return d3Mean(leaves, function (d) { return d[param1] / d[param2]; });\n case \"MIN\":\n return d3Min(leaves, function (d) { return d[param1]; });\n case \"MAX\":\n return d3Max(leaves, function (d) { return d[param1]; });\n case \"SCALE\":\n console.warn(\"Unexpected function: \" + mappedColumn.func);\n // All leaves should have the same values, use mean just in case they don't?\n return d3Mean(leaves, function (d) { return d[param1] / +param2; });\n }\n // All leaves should have the same value.\n return leaves[0][param1];\n });\n retVal.push(row);\n return row;\n });\n return retVal;\n } else {\n return this._data.map(function (row) {\n return mappedColumns.map(function (mappedColumn) {\n const param1 = mappedColumn.params[0];\n const param2 = mappedColumn.params[1];\n switch (mappedColumn.func) {\n case \"SCALE\":\n return row[param1] / +param2;\n case \"SUM\":\n case \"AVE\":\n case \"MIN\":\n case \"MAX\":\n console.warn(\"Unexpected function: \" + mappedColumn.func);\n }\n return row[param1];\n });\n });\n }\n }\n\n legacyView() {\n return new LegacyView(this);\n }\n\n nestView(columnIndicies) {\n return new RollupView(this, columnIndicies);\n }\n\n rollupView(columnIndicies, rollupFunc?) {\n return new RollupView(this, columnIndicies, rollupFunc);\n }\n\n aggregateView(columnIndicies, aggrType, aggrColumn, aggrDeltaColumn = \"\") {\n const context = this;\n return new RollupView(this, columnIndicies, function (values) {\n switch (aggrType) {\n case null:\n case undefined:\n case \"\":\n values.aggregate = values.length;\n return values;\n default:\n const columns = context.legacyColumns();\n const colIdx = columns.indexOf(aggrColumn);\n const deltaIdx = columns.indexOf(aggrDeltaColumn);\n values.aggregate = d3Aggr[aggrType](values, function (value) {\n return (+value[colIdx] - (deltaIdx >= 0 ? +value[deltaIdx] : 0)) / (deltaIdx >= 0 ? +value[deltaIdx] : 1);\n });\n return values;\n }\n });\n }\n\n // Nesting ---\n private _nest(columnIndicies, _rollup?) {\n if (!(columnIndicies instanceof Array)) {\n columnIndicies = [columnIndicies];\n }\n const nest = d3Nest();\n columnIndicies.forEach(function (idx) {\n nest.key(function (d) {\n return d[idx];\n });\n });\n return nest;\n }\n\n nest(columnIndicies) {\n return this._nest(columnIndicies)\n .entries(this._data)\n ;\n }\n\n rollup(columnIndicies, rollup) {\n return this._nest(columnIndicies)\n .rollup(rollup)\n .entries(this._data)\n ;\n }\n\n // Util ---\n length() {\n return this._data.length + 1;\n }\n\n width() {\n return this.fields().length;\n }\n\n pivot() {\n this.resetColumns();\n this.rows(this.columns());\n return this;\n }\n\n clone(deep) {\n return new Grid()\n .fields(this.fields(), deep)\n .data(this.data(), deep)\n ;\n }\n\n filter(filter) {\n const filterIdx = {};\n this.row(0).forEach(function (col, idx) {\n filterIdx[col] = idx;\n });\n return new Grid()\n .fields(this.fields(), true)\n .data(this.data().filter(function (row) {\n for (const key in filter) {\n if (filter[key] !== row[filterIdx[key]]) {\n return false;\n }\n }\n return true;\n }))\n ;\n }\n\n analyse(columns) {\n if (!(columns instanceof Array)) {\n columns = [columns];\n }\n const retVal = [];\n columns.forEach(function (col) {\n const rollup = this.rollup(col, function (leaves) {\n return leaves.length;\n });\n retVal.push(rollup);\n const keys = rollup.map(function (d) { return d.key; });\n this.fields()[col].isBoolean = typeTest(keys, isBoolean);\n this.fields()[col].isNumber = typeTest(keys, isNumber);\n this.fields()[col].isString = !this.fields()[col].isNumber && typeTest(keys, isString);\n this.fields()[col].isUSState = this.fields()[col].isString && typeTest(keys, isUSState);\n this.fields()[col].isDateTime = this.fields()[col].isString && typeTest(keys, isDateTime);\n this.fields()[col].isDateTimeFormat = lastFoundFormat;\n this.fields()[col].isDate = !this.fields()[col].isDateTime && typeTest(keys, isDate);\n this.fields()[col].isDateFormat = lastFoundFormat;\n this.fields()[col].isTime = this.fields()[col].isString && !this.fields()[col].isDateTime && !this.fields()[col].isDate && typeTest(keys, isTime);\n this.fields()[col].isTimeFormat = lastFoundFormat;\n }, this);\n return retVal;\n }\n\n // Import/Export ---\n jsonObj(_?): any | Grid {\n if (!arguments.length) return this._data.map(function (row) {\n const retVal = {};\n this.row(0).forEach(function (col, idx) {\n retVal[col] = row[idx];\n });\n return retVal;\n }, this);\n this.clear();\n this.data(_.map(function (row) {\n const retVal = [];\n for (const key in row) {\n let colIdx = this.row(0).indexOf(key);\n if (colIdx < 0) {\n colIdx = this.fields().length;\n this.fields().push(new Field().label(key));\n }\n retVal[colIdx] = row[key];\n }\n return retVal;\n }, this));\n return this;\n }\n\n json(_: string | object): this;\n json(): string;\n json(_?: string | object): string | this {\n if (!arguments.length) return JSON.stringify(this.jsonObj(), null, \" \");\n if (typeof (_) === \"string\") {\n _ = JSON.parse(_);\n }\n this.jsonObj(_);\n return this;\n }\n\n csv(_: string): this;\n csv(): string;\n csv(_?: string): string | this {\n if (!arguments.length) {\n const temp = document.createElement(\"div\");\n return d3CsvFormatRows(this.grid().map(row => {\n return row.map(cell => {\n return Utility.removeHTMLFromString(cell, temp);\n });\n }));\n }\n this.jsonObj(d3CsvParse(_));\n return this;\n }\n\n tsv(_: string): this;\n tsv(): string;\n tsv(_?: string): string | this {\n if (!arguments.length) return d3TsvFormatRows(this.grid());\n this.jsonObj(d3TsvParse(_));\n return this;\n }\n}\nGrid.prototype._class += \" common_Database.Grid\";\nexport interface Grid {\n fields(): Field[];\n fields(_: Field[], clone?: boolean): this;\n}\n\nGrid.prototype.publish(\"fields\", [], \"propertyArray\", \"Fields\");\nconst fieldsOrig = Grid.prototype.fields;\nGrid.prototype.fields = function (_?, clone?) {\n if (!arguments.length) return fieldsOrig.apply(this, arguments);\n return fieldsOrig.call(this, clone ? _.map(function (d) { return d.clone(); }) : _);\n};\n\n// Views ---\nexport class LegacyView {\n _grid;\n _parsedData;\n _parsedDataChecksum;\n _formattedData;\n _formattedDataChecksum;\n\n constructor(grid) {\n this._grid = grid;\n }\n\n checksum() {\n const value = this._grid.on.apply(this._grid, arguments);\n return value === this._grid ? this : value;\n }\n\n fields() {\n const value = this._grid.on.apply(this._grid, arguments);\n return value === this._grid ? this : value;\n }\n\n grid() {\n return this._grid;\n }\n columns(_?) {\n if (!arguments.length) return this._grid.legacyColumns();\n this._grid.legacyColumns(_);\n return this;\n }\n rawData(_?) {\n if (!arguments.length) return this._grid.legacyData();\n this._grid.legacyData(_);\n return this;\n }\n formattedData() {\n if (this._formattedDataChecksum !== this._grid.checksum()) {\n this._formattedDataChecksum = this._grid.checksum();\n this._formattedData = this._grid.formattedData();\n }\n return this._formattedData;\n }\n parsedData() {\n if (this._parsedDataChecksum !== this._grid.checksum()) {\n this._parsedDataChecksum = this._grid.checksum();\n this._parsedData = this._grid.parsedData();\n }\n return this._parsedData;\n }\n protected _whichData(opts?) {\n if (opts) {\n if (opts.parsed) {\n return this.formattedData();\n } else if (opts.formatted) {\n return this.formattedData();\n }\n }\n return this.rawData();\n }\n data(_) {\n return LegacyView.prototype.rawData.apply(this, arguments);\n }\n}\n\nexport class RollupView extends LegacyView {\n _columnIndicies;\n _rollup;\n _nestChecksum;\n _nest;\n\n constructor(grid, columns, rollup?) {\n super(grid);\n if (!(columns instanceof Array)) {\n columns = [columns];\n }\n this._columnIndicies = columns.filter(function (column) { return column; }).map(function (column) {\n switch (typeof column) {\n case \"string\":\n return this._grid.fieldByLabel(column).idx;\n }\n return column;\n }, this);\n\n rollup = rollup || function (d) { return d; };\n this._rollup = rollup;\n }\n\n nest() {\n if (this._nestChecksum !== this._grid.checksum()) {\n this._nestChecksum = this._grid.checksum();\n\n const nest = d3Nest();\n this._columnIndicies.forEach(function (idx) {\n nest.key(function (d) {\n return d[idx];\n });\n });\n this._nest = nest\n .rollup(this._rollup)\n ;\n }\n return this._nest;\n }\n entries(opts?) {\n return this.nest().entries(this._whichData(opts));\n }\n map(opts) {\n return this.nest().map(this._whichData(opts));\n }\n d3Map(opts) {\n return this.nest().map(this._whichData(opts), d3Map);\n }\n _walkData(entries, prevRow = []) {\n let retVal = [];\n entries.forEach(function (entry) {\n if (entry instanceof Array) {\n retVal.push(prevRow.concat([entry]));\n } else if (entry.values instanceof Array) {\n retVal = retVal.concat(this._walkData(entry.values, prevRow.concat([entry.key])));\n } else if (entry.value instanceof Array) {\n retVal = retVal.concat(this._walkData(entry.value, prevRow.concat([entry.key])));\n }\n }, this);\n return retVal;\n }\n data(opts) {\n return this._walkData(this.entries(opts));\n }\n}\n\n// --- --- ---\nfunction typeTest(cells, test) {\n if (!(cells instanceof Array)) {\n cells = [cells];\n }\n return cells.filter(function (d) { return d !== \"\"; }).every(test);\n}\nfunction isBoolean(cell) {\n return typeof cell === \"boolean\";\n}\nfunction isNumber(cell) {\n return typeof cell === \"number\" || !isNaN(cell);\n}\nfunction isString(cell) {\n return typeof cell === \"string\";\n}\nconst dateTimeFormats = [\n];\nconst dateFormats = [\n \"%Y-%m-%d\",\n \"%Y%m%d\"\n];\nconst timeFormats = [\n \"%H:%M:%S.%LZ\",\n \"%H:%M:%SZ\",\n \"%H:%M:%S\"\n];\ndateFormats.forEach(function (d) {\n timeFormats.forEach(function (t) {\n dateTimeFormats.push(d + \"T\" + t);\n });\n});\nfunction formatPicker(formats, cell) {\n for (let i = 0; i < formats.length; ++i) {\n const date = d3TimeParse(formats[i])(cell);\n if (date) {\n lastFoundFormat = formats[i];\n return formats[i];\n }\n }\n return null;\n}\nfunction isDateTime(cell) {\n return formatPicker(dateTimeFormats, cell);\n}\nfunction isDate(cell) {\n return formatPicker(dateFormats, cell);\n}\nfunction isTime(cell) {\n return formatPicker(timeFormats, cell);\n}\nfunction isUSState(cell) {\n return [\"AL\", \"AK\", \"AZ\", \"AR\", \"CA\", \"CO\", \"CT\", \"DE\", \"FL\", \"GA\", \"HI\", \"ID\", \"IL\", \"IN\", \"IA\", \"KS\", \"KY\", \"LA\", \"ME\", \"MD\", \"MA\", \"MI\", \"MN\", \"MS\", \"MO\", \"MT\", \"NE\", \"NV\", \"NH\", \"NJ\", \"NM\", \"NY\", \"NC\", \"ND\", \"OH\", \"OK\", \"OR\", \"PA\", \"RI\", \"SC\", \"SD\", \"TN\", \"TX\", \"UT\", \"VT\", \"VA\", \"WA\", \"WV\", \"WI\", \"WY\", \"AS\", \"DC\", \"FM\", \"GU\", \"MH\", \"MP\", \"PW\", \"PR\", \"VI\"].indexOf(String(cell).toUpperCase()) >= 0;\n}\n","import { select as d3Select } from \"d3-selection\";\nimport \"d3-transition\";\nimport { Field, Grid } from \"./Database.ts\";\nimport { } from \"./Platform.ts\";\nimport { PropertyExt } from \"./PropertyExt.ts\";\nimport { debounce, textRect, TextRect, textSize, TextSize } from \"./Utility.ts\";\n\nimport \"../src/Widget.css\";\n\nexport { Field };\n\nexport type IPrimative = boolean | number | string | object;\nexport type IFieldType = \"boolean\" | \"number\" | \"string\" | \"dataset\" | \"object\" | \"any\";\nexport interface InputField {\n id: string;\n type: IFieldType;\n multi?: boolean;\n default?: IPrimative | InputField[];\n children?: InputField[];\n}\n\nexport interface IPos {\n x: number;\n y: number;\n}\n\nexport interface ISize {\n width: number;\n height: number;\n}\n\nexport interface BBox {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface DataMetaT {\n min?: number;\n max?: number;\n mean?: number;\n stdDev?: number;\n sum?: number;\n}\n\nlet widgetID = 0;\nexport abstract class Widget extends PropertyExt {\n static _idSeed: string;\n\n protected _tag: string;\n protected _isRootNode: boolean = true;\n\n protected _db = new Grid();\n protected _pos;\n protected _prevPos;\n protected _size;\n protected _widgetScale;\n protected _visible;\n protected _display;\n protected _dataMeta: DataMetaT = {};\n\n protected _target: null | HTMLElement | SVGElement;\n protected _placeholderElement;\n protected _parentWidget;\n\n protected _element;\n\n protected _renderCount;\n\n protected _overlayElement;\n\n constructor() {\n super();\n this._id = Widget._idSeed + widgetID++;\n\n this._db = new Grid();\n this._pos = { x: 0, y: 0 };\n this._size = { width: 0, height: 0 };\n this._widgetScale = 1;\n this._visible = true;\n\n this._target = null;\n this._placeholderElement = null;\n this._parentWidget = null;\n\n this._element = d3Select(null);\n\n this._renderCount = 0;\n\n if ((window as any).__hpcc_debug) {\n if ((window as any).g_all === undefined) {\n (window as any).g_all = {};\n }\n (window as any).g_all[this._id] = this;\n }\n if ((window as any).__hpcc_theme) {\n this.applyTheme((window as any).__hpcc_theme);\n }\n }\n\n columnChecksum() {\n return this._db.fieldsChecksum();\n }\n\n dataChecksum() {\n return this._db.dataChecksum();\n }\n\n importJSON(_: string | object): this {\n this._db.json(_);\n return this;\n }\n\n importCSV(_: string): this {\n this._db.csv(_);\n return this;\n }\n\n importTSV(_: string): this {\n this._db.tsv(_);\n return this;\n }\n\n export(_: \"JSON\" | \"CSV\" | \"TSV\" = \"JSON\") {\n switch (_) {\n case \"CSV\":\n return this._db.csv();\n case \"TSV\":\n return this._db.tsv();\n case \"JSON\":\n default:\n return this._db.json();\n }\n }\n\n leakCheck(newNode) {\n const context = this;\n const watchArray = [newNode];\n const destructObserver = new MutationObserver(function (mutations) {\n let leaks = false;\n mutations.forEach(function (mutation) {\n for (let i = 0; i < mutation.removedNodes.length; ++i) {\n const node = mutation.removedNodes.item(i);\n if (watchArray.indexOf(node) >= 0 && context._target) {\n leaks = true;\n destructObserver.disconnect();\n }\n }\n });\n if (leaks) {\n console.error(\"leak: \" + context.id() + \" - \" + context.classID() + \"\\t\\twidget.target(null); was not called for this widget before it was removed from the page.\");\n }\n });\n let pNode = newNode.parentNode;\n while (pNode) {\n destructObserver.observe(pNode, { childList: true });\n watchArray.push(pNode);\n pNode = pNode.parentNode;\n }\n }\n\n renderCount(): number {\n return this._renderCount;\n }\n\n // Implementation ---\n columns(): string[];\n columns(_: string[], asDefault?: boolean): this;\n columns(_?: string[], asDefault?: boolean): string[] | this {\n if (!arguments.length) return this._db.legacyColumns();\n this._db.legacyColumns(_, asDefault);\n return this;\n }\n\n protected columnIdx(column: string): number {\n return this.columns().indexOf(column);\n }\n\n protected cellIdxFunc<T>(colIdx: number, defValue?: T): (row: any) => T {\n return colIdx < 0 ? () => defValue : row => row[colIdx];\n }\n\n protected cellFunc<T>(column: string, defValue?: T): (row: any) => T {\n return this.cellIdxFunc<T>(this.columnIdx(column), defValue);\n }\n\n parsedData() {\n return this._db.parsedData();\n }\n\n formattedData() {\n return this._db.formattedData();\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) return this._db.legacyData();\n this._db.legacyData(_);\n return this;\n }\n\n cloneData() {\n return this.data().map(function (row) { return row.slice(0); });\n }\n\n flattenData(columns: string[] = this.columns(), data: any = this.data()) {\n const retVal = [];\n data.forEach(function (row, rowIdx) {\n columns.filter(function (_col, idx) { return idx > 0; }).forEach(function (_col, idx) {\n const val = row[idx + 1];\n if (typeof val !== \"undefined\") {\n const newItem = {\n rowIdx,\n colIdx: idx + 1,\n label: row[0],\n value: val\n };\n retVal.push(newItem);\n }\n }, this);\n }, this);\n return retVal;\n }\n\n rowToObj(row: any[]): object {\n if (!row) return {};\n const retVal: any = {};\n this.fields().forEach(function (field, idx) {\n retVal[field.label_default() || field.label()] = row[idx];\n });\n if (row.length === this.columns().length + 1) {\n retVal.__lparam = row[this.columns().length];\n }\n return retVal;\n }\n\n pos(): IPos;\n pos(_: IPos): this;\n pos(_?: IPos): IPos | this {\n if (!arguments.length) return this._pos;\n this._pos = _;\n if (this._overlayElement) {\n this._overlayElement\n .attr(\"transform\", \"translate(\" + _.x + \",\" + _.y + \")scale(\" + this._widgetScale + \")\")\n ;\n }\n return this;\n }\n\n x(): number;\n x(_): this;\n x(_?): number | this {\n if (!arguments.length) return this._pos.x;\n this.pos({ x: _, y: this._pos.y });\n return this;\n }\n\n y(): number;\n y(_): this;\n y(_?): number | this {\n if (!arguments.length) return this._pos.y;\n this.pos({ x: this._pos.x, y: _ });\n return this;\n }\n\n size(): ISize;\n size(_): this;\n size(_?): ISize | this {\n if (!arguments.length) return this._size;\n this._size = _;\n if (this._overlayElement) {\n this._overlayElement\n .attr(\"width\", _.width)\n .attr(\"height\", _.height)\n ;\n }\n return this;\n }\n\n width(): number;\n width(_): this;\n width(_?): number | this {\n if (!arguments.length) return this._size.width;\n this.size({ width: _, height: this._size.height });\n return this;\n }\n\n height(): number;\n height(_): this;\n height(_?): number | this {\n if (!arguments.length) return this._size.height;\n this.size({ width: this._size.width, height: _ });\n return this;\n }\n\n resize(size?: ISize, delta: ISize = { width: 0, height: 0 }) {\n let width;\n let height;\n if (size && size.width && size.height) {\n width = size.width;\n height = size.height;\n } else {\n const style = window.getComputedStyle(this._target, null);\n width = parseFloat(style.getPropertyValue(\"width\")) - delta.width;\n height = parseFloat(style.getPropertyValue(\"height\")) - delta.height;\n }\n this.size({\n width,\n height\n });\n return this;\n }\n\n scale(): number;\n scale(_): this;\n scale(_?): number | this {\n if (!arguments.length) return this._widgetScale;\n this._widgetScale = _;\n if (this._overlayElement) {\n this._overlayElement\n .attr(\"transform\", \"translate(\" + _.x + \",\" + _.y + \")scale(\" + this._widgetScale + \")\")\n ;\n }\n return this;\n }\n\n visible(): boolean;\n visible(_): this;\n visible(_?): boolean | this {\n if (!arguments.length) return this._visible;\n this._visible = _;\n if (this._element) {\n this._element\n .style(\"visibility\", this._visible ? null : \"hidden\")\n .style(\"opacity\", this._visible ? null : 0)\n ;\n }\n return this;\n }\n\n display(): boolean;\n display(_): this;\n display(_?): boolean | this {\n if (!arguments.length) return this._display;\n this._display = _;\n if (this._element) {\n this._element.style(\"display\", this._display ? null : \"none\");\n }\n return this;\n }\n\n dataMeta(): DataMetaT;\n dataMeta(_): this;\n dataMeta(_?): DataMetaT | this {\n if (!arguments.length) return this._dataMeta;\n this._dataMeta = _;\n return this;\n }\n\n private _appData = new Object({});\n appData(key: string): any;\n appData(key: string, value: any): this;\n appData(key: string, value?: any): any | this {\n if (arguments.length < 2) return this._appData[key];\n this._appData[key] = value;\n return this;\n }\n\n calcSnap(snapSize) {\n function snap(x, gridSize) {\n function snapDelta(x2, gridSize2) {\n let dx = x2 % gridSize2;\n if (Math.abs(dx) > gridSize2 - Math.abs(dx)) {\n dx = (gridSize2 - Math.abs(dx)) * (dx < 0 ? 1 : -1);\n }\n return dx;\n }\n return x - snapDelta(x, gridSize);\n }\n const l = snap(this._pos.x - this._size.width / 2, snapSize);\n const t = snap(this._pos.y - this._size.height / 2, snapSize);\n const r = snap(this._pos.x + this._size.width / 2, snapSize);\n const b = snap(this._pos.y + this._size.height / 2, snapSize);\n const w = r - l;\n const h = b - t;\n return [{ x: l + w / 2, y: t + h / 2 }, { width: w, height: h }];\n }\n\n // DOM/SVG Node Helpers ---\n toWidget(domNode): Widget | null {\n if (!domNode) {\n return null;\n }\n const element = d3Select(domNode);\n if (element) {\n const widget = element.datum();\n if (widget && widget instanceof Widget) {\n return widget;\n }\n }\n return null;\n }\n\n parentOverlay() {\n return null;\n }\n\n locateParentWidget(domNode?): Widget | null {\n domNode = domNode || (this._target ? this._target.parentNode : null);\n if (domNode) {\n const widget = this.toWidget(domNode);\n if (widget) {\n return widget;\n } else if (domNode.parentNode) {\n return this.locateParentWidget(domNode.parentNode);\n }\n }\n return null;\n }\n\n locateSVGNode(domNode): SVGSVGElement | null {\n if (!domNode) {\n return null;\n }\n if (domNode.tagName === \"svg\") {\n return domNode;\n }\n return this.locateSVGNode(domNode.parentNode);\n }\n\n locateOverlayNode() {\n let widget = this.locateParentWidget(this._target);\n while (widget) {\n const retVal = widget.parentOverlay();\n if (retVal) {\n return retVal;\n }\n widget = this.locateParentWidget(widget._target.parentNode);\n }\n return null;\n }\n\n locateAncestor(classID): Widget | null {\n return this.locateClosestAncestor([classID]);\n }\n\n locateClosestAncestor(classIDArr): Widget | null {\n let widget = this.locateParentWidget(this._target);\n while (widget) {\n if (classIDArr.indexOf(widget.classID()) !== -1) {\n return widget;\n }\n widget = this.locateParentWidget(widget._target.parentNode);\n }\n return null;\n }\n\n getAbsolutePos(domNode, w, h) {\n const root = this.locateSVGNode(domNode);\n if (!root) {\n return null;\n }\n let pos = root.createSVGPoint();\n const ctm = domNode.getCTM();\n pos = pos.matrixTransform(ctm);\n const retVal: any = {\n x: pos.x,\n y: pos.y\n };\n if (w !== undefined && h !== undefined) {\n let size = root.createSVGPoint();\n size.x = w;\n size.y = h;\n size = size.matrixTransform(ctm);\n retVal.width = size.x - pos.x;\n retVal.height = size.y - pos.y;\n }\n return retVal;\n }\n\n hasOverlay() {\n return this._overlayElement;\n }\n\n syncOverlay() {\n if (this._size.width && this._size.height) {\n const newPos = this.getAbsolutePos(this._overlayElement.node(), this._size.width, this._size.height);\n if (newPos && (!this._prevPos || newPos.x !== this._prevPos.x || newPos.y !== this._prevPos.y || newPos.width !== this._prevPos.width || newPos.height !== this._prevPos.height)) {\n const xScale = newPos.width / this._size.width;\n const yScale = newPos.height / this._size.height;\n this._placeholderElement\n .style(\"left\", newPos.x - (newPos.width / xScale) / 2 + \"px\")\n .style(\"top\", newPos.y - (newPos.height / yScale) / 2 + \"px\")\n .style(\"width\", newPos.width / xScale + \"px\")\n .style(\"height\", newPos.height / yScale + \"px\")\n ;\n const transform = \"scale(\" + xScale + \",\" + yScale + \")\";\n this._placeholderElement\n .style(\"transform\", transform)\n .style(\"-moz-transform\", transform)\n .style(\"-ms-transform\", transform)\n .style(\"-webkit-transform\", transform)\n .style(\"-o-transform\", transform)\n ;\n }\n this._prevPos = newPos;\n }\n }\n\n getBBox(refresh = false, round = false): BBox {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n\n textSize(_text: string | string[], fontName: string = \"Verdana\", fontSize: number = 12, bold: boolean = false): Readonly<TextSize> {\n return textSize(_text, fontName, fontSize, bold);\n }\n\n textRect(_text: string, fontName: string = \"Verdana\", fontSize: number = 12, bold: boolean = false): Readonly<TextRect> {\n return textRect(_text, fontName, fontSize, bold);\n }\n\n element() {\n return this._element;\n }\n\n node() {\n return this._element.node();\n }\n\n target(): null | HTMLElement | SVGElement;\n target(_: null | string | HTMLElement | SVGElement): this;\n target(_?: null | string | HTMLElement | SVGElement): null | HTMLElement | SVGElement | this {\n if (!arguments.length) return this._target;\n if (this._target && _) {\n throw new Error(\"Target can only be assigned once.\");\n }\n if (_ === null) {\n this._target = null;\n if (this.renderCount()) {\n this.exit();\n }\n } else if (typeof _ === \"string\") {\n this._target = document.getElementById(_);\n } else if (_ instanceof HTMLElement || _ instanceof SVGElement) {\n this._target = _;\n }\n return this;\n }\n\n isDOMHidden(): boolean {\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent\n // Note: Will return false for visible===hidden (which is ok as it still takes up space on the page)\n return this._isRootNode && this._placeholderElement.node().offsetParent === null;\n }\n\n hasSize() {\n return !isNaN(this.width()) && !isNaN(this.height());\n }\n\n protected publishedWidgets(): Widget[] {\n let widgets = [];\n this.publishedProperties(true).forEach(function (meta) {\n if (!meta.ext || meta.ext.render !== false) {\n switch (meta.type) {\n case \"widget\":\n const widget = this[meta.id]();\n if (widget) {\n widgets.push(widget);\n }\n break;\n case \"widgetArray\":\n widgets = widgets.concat(this[meta.id]());\n break;\n }\n }\n }, this);\n return widgets;\n }\n\n // Render ---\n private _prevNow = 0;\n render(callback?: (w: Widget) => void) {\n if ((window as any).__hpcc_debug) {\n const now = Date.now();\n if (now - this._prevNow < 500) {\n console.error(\"Double Render: \" + (now - this._prevNow) + \" - \" + this.id() + \" - \" + this.classID());\n }\n this._prevNow = now;\n }\n\n callback = callback || function () { };\n if (!this._placeholderElement || !this.visible() || this.isDOMHidden() || !this.hasSize()) {\n callback(this);\n return this;\n }\n if (this._placeholderElement) {\n if (!this._tag)\n throw new Error(\"No DOM tag specified\");\n\n const elements = this._placeholderElement.selectAll(\"#\" + this._id).data([this], function (d) { return d._id; });\n elements.enter().append(this._tag)\n .classed(this._class, true)\n .attr(\"id\", this._id)\n // .attr(\"opacity\", 0.50) // Uncomment to debug position offsets ---\n .each(function (context2) {\n context2._element = d3Select(this);\n context2.enter(this, context2._element);\n if ((window as any).__hpcc_debug) {\n context2.leakCheck(this);\n }\n })\n .merge(elements)\n .each(function (context2) {\n const element = d3Select(this);\n const classed = context2.classed();\n for (const key in classed) {\n element.classed(key, classed[key]);\n }\n context2.preUpdate(this, context2._element);\n context2.update(this, context2._element);\n context2.postUpdate(this, context2._element);\n })\n ;\n elements.exit()\n .each(function (context2) {\n d3Select(this).datum(null);\n context2.exit(this, context2._element);\n })\n .remove()\n ;\n this._renderCount++;\n }\n\n // ASync Render Contained Widgets ---\n const widgets = this.publishedWidgets();\n\n const context = this;\n switch (widgets.length) {\n case 0:\n callback(this);\n break;\n case 1:\n widgets[0].render(function () {\n callback(context);\n });\n break;\n default:\n let renderCount = widgets.length;\n widgets.forEach(function (widget, _idx) {\n setTimeout(function () {\n widget.render(function () {\n if (--renderCount === 0) {\n callback(context);\n }\n });\n }, 0);\n });\n break;\n }\n return this;\n }\n\n renderPromise(): Promise<Widget> {\n return new Promise((resolve, reject) => {\n this.render((w: Widget) => {\n resolve(w);\n });\n });\n }\n\n private _lazyRender = debounce(function (debouncedCallback?: (w: Widget) => void) {\n this.render(debouncedCallback);\n }, 100);\n\n lazyRender(callback?: (w: Widget) => void): this {\n this._lazyRender(callback);\n return this;\n }\n\n animationFrameRender(): this {\n if (requestAnimationFrame) {\n requestAnimationFrame(() => {\n this.render();\n });\n } else {\n // Not a real replacement for requestAnimationFrame ---\n this.renderPromise();\n }\n return this;\n }\n\n enter(_domNode: HTMLElement, _element) { }\n preUpdate(_domNode: HTMLElement, _element) { }\n update(_domNode: HTMLElement, _element) { }\n postUpdate(_domNode: HTMLElement, _element) { }\n exit(_domNode?: HTMLElement, _element?) {\n this.publishedWidgets().forEach(w => w.target(null));\n }\n}\nWidget.prototype._class += \" common_Widget\";\n\nexport interface Widget {\n fields(): Field[];\n fields(_: Field[]): this;\n classed(classID: string): boolean;\n classed(classID: string, _: boolean): this;\n classed(): { [classID: string]: boolean };\n classed(_: { [classID: string]: boolean }): this;\n}\n\nWidget._idSeed = \"_w\";\n\nWidget.prototype.publishProxy(\"fields\", \"_db\", \"fields\");\nWidget.prototype.publish(\"classed\", {}, \"object\", \"HTML Classes\", null, { tags: [\"Private\"] });\nconst origClassed = Widget.prototype.classed;\nWidget.prototype.classed = function (this: Widget, str_obj?: string | { [classID: string]: boolean }, _?: boolean) {\n if (typeof str_obj === \"string\") {\n if (arguments.length === 1) return origClassed.call(this)[str_obj];\n const classed = origClassed.call(this);\n origClassed.call(this, { ...classed, [str_obj]: _ });\n return this;\n }\n return origClassed.apply(this, arguments);\n};\n","import { select as d3Select } from \"d3-selection\";\nimport { Widget } from \"./Widget.ts\";\n\nexport class HTMLWidget extends Widget {\n\n private observer;\n protected _drawStartPos: \"origin\" | \"center\";\n protected _boundingBox;\n\n constructor() {\n super();\n\n this._drawStartPos = \"origin\";\n this._tag = \"div\";\n this._boundingBox = null;\n }\n\n calcFrameWidth(element) {\n const retVal = parseFloat(element.style(\"padding-left\")) +\n parseFloat(element.style(\"padding-right\")) +\n parseFloat(element.style(\"margin-left\")) +\n parseFloat(element.style(\"margin-right\")) +\n parseFloat(element.style(\"border-left-width\")) +\n parseFloat(element.style(\"border-right-width\"))\n ;\n return retVal;\n }\n\n calcWidth(element) {\n return parseFloat(element.style(\"width\")) - this.calcFrameWidth(element);\n }\n\n calcFrameHeight(element) {\n const retVal = parseFloat(element.style(\"padding-top\")) +\n parseFloat(element.style(\"padding-bottom\")) +\n parseFloat(element.style(\"margin-top\")) +\n parseFloat(element.style(\"margin-bottom\")) +\n parseFloat(element.style(\"border-top-width\")) +\n parseFloat(element.style(\"border-bottom-width\"))\n ;\n return retVal;\n }\n\n calcHeight(element) {\n return parseFloat(element.style(\"height\")) + this.calcFrameHeight(element);\n }\n\n hasHScroll(element?) {\n element = element || this._element;\n return element.property(\"scrollWidth\") > element.property(\"clientWidth\");\n }\n\n hasVScroll(element?) {\n element = element || this._element;\n return element.property(\"scrollHeight\") > element.property(\"clientHeight\");\n }\n\n clientWidth() {\n return this._size.width - this.calcFrameWidth(this._element);\n }\n\n clientHeight() {\n return this._size.height - this.calcFrameHeight(this._element);\n }\n\n getBBox(refresh = false, round = false) {\n if (refresh || this._boundingBox === null) {\n const domNode = this._element.node() ? this._element.node().firstElementChild : null; // Needs to be first child, as element has its width/height forced onto it.\n if (domNode instanceof Element) {\n const rect = domNode.getBoundingClientRect();\n this._boundingBox = {\n x: rect.left,\n y: rect.top,\n width: rect.width,\n height: rect.height\n };\n }\n }\n if (this._boundingBox === null) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n return {\n x: (round ? Math.round(this._boundingBox.x) : this._boundingBox.x) * this._widgetScale,\n y: (round ? Math.round(this._boundingBox.y) : this._boundingBox.y) * this._widgetScale,\n width: (round ? Math.round(this._boundingBox.width) : this._boundingBox.width) * this._widgetScale,\n height: (round ? Math.round(this._boundingBox.height) : this._boundingBox.height) * this._widgetScale\n };\n }\n\n reposition(pos?) {\n // const retVal = super.reposition(pos);\n if (this._placeholderElement) {\n this._placeholderElement\n .style(\"left\", pos.x + \"px\")\n .style(\"top\", pos.y + \"px\")\n ;\n }\n return this;\n }\n\n resize(size?) {\n const retVal = super.resize(size);\n if (this._placeholderElement) {\n this._placeholderElement\n .style(\"width\", this._size.width + \"px\")\n .style(\"height\", this._size.height + \"px\")\n ;\n }\n return retVal;\n }\n\n // Properties ---\n target(): null | HTMLElement | SVGElement;\n target(_: null | string | HTMLElement | SVGElement): this;\n target(_?: null | string | HTMLElement | SVGElement): null | HTMLElement | SVGElement | this {\n const retVal = super.target.apply(this, arguments);\n if (arguments.length) {\n if (this._target instanceof SVGElement) {\n // Target is a SVG Node, so create an item in the Overlay and force it \"over\" the overlay element (cough) ---\n this._isRootNode = false;\n const overlay = this.locateOverlayNode();\n this._placeholderElement = overlay.append(\"div\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"left\", \"0px\")\n .style(\"overflow\", \"hidden\")\n ;\n this._overlayElement = d3Select(this._target);\n\n this._prevPos = null;\n this.observer = new MutationObserver(_mutation => {\n this.syncOverlay();\n });\n\n let domNode = this._overlayElement.node();\n while (domNode) {\n this.observer.observe(domNode, { attributes: true });\n domNode = domNode.parentNode;\n }\n } else if (this._target) { // HTMLElement\n this._placeholderElement = d3Select(this._target);\n if (!this._size.width && !this._size.height) {\n const width = parseFloat(this._placeholderElement.style(\"width\"));\n const height = parseFloat(this._placeholderElement.style(\"height\"));\n this.size({\n width,\n height\n });\n }\n this._placeholderElement = d3Select(this._target).append(\"div\");\n }\n }\n return retVal;\n }\n\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n if (this._drawStartPos === \"origin\") {\n this._element\n .style(\"position\", \"relative\")\n .style(\"left\", this._pos.x + \"px\")\n .style(\"top\", this._pos.y + \"px\")\n ;\n } else {\n const bbox = this.getBBox(true);\n this._element\n .style(\"position\", \"relative\")\n .style(\"float\", \"left\")\n .style(\"left\", this._pos.x + (this._size.width - bbox.width) / 2 + \"px\")\n .style(\"top\", this._pos.y + (this._size.height - bbox.height) / 2 + \"px\")\n ;\n }\n }\n\n exit(domNode?, element?) {\n if (this.observer) {\n this.observer.disconnect();\n }\n this._prevPos = null;\n if (this._placeholderElement) {\n this._placeholderElement.remove();\n }\n super.exit(domNode, element);\n }\n}\nHTMLWidget.prototype._class += \" common_HTMLWidget\";\n","import { HTMLWidget } from \"./HTMLWidget.ts\";\n\nexport class CanvasWidget extends HTMLWidget {\n\n _ctx: CanvasRenderingContext2D;\n constructor() {\n super();\n this._tag = \"canvas\";\n }\n\n resize(size) {\n const retVal = super.resize(size);\n try {\n this._element.attr(\"width\", this._size.width);\n this._element.attr(\"height\", this._size.height);\n this.resetContext();\n } catch (e) {\n console.error(e);\n }\n return retVal;\n }\n\n resetContext() {\n this._ctx = this._element.node().getContext(\"2d\");\n }\n\n click(d, c) {\n // console.log(d);\n }\n}\nCanvasWidget.prototype._class += \" common_CanvasWidget\";\n","const _version = \"1.14.2-dev\";\nexport function version() {\n return _version;\n}\n\nexport const ieVersion = (function () {\n const ua = navigator.userAgent;\n let tem;\n const M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n if (/trident/i.test(M[1])) {\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n return parseFloat(tem[1]);\n }\n if (/msie/i.test(M[1])) {\n return parseFloat(M[2]);\n }\n return null;\n})();\n\nexport const isIE = ieVersion !== null;\nexport const svgMarkerGlitch = isIE && ieVersion <= 12;\n\nlet _scrollBarWidth = null;\nexport function getScrollbarWidth() {\n if (_scrollBarWidth === null) {\n const outer = document.createElement(\"div\");\n outer.style.visibility = \"hidden\";\n outer.style.width = \"100px\";\n // @ts-ignore\n outer.style.msOverflowStyle = \"scrollbar\";\n\n document.body.appendChild(outer);\n\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = \"scroll\";\n\n const inner = document.createElement(\"div\");\n inner.style.width = \"100%\";\n outer.appendChild(inner);\n\n const widthWithScroll = inner.offsetWidth;\n\n outer.parentNode.removeChild(outer);\n\n _scrollBarWidth = widthNoScroll - widthWithScroll;\n }\n return _scrollBarWidth;\n}\n\n// Polyfills ---\n(window as any).MutationObserver = (window as any).MutationObserver || (window as any).WebKitMutationObserver || (window as any).MozMutationObserver || function (callback) {\n // Just enough for HTMLOverlay and C3 ---\n this.callback = callback;\n this.listeners = [];\n\n const MutationListener = function (callback2, domNode, type) {\n this.callback = callback2;\n this.domNode = domNode;\n this.type = type;\n };\n MutationListener.prototype = {\n handleEvent(evt) {\n const mutation = {\n type: this.type,\n target: this.domNode,\n addedNodes: [],\n removedNodes: [],\n previousSibling: evt.target.previousSibling,\n nextSibling: evt.target.nextSibling,\n attributeName: null,\n attributeNamespace: null,\n oldValue: null\n };\n this.callback([mutation]);\n }\n };\n\n this.observe = function (domNode, config) {\n let listener = null;\n if (config.attributes) {\n listener = new MutationListener(this.callback, domNode, \"attributes\");\n this.listeners.push(listener);\n domNode.addEventListener(\"DOMAttrModified\", listener, true);\n }\n\n if (config.characterData) {\n listener = new MutationListener(this.callback, domNode, \"characterData\");\n this.listeners.push(listener);\n domNode.addEventListener(\"DOMCharacterDataModified\", listener, true);\n }\n\n if (config.childList) {\n listener = new MutationListener(this.callback, domNode, \"childList\");\n this.listeners.push(listener);\n domNode.addEventListener(\"DOMNodeInserted\", listener, true);\n domNode.addEventListener(\"DOMNodeRemoved\", listener, true);\n }\n };\n\n this.disconnect = function () {\n this.listeners.forEach(function (item) {\n switch (item.type) {\n case \"attributes\":\n item.domNode.removeEventListener(\"DOMAttrModified\", item, true);\n break;\n case \"characterData\":\n item.domNode.removeEventListener(\"DOMCharacterDataModified\", item, true);\n break;\n case \"childList\":\n item.domNode.removeEventListener(\"DOMNodeRemoved\", item, true);\n item.domNode.removeEventListener(\"DOMNodeInserted\", item, true);\n break;\n }\n });\n this.listeners = [];\n };\n};\n\n(Math as any).sign = (Math as any).sign || function (x) {\n x = +x; // convert to a number\n if (x === 0 || isNaN(x)) {\n return x;\n }\n return x > 0 ? 1 : -1;\n};\n","import { easeCubicInOut as d3CubicInOut } from \"d3-ease\";\n\nexport class Transition {\n\n protected _widget;\n protected _duration;\n protected _delay;\n protected _ease;\n\n constructor(widget) {\n this._widget = widget;\n this._duration = 250;\n this._delay = 0;\n this._ease = d3CubicInOut;\n }\n\n duration(_?) {\n if (!arguments.length) return this._duration;\n this._duration = _;\n return this._widget;\n }\n\n delay(_?) {\n if (!arguments.length) return this._delay;\n this._delay = _;\n return this._widget;\n }\n\n ease(_?) {\n if (!arguments.length) return this._ease;\n this._ease = _;\n return this._widget;\n }\n\n apply(selection) {\n if (this._duration || this._delay) {\n return selection.transition()\n .duration(this._duration)\n .delay(this._delay)\n .ease(this._ease)\n ;\n }\n return selection;\n }\n}\n","import { rgb as d3Rgb } from \"d3-color\";\nimport { select as d3Select } from \"d3-selection\";\nimport { fontAwsesomeStyle } from \"./FAChar.ts\";\nimport { svgMarkerGlitch } from \"./Platform.ts\";\nimport { Transition } from \"./Transition.ts\";\nimport { debounce, downloadBlob, downloadString, timestamp } from \"./Utility.ts\";\nimport { ISize, Widget } from \"./Widget.ts\";\n\ntype Point = { x: number, y: number };\ntype Rect = { x: number, y: number, width: number, height: number };\n\nconst lerp = function (point: Point, that: Point, t: number): Point {\n // From https://github.com/thelonious/js-intersections\n return {\n x: point.x + (that.x - point.x) * t,\n y: point.y + (that.y - point.y) * t\n };\n};\n\ntype LineIntersection = { type: \"Intersection\" | \"No Intersection\" | \"Coincident\" | \"Parallel\", points: Point[] };\nconst intersectLineLine = function (a1: Point, a2: Point, b1: Point, b2: Point): LineIntersection {\n // From https://github.com/thelonious/js-intersections\n const result: LineIntersection = { type: \"Parallel\", points: [] };\n const uaT = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x);\n const ubT = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x);\n const uB = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n\n if (uB !== 0) {\n const ua = uaT / uB;\n const ub = ubT / uB;\n\n if (0 <= ua && ua <= 1 && 0 <= ub && ub <= 1) {\n result.type = \"Intersection\";\n result.points.push({\n x: a1.x + ua * (a2.x - a1.x),\n y: a1.y + ua * (a2.y - a1.y)\n });\n } else {\n result.type = \"No Intersection\";\n }\n } else {\n if (uaT === 0 || ubT === 0) {\n result.type = \"Coincident\";\n } else {\n result.type = \"Parallel\";\n }\n }\n\n return result;\n};\n\ntype CircleIntersection = { type: \"Outside\" | \"Tangent\" | \"Inside\" | \"Intersection\", points: Point[] };\nconst intersectCircleLine = function (c: Point, r: number, a1: Point, a2: Point): CircleIntersection {\n // From https://github.com/thelonious/js-intersections\n const result: CircleIntersection = { type: \"Intersection\", points: [] };\n const a = (a2.x - a1.x) * (a2.x - a1.x) +\n (a2.y - a1.y) * (a2.y - a1.y);\n const b = 2 * ((a2.x - a1.x) * (a1.x - c.x) +\n (a2.y - a1.y) * (a1.y - c.y));\n const cc = c.x * c.x + c.y * c.y + a1.x * a1.x + a1.y * a1.y -\n 2 * (c.x * a1.x + c.y * a1.y) - r * r;\n const deter = b * b - 4 * a * cc;\n\n if (deter < 0) {\n result.type = \"Outside\";\n } else if (deter === 0) {\n result.type = \"Tangent\";\n // NOTE: should calculate this point\n } else {\n const e = Math.sqrt(deter);\n const u1 = (-b + e) / (2 * a);\n const u2 = (-b - e) / (2 * a);\n\n if ((u1 < 0 || u1 > 1) && (u2 < 0 || u2 > 1)) {\n if ((u1 < 0 && u2 < 0) || (u1 > 1 && u2 > 1)) {\n result.type = \"Outside\";\n } else {\n result.type = \"Inside\";\n }\n } else {\n result.type = \"Intersection\";\n\n if (0 <= u1 && u1 <= 1)\n result.points.push(lerp(a1, a2, u1));\n\n if (0 <= u2 && u2 <= 1)\n result.points.push(lerp(a1, a2, u2));\n }\n }\n\n return result;\n};\n\nexport class SVGGlowFilter {\n protected filter;\n protected feOffset;\n protected feColorMatrix;\n protected feGaussianBlur;\n protected feBlend;\n\n constructor(target, id: string) {\n this.filter = target.append(\"filter\")\n .attr(\"id\", id)\n .attr(\"width\", \"130%\")\n .attr(\"height\", \"130%\");\n this.feOffset = this.filter.append(\"feOffset\")\n .attr(\"result\", \"offOut\")\n .attr(\"in\", \"SourceGraphic\")\n .attr(\"dx\", \"0\")\n .attr(\"dy\", \"0\");\n this.feColorMatrix = this.filter.append(\"feColorMatrix\")\n .attr(\"result\", \"matrixOut\")\n .attr(\"in\", \"offOut\")\n .attr(\"type\", \"matrix\")\n .attr(\"values\", this.rgb2ColorMatrix(\"red\"))\n ;\n this.feGaussianBlur = this.filter.append(\"feGaussianBlur\")\n .attr(\"result\", \"blurOut\")\n .attr(\"in\", \"matrixOut\")\n .attr(\"stdDeviation\", \"3\")\n ;\n this.feBlend = this.filter.append(\"feBlend\")\n .attr(\"in\", \"SourceGraphic\")\n .attr(\"in2\", \"blurOut\")\n .attr(\"mode\", \"normal\")\n ;\n }\n\n rgb2ColorMatrix(color: string): string {\n const rgb = d3Rgb(color);\n return [\n rgb.r / 255, 0, 0, 0, rgb.r ? 1 : 0,\n 0, rgb.g / 255, 0, 0, rgb.g ? 1 : 0,\n 0, 0, rgb.b / 255, 0, rgb.b ? 1 : 0,\n 0, 0, 0, 1, 0\n ].join(\" \");\n }\n\n update(color: string) {\n this.feColorMatrix.attr(\"values\", this.rgb2ColorMatrix(color));\n }\n}\n\nexport class SVGWidget extends Widget {\n static _class = \"common_SVGWidget\";\n\n protected _boundingBox;\n protected transition;\n protected _drawStartPos: \"center\" | \"origin\";\n protected _svgSelectionFilter;\n protected _parentRelativeDiv;\n protected _parentOverlay;\n\n constructor() {\n super();\n\n this._tag = \"g\";\n\n this._boundingBox = null;\n\n this.transition = new Transition(this);\n\n this._drawStartPos = \"center\";\n }\n\n // Properties ---\n move(_?, transitionDuration?) {\n const retVal = this.pos(_);\n if (arguments.length) {\n (transitionDuration ? this._element.transition().duration(transitionDuration) : this._element)\n .attr(\"transform\", `translate(${_.x} ${_.y})scale(${this._widgetScale})`)\n ;\n }\n return retVal;\n }\n\n _enableOverflow = false;\n enableOverflow(): boolean;\n enableOverflow(_: boolean): this;\n enableOverflow(_?: boolean): boolean | this {\n if (!arguments.length) return this._enableOverflow;\n this._enableOverflow = _;\n return this;\n }\n\n _enableOverflowScroll = true;\n enableOverflowScroll(): boolean;\n enableOverflowScroll(_: boolean): this;\n enableOverflowScroll(_?: boolean): boolean | this {\n if (!arguments.length) return this._enableOverflowScroll;\n this._enableOverflowScroll = _;\n return this;\n }\n\n size(): ISize;\n size(_): this;\n size(_?): ISize | this {\n const retVal = super.size.apply(this, arguments);\n if (arguments.length) {\n this._boundingBox = null;\n }\n return retVal;\n }\n\n resize(_size?: { width: number, height: number }) {\n const retVal = super.resize.apply(this, arguments);\n if (this._parentRelativeDiv) {\n this._parentRelativeDiv\n .style(\"width\", this._size.width + \"px\")\n .style(\"height\", this._size.height + \"px\")\n ;\n switch (this._drawStartPos) {\n case \"origin\":\n this.pos({\n x: 0,\n y: 0\n });\n break;\n case \"center\":\n /* falls through */\n default:\n this.pos({\n x: this._size.width / 2,\n y: this._size.height / 2\n });\n break;\n }\n }\n if (!isNaN(this._size.width)) this._placeholderElement.attr(\"width\", this._size.width);\n if (!isNaN(this._size.height)) this._placeholderElement.attr(\"height\", this._size.height);\n return retVal;\n }\n // Glow Highlighting ---\n svgGlowID(): string {\n return `sel${this.id()}_glow`;\n }\n\n target(): null | HTMLElement | SVGElement;\n target(_: null | string | HTMLElement | SVGElement): this;\n target(_?: null | string | HTMLElement | SVGElement): null | HTMLElement | SVGElement | this {\n const retVal = super.target.apply(this, arguments);\n if (arguments.length) {\n if (this._target instanceof SVGElement) {\n this._isRootNode = false;\n this._placeholderElement = d3Select(this._target);\n this._parentWidget = this._placeholderElement.datum();\n if (!this._parentWidget || this._parentWidget._id === this._id) {\n this._parentWidget = this.locateParentWidget(this._target.parentNode);\n }\n this._parentOverlay = this.locateOverlayNode();\n const svg = this.locateSVGNode(this._target);\n const svgDefs = d3Select(svg).select<SVGDefsElement>(\"defs\");\n this._svgSelectionFilter = new SVGGlowFilter(svgDefs, this.svgGlowID());\n } else if (this._target) {\n // Target is a DOM Node, so create a SVG Element ---\n this._parentRelativeDiv = d3Select(this._target).append(\"div\")\n .style(\"position\", \"relative\")\n ;\n this._placeholderElement = this._parentRelativeDiv.append(\"svg\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"left\", \"0px\")\n ;\n const svgDefs = this._placeholderElement.append(\"defs\");\n this._svgSelectionFilter = new SVGGlowFilter(svgDefs, this.svgGlowID());\n this._parentOverlay = this._parentRelativeDiv.append(\"div\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"left\", \"0px\")\n ;\n if (this._size.width && this._size.height) {\n this.resize(this._size);\n } else {\n this.resize({ width: 0, height: 0 });\n }\n }\n }\n return retVal;\n }\n\n parentOverlay() {\n return this._parentOverlay;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n if (this._svgSelectionFilter) {\n this._svgSelectionFilter.update(this.selectionGlowColor());\n }\n }\n\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n let transX;\n let transY;\n if (this._drawStartPos === \"origin\" && this._target instanceof SVGElement) {\n transX = (this._pos.x - this._size.width / 2);\n transY = (this._pos.y - this._size.height / 2);\n this._element.attr(\"transform\", \"translate(\" + transX + \",\" + transY + \")scale(\" + this._widgetScale + \")\");\n } else {\n transX = this._pos.x;\n transY = this._pos.y;\n if (this._enableOverflow) {\n // Individual Widgets will need to size and position themselves corrrectly (and have calculated a BBox) ---\n if ((transX < 0 || transY < 0) && this._boundingBox) {\n transX = transX < 0 ? 0 : transX;\n transY = transY < 0 ? 0 : transY;\n if (this._enableOverflowScroll) {\n this._parentRelativeDiv.style(\"overflow\", \"scroll\");\n }\n this._placeholderElement.attr(\"width\", this._boundingBox.width);\n this._placeholderElement.attr(\"height\", this._boundingBox.height);\n } else {\n this._parentRelativeDiv.style(\"overflow\", null);\n }\n }\n this._element.attr(\"transform\", \"translate(\" + transX + \",\" + transY + \")scale(\" + this._widgetScale + \")\");\n }\n }\n\n exit(domNode?, element?) {\n if (this._parentRelativeDiv) {\n this._parentOverlay.remove();\n this._placeholderElement.remove();\n this._parentRelativeDiv.remove();\n }\n super.exit(domNode, element);\n }\n\n getOffsetPos(): Point {\n let retVal = { x: 0, y: 0 };\n if (this._parentWidget) {\n retVal = this._parentWidget.getOffsetPos();\n retVal.x += this._pos.x;\n retVal.y += this._pos.y;\n return retVal;\n }\n return retVal;\n }\n\n getBBox(refresh = false, round = false): Rect {\n if (refresh || this._boundingBox === null) {\n const svgNode: SVGElement = this._element.node();\n if (svgNode instanceof SVGElement) {\n this._boundingBox = (svgNode as any).getBBox();\n }\n }\n if (this._boundingBox === null) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n return {\n x: (round ? Math.round(this._boundingBox.x) : this._boundingBox.x) * this._widgetScale,\n y: (round ? Math.round(this._boundingBox.y) : this._boundingBox.y) * this._widgetScale,\n width: (round ? Math.round(this._boundingBox.width) : this._boundingBox.width) * this._widgetScale,\n height: (round ? Math.round(this._boundingBox.height) : this._boundingBox.height) * this._widgetScale\n };\n }\n\n // Intersections ---\n contains(point: Point): boolean {\n return this.containsRect(point);\n }\n\n containsRect(point: Point): boolean {\n const size = this.getBBox();\n return point.x >= size.x && point.x <= size.x + size.width && point.y >= size.y && point.y <= size.y + size.height;\n }\n\n containsCircle(radius: number, point: Point) {\n const center = this.getOffsetPos();\n return this.distance(center, point) <= radius;\n }\n\n intersection(pointA: Point, pointB: Point): Point | null {\n return this.intersectRect(pointA, pointB);\n }\n\n intersectRect(pointA: Point, pointB: Point): Point | null {\n const center = this.getOffsetPos();\n const size = this.getBBox();\n if (pointA.x === pointB.x && pointA.y === pointB.y) {\n return pointA;\n }\n const TL = { x: center.x - size.width / 2, y: center.y - size.height / 2 };\n const TR = { x: center.x + size.width / 2, y: center.y - size.height / 2 };\n const BR = { x: center.x + size.width / 2, y: center.y + size.height / 2 };\n const BL = { x: center.x - size.width / 2, y: center.y + size.height / 2 };\n let intersection = intersectLineLine(TL, TR, pointA, pointB);\n if (intersection.points.length) {\n return { x: intersection.points[0].x, y: intersection.points[0].y };\n }\n intersection = intersectLineLine(TR, BR, pointA, pointB);\n if (intersection.points.length) {\n return { x: intersection.points[0].x, y: intersection.points[0].y };\n }\n intersection = intersectLineLine(BR, BL, pointA, pointB);\n if (intersection.points.length) {\n return { x: intersection.points[0].x, y: intersection.points[0].y };\n }\n intersection = intersectLineLine(BL, TL, pointA, pointB);\n if (intersection.points.length) {\n return { x: intersection.points[0].x, y: intersection.points[0].y };\n }\n return null;\n }\n\n intersectRectRect(rect1: Rect, rect2: Rect): Rect {\n const x = Math.max(rect1.x, rect2.x);\n const y = Math.max(rect1.y, rect2.y);\n const xLimit = (rect1.x < rect2.x) ? Math.min(rect1.x + rect1.width, rect2.x + rect2.width) : Math.min(rect2.x + rect2.width, rect1.x + rect1.width);\n const yLimit = (rect1.y < rect2.y) ? Math.min(rect1.y + rect1.height, rect2.y + rect2.height) : Math.min(rect2.y + rect2.height, rect1.y + rect1.height);\n return {\n x,\n y,\n width: xLimit - x,\n height: yLimit - y\n };\n }\n\n intersectCircle(radius: number, pointA: Point, pointB: Point): Point | null {\n const center = this.getOffsetPos();\n const intersection = intersectCircleLine(center, radius, pointA, pointB);\n if (intersection.points.length) {\n return { x: intersection.points[0].x, y: intersection.points[0].y };\n }\n return null;\n }\n\n distance(pointA: Point, pointB: Point): number {\n return Math.sqrt((pointA.x - pointB.x) * (pointA.x - pointB.x) + (pointA.y - pointB.y) * (pointA.y - pointB.y));\n }\n\n // Download ---\n serializeSVG(extraStyles: string = fontAwsesomeStyle): string {\n const origSvg = this.locateSVGNode(this._element.node());\n const cloneSVG = origSvg.cloneNode(true) as SVGSVGElement;\n const origNodes = d3Select(origSvg).selectAll(\"*\").nodes();\n d3Select(cloneSVG).selectAll(\"*\").each(function (this: SVGElement, d, i) {\n const compStyles = window.getComputedStyle(origNodes[i] as SVGElement);\n for (let i = 0; i < compStyles.length; ++i) {\n const styleName = compStyles.item(i);\n const styleValue = compStyles.getPropertyValue(styleName);\n const stylePriority = compStyles.getPropertyPriority(styleName);\n this.style.setProperty(styleName, styleValue, stylePriority);\n }\n });\n\n if (extraStyles) {\n const defs = cloneSVG.getElementsByTagName(\"defs\");\n if (defs.length) {\n const extraStyle = document.createElement(\"style\");\n extraStyle.setAttribute(\"type\", \"text/css\");\n extraStyle.innerText = extraStyles;\n defs[0].appendChild(extraStyle);\n }\n }\n\n const serializer = new XMLSerializer();\n return serializer.serializeToString(cloneSVG);\n }\n\n toBlob(extraStyles: string = fontAwsesomeStyle): Blob {\n return new Blob([this.serializeSVG(extraStyles)], { type: \"image/svg+xml\" });\n }\n\n rasterize(extraStyles: string = fontAwsesomeStyle, ...extraWidgets: SVGWidget[]): Promise<Blob> {\n const widgets = [this, ...extraWidgets];\n const sizes = widgets.map(widget => widget.locateSVGNode(widget.element().node()).getBoundingClientRect());\n const width = sizes.reduce((prev, curr) => prev + curr.width, 0);\n const height = Math.max(...sizes.map(s => s.height));\n\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n canvas.style.width = width + \"px\";\n const ctx = canvas.getContext(\"2d\");\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, width, height);\n ctx.fillStyle = \"transparent\";\n return new Promise((resolve, reject) => {\n let xPos = 0;\n Promise.all(widgets.map((widget, i) => {\n const x = xPos;\n const y = (height - sizes[i].height) / 2;\n xPos += sizes[i].width;\n return new Promise<void>((resolve, reject) => {\n const image = new Image();\n image.onerror = reject;\n image.onload = () => {\n ctx.drawImage(image, 0, 0, sizes[i].width, sizes[i].height, x, y, sizes[i].width, sizes[i].height);\n resolve();\n };\n image.src = URL.createObjectURL(widget.toBlob(extraStyles));\n });\n })).then(() => {\n ctx.canvas.toBlob(resolve); // Not supported by Edge browser\n });\n });\n }\n\n downloadSVG(extraStyles: string = fontAwsesomeStyle) {\n downloadString(\"SVG\", this.serializeSVG(extraStyles));\n }\n\n downloadPNG(filename: string = `image_${timestamp()}`, extraStyles: string = fontAwsesomeStyle, ...extraWidgets: SVGWidget[]) {\n this.rasterize(extraStyles, ...extraWidgets).then(blob => downloadBlob(blob, `${filename}.png`));\n }\n\n // IE Fixers ---\n _pushMarkers(element?) {\n if (svgMarkerGlitch) {\n element = element || this._element;\n element.selectAll(\"path[marker-start],path[marker-end]\")\n .attr(\"fixme-start\", function () { return this.getAttribute(\"marker-start\"); })\n .attr(\"fixme-end\", function () { return this.getAttribute(\"marker-end\"); })\n .attr(\"marker-start\", null)\n .attr(\"marker-end\", null)\n ;\n }\n }\n\n _popMarkers(element?) {\n if (svgMarkerGlitch) {\n element = element || this._element;\n element.selectAll(\"path[fixme-start],path[fixme-end]\")\n .attr(\"marker-start\", function () {\n return this.getAttribute(\"fixme-start\");\n })\n .attr(\"marker-end\", function () { return this.getAttribute(\"fixme-end\"); })\n .attr(\"fixme-start\", null)\n .attr(\"fixme-end\", null)\n ;\n }\n }\n\n _popMarkersDebounced = debounce(function (element) {\n if (svgMarkerGlitch) {\n this._popMarkers(element);\n }\n }, 250);\n\n _fixIEMarkers(element?) {\n if (svgMarkerGlitch) {\n this._pushMarkers(element);\n this._popMarkersDebounced(element);\n }\n }\n}\nSVGWidget.prototype._class += \" common_SVGWidget\";\n\nexport interface SVGWidget {\n selectionGlowColor(): string;\n selectionGlowColor(_: string): this;\n}\n\nSVGWidget.prototype.publish(\"selectionGlowColor\", \"red\", \"html-color\", \"Selection Glow Color\");\n","import { SVGWidget } from \"./SVGWidget.ts\";\n\nimport \"../src/Text.css\";\n\nexport class Text extends SVGWidget {\n\n private _textElement;\n\n constructor() {\n super();\n }\n\n getBBox(refresh = false, round = false) {\n const textParts = this.text().split(\"\\n\");\n const lineHeight = this.fontSize() || 12;\n const height = lineHeight * textParts.length;\n const widths: number[] = textParts.map(line => {\n return this.textSize(line, this.fontFamily() || \"Verdana\", lineHeight).width;\n });\n const width = Math.max(...widths);\n const retVal = {\n x: - width / 2,\n y: - height / 2 - lineHeight / (this.fontFamily() === \"FontAwesome\" ? 4 : 6), // baseLine offset\n width,\n height\n };\n switch (this.anchor()) {\n case \"start\":\n retVal.x = 0;\n break;\n case \"end\":\n retVal.x = -width;\n break;\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n delete this._prevHash;\n this._textElement = element.append(\"text\")\n .on(\"click\", () => {\n this.click();\n })\n .on(\"dblclick\", () => {\n this.dblclick();\n })\n ;\n }\n\n _prevHash;\n update(domNode, element) {\n super.update(domNode, element);\n const hash = this.hashSum([], { width: this.width() });\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n\n const bbox = this.getBBox();\n\n this._textElement\n .style(\"font-size\", this.fontSize())\n .style(\"text-anchor\", this.anchor())\n .attr(\"transform\", d => `rotate(${this.rotation()}) translate(0,${bbox.y})`)\n ;\n\n const width = this.width();\n const context = this;\n const textParts = this.text().split(\"\\n\");\n const textLine = this._textElement.selectAll(\"tspan\").data(textParts);\n textLine.enter().append(\"tspan\")\n .attr(\"class\", function (_d, i) { return \"tspan_\" + i; })\n .attr(\"dy\", \"1em\")\n .attr(\"x\", \"0\")\n .merge(textLine)\n .style(\"font-family\", this.fontFamily())\n .style(\"fill\", this.colorFill())\n .style(\"stroke\", this.colorStroke())\n .text((d: string) => {\n if (!width) return d;\n let retVal = d;\n const lineHeight = context.fontSize() || 12;\n let clipPos = retVal.length - 1;\n while (clipPos > -3 && this.textSize(retVal, this.fontFamily() || \"Verdana\", lineHeight).width > width) {\n retVal = retVal.substr(0, --clipPos) + \"...\".substr(0, clipPos + 3);\n }\n return retVal;\n })\n ;\n textLine.exit()\n .remove()\n ;\n\n }\n }\n\n click() {\n }\n\n dblclick() {\n }\n}\nText.prototype._class += \" common_Text\";\n\nexport interface Text {\n text(): string;\n text(_: string): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontSize(): number;\n fontSize(_: number): this;\n anchor(): \"start\" | \"middle\" | \"end\";\n anchor(_: \"start\" | \"middle\" | \"end\"): this;\n colorFill(): string;\n colorFill(_: string): this;\n colorFill_default(): string;\n colorFill_default(_: string): this;\n colorStroke(): string;\n colorStroke(_: string): this;\n colorStroke_default(): string;\n colorStroke_default(_: string): this;\n rotation(): number;\n rotation(_: number): Text;\n}\n\nText.prototype.publish(\"text\", \"\", \"string\", \"Display Text\", null, { tags: [\"Basic\"] });\nText.prototype.publish(\"fontFamily\", null, \"string\", \"Font Family\", null, { tags: [\"Intermediate\"], optional: true });\nText.prototype.publish(\"fontSize\", null, \"number\", \"Font Size (pixels)\", null, { tags: [\"Intermediate\"] });\nText.prototype.publish(\"anchor\", \"middle\", \"set\", \"Anchor Position\", [\"start\", \"middle\", \"end\"], { tags: [\"Intermediate\"] });\nText.prototype.publish(\"colorFill\", null, \"html-color\", \"Fill Color\", null, { tags: [\"Basic\"] });\nText.prototype.publish(\"colorStroke\", null, \"html-color\", \"Fill Color\", null, { tags: [\"Basic\"] });\nText.prototype.publish(\"rotation\", 0, \"number\", \"Degrees of rotation\", null, { tags: [\"Basic\"] });\n","import { SVGWidget } from \"./SVGWidget.ts\";\nimport { Text } from \"./Text.ts\";\nimport * as Utility from \"./Utility.ts\";\n\nimport \"../src/FAChar.css\";\n\nexport class FAChar extends SVGWidget {\n\n protected _text;\n\n constructor() {\n super();\n\n this._text = new Text()\n .fontFamily(\"FontAwesome\")\n ;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._text\n .target(domNode)\n ;\n element\n .on(\"click\", () => {\n this.click();\n })\n .on(\"dblclick\", () => {\n this.dblclick();\n })\n ;\n }\n\n calcChar(): string {\n return Utility.faChar(this.char());\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._text\n .text(this.calcChar())\n .fontFamily(this.text_fontFamily())\n .scale((this.fontSize() || 14) / 14) // Scale rather than fontSize to prevent Chrome glitch ---\n .render()\n ;\n }\n\n exit(domNode, element) {\n this._text\n .target(null)\n ;\n\n super.exit(domNode, element);\n }\n\n click() {\n // console.log(\"Click:\", this);\n }\n\n dblclick() {\n // console.log(\"Double click:\", this);\n }\n\n}\nFAChar.prototype._class += \" common_FAChar\";\n\nexport interface FAChar {\n char(): string;\n char(_: string): this;\n fontSize(): number;\n fontSize(_: number): this;\n text_colorFill(): string;\n text_colorFill(_: string): this;\n text_fontFamily(): string;\n text_fontFamily(_: string): this;\n}\n\nFAChar.prototype.publish(\"char\", \"\", \"set\", \"Font Awesome Item\", Utility.faKeys(), { tags: [\"Private\"] });\nFAChar.prototype.publish(\"fontSize\", null, \"number\", \"Font Size\", null, { tags: [\"Private\"] });\nFAChar.prototype.publishProxy(\"text_colorFill\", \"_text\", \"colorFill\");\nFAChar.prototype.publishProxy(\"text_fontFamily\", \"_text\", \"fontFamily\", \"FontAwesome\");\n\n// openssl base64 -A -in fontawesome-webfont.ttf -out tmp.txt\nconst fontAwesomeOpenType = \"AAEAAAANAIAAAwBQRkZUTWu+R7kAAoaQAAAAHEdERUYC8AAEAAKGcAAAACBPUy8yiDJ6QAAAAVgAAABgY21hcAq/On8AAAyoAAAC8mdhc3D//wADAAKGaAAAAAhnbHlmj/euTQAAGqwAAky8aGVhZBCJ5S0AAADcAAAANmhoZWEPAwq1AAABFAAAACRobXR4RXkYhQAAAbgAAArwbG9jYQL1olwAAA+cAAALEG1heHADLAIcAAABOAAAACBuYW1l45eLrAACZ2gAAASGcG9zdK+Pm6EAAmvwAAAadQABAAAABAHLkM94WV8PPPUACwcAAAAAANQzzTIAAAAA1DPNMv///wAJAQYAAAAACAACAAEAAAAAAAEAAAYA/wAAAAkA/////wkBAAEAAAAAAAAAAAAAAAAAAAK1AAEAAALDAhkAJwAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAwZpAZAABQAABIwEMwAAAIYEjAQzAAACcwAAAYoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHlycwBAACD1AAYA/wAAAAYAAQAAAAABAAAAAAAAAAAAAAAgAAEDgABwAAAAAAJVAAABwAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAXQYAAAAGgAAABwAAAAcAAAAGgAAABoAAAAUAAAAHgAAABoAAAAcAAAAHAAAABwAAeQWAAG4GgAAABoAAAAYAAAAHAAAABgAAAAWAAAAGgAAaBgAAAAYAAAAHgAAyBoAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAEgAAABwAAQAaAAAADAAAABIAAAAaAAAAFgAAABwAAAAYAAAAHgAAABoAACgUAAAAGgAAAB4AAAAaAAAAFgAAABAAAAAcAAAAGAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHgAAABgAAAAQAAAAGAAAABAAAAAcAAAAGgAAABoAAAAcAAAAEAAAABwAAAAaAAHoFgAAABgAAAAYAAAAGgAAABwAAAAQAAAAGAgABBQAAmgUAAFoGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAQAYAAAAGgAA1BoAANQcAAAAGAAAABgAADQWAAAAFgAAABoAAegYAAAAGAAAABwAAAAWAAAAHAAAABwAAAAcAABAFgAAABoAAAAcAAAAHAAAABgAAAAcAAFoHAABaB4AAAAaAAAAGgAAAB4AAAAMAAEAHAAAACAAAAAYAAAAGAAAABwAAAAcAAAAHgAAABwAAAAYAAAAGAAAAA4AAAAcAAAAGgAAABgAAAASAAAAHAAAABgAAAAaAAAAGAAAABoAAAAYAAAAFgAAABYAAAAUAAAAGAAAABoAALAQAAF8GAAAABoAAAAeAAAAFgAAABgAAAAcAAAAHAABABgAAAgcAAAAHAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAaAABUHAAAABYAABQcAAAAGAAAAB4AAAAaAABAHgAAABoAAcwcAAAEHAAAABYAABAYAAAAGAAAABgAAAAcAAAAHAAAPBwAAAAYAAAAGgAAABoAAGwcAAEAGAAAABgAAAAYAAAAJAAAAB4AAAAQAAAAEAAAAAoAAQAKAAAAGgAAABAAAAAQAAAAEAAAABwAAAAYAAAAGAAAABwAAKAcAAAAHAAAABwAAAAOAAAEHAAAABoAAAAcAAAAEAAAABwAAAAeAAAAHgAAABYAAAAWAAAAHAAAABwAAQAeAAAAFgAAABgAAAAWAAAAFgAAAB4AAQAcAAAAHgAAABoAAQAYAAAAGAAAABAAALQQAAA0EgABNBIAATQKAAC0CgAANBIAATQSAAE0HgAAAB4AAAASAAAADAAAABgAAAAaAAAAGgAAABwAAQAYAAAAHAAAABoAAAAaAAAAHgAAABwAAAAcAAAAGAAAABgAAAAYAAAAHgAAAB4AAAAcAAEAHAABABoAADQeAAC0HAAAABoAAAgWAAAIGgAAABAAAAAaAAAAEAABgAoAAAAKAAGIGAAAFBgAABQeAAAEGgAAABIAAAAWAAA0FAAAABoAAAAWAAAMGgAAkBwAAAAYAAAAGAAAABgAAAAYAAAAFgAAABwAADAcAAAAEgAAABgAAAAWAAAABgAAABgAAAAYAAAAHAAA2BgAAAAWAAAAEAAADBAAAAwYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABAAAAAQAAAAEAAA0A4IAAAQDAAQFAAAABwAAAAUAADgGAAAABgAAAAaAACIGgAAiBwAAIgcAACIGAAAiBgAAIgaAAAAGgAAABgAAAAYAABsFgAAFBgAAAAcAAAAHAABABgAACwYAAAAGAAAABgAAAAWAAAAGAAAABAAARAYAAAADAAADAwAAAwcAAEAHAAAABYAAAAaAAAAFgAAABgAACwYAAAAGAAAABQAALAYAAAAFAAAABAAAAAYAAAAHAAAsBgAAAAcAAEAGgAAgB4D//wcAAAAGAAAABYAAAAUAABUGAAAABgAAAAYAAAAGAAAABoAAAAYAAAAEgAAABYAAAAiAAAAGgAAABgAAAAcAAAAHAAAACAAAAAkAAAAGAABtBgAAAAcAAAAGAAAABgAAAAeAAAAGAAAACAAAAAYAAAAH9gApBgAAAAYAAAAGAAAABwAAAAYAAAAFAABABoAAAAMAAEAHAAAACQAAAAgAAAAGAAAABwAAAAYAAAAHAAAQCAAAAAgAAAAGAAAgBgAAAAQAAAAJAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAACcHAAAACAAAAAcAAAAHAAAgBwAAEwcAAAAGAAAABwAARAYAAAAFAAA5BwAAEggAAAAHAAAABwAAAAYAAAAGAAAABwAAPgUAABgGAAAABgAAAAYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAABkHAABkBgAAWQgAAAAIAAAqBwAAAAYAAAkHAAAnCQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACAAADggAAA4FgAAABgAAAAYAAAAHAAAABwAAAAcAAAAIAAAABwAAAAgAAAAHAAAABgAAAAgAAAAIAAAACQAAAAYAAAAIAAAABQAACwgAAAAGAAAABgAAAAYAAAAIAAAABgAAAAYAAAAIAAAACAAAAAYAAAAIAAAACAAAAAaAAAAGgAAACAAAAAgAABMGAAAACQAAAAYAAAAHAAAABQAAAgYAAAAFAAAABgAAAgcAAAAHAAACB4AAAQgAAAYGAAAABQAAAggAAAQFAAAABQAAAAcAAAAHAAAABgAAAAUAAAAGAAAABwAAAAgAAAAIAAAACAAAAAYAAAAGAAAABgAAAAcAAAAGAAAACPgAVAkAAAAHAAAACQAAAAkAAAAJAAAACQAAAAkAAAAFAAAABAAAAAgAAAAJAAAABgAAAAYAAAAJAAAACQAAAAcAAAAJAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAAcAAAAIAAAA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AAD8uAAA/QwAAP1gAAD9tAAA/ggAAP64AAD/CAABABQAAQW0AAEG9AABB/gAAQjQAAEJZAABChAAAQqYAAELGAABDAQAAQykAAENLAABDgAAAQ+IAAERLAABEaAAARLMAAETOAABE+QAARSQAAEVKAABFaQAARZYAAEW/AABF8AAARiEAAEZeAABGnwAARtUAAEc1AABHUAAAR3UAAEekAABHwQAAR98AAEgpAABIcAAASJ4AAEjCAABI2wAASQEAAEkzAABJ2gAASjoAAEqTAABLFQAAS5MAAExdAABMfQAATLgAAEzMAABM7AAATSoAAE1dAABNlQAATckAAE4DAABOUgAAToQAAE68AABO5AAATyEAAE82AABP1gAAUAcAAFBwAABQsgAAUPIAAFEnAABRUgAAUZIAAFHcAABSEgAAUl4AAFKIAABSuQAAUvUAAFMoAABTRgAAU5AAAFQQAABUaAAAVLgAAFTRAABVCAAAVVMAAFWYAABVtQAAVdYAAFYNAABWKAAAVoEAAFaiAABW2QAAVvgAAFcfAABXdgAAV6gAAFglAABYUgAAWG8AAFi8AABY1gAAWSsAAFldAABZmgAAWfcAAFotAABaVwAAWp4AAFuhAABcEAAAXPgAAF2EAABd8gAAXiQAAF5iAABeowAAXtoAAF8jAABfRwAAX2kAAF/XAABf5gAAX/4AAGAbAABgXQAAYKQAAGDNAABg6QAAYTIAAGFsAABhqQAAYh0AAGJjAABijgAAYs4AAGLoAABjkwAAY6oAAGPVAABkBAAAZEUAAGTkAABlBQAAZUEAAGV/AABlvgAAZegAAGZfAABmsgAAZwQAAGdCAABndgAAZ58AAGfGAABn+gAAaDEAAGiDAABozQAAaR4AAGlsAABpoAAAadMAAGoHAABqJAAAajsAAGo7AABqOwAAalYAAGqKAABqyAAAavMAAGsrAABragAAa4gAAGuiAABrwQAAa+oAAGwQAABsIgAAba8AAG3bAABuOAAAbl0AAG6BAABupQAAbskAAG7pAABvAgAAbx4AAG9TAABvkwAAb6kAAG/IAABwEgAAcEYAAHBxAABwwQAAcPkAAHEoAABxVQAAcYoAAHG7AAByAwAAckMAAHKiAABy6AAAcz4AAHOHAABz5QAAdBsAAHRZAAB0twAAdNQAAHT+AAB1YQAAdZ4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AgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwDSAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQCUBWdsYXNzBW11c2ljBnNlYXJjaAhlbnZlbG9wZQVoZWFydARzdGFyCnN0YXJfZW1wdHkEdXNlcgRmaWxtCHRoX2xhcmdlAnRoB3RoX2xpc3QCb2sGcmVtb3ZlB3pvb21faW4Iem9vbV9vdXQDb2ZmBnNpZ25hbANjb2cFdHJhc2gEaG9tZQhmaWxlX2FsdAR0aW1lBHJvYWQMZG93bmxvYWRfYWx0CGRvd25sb2FkBnVwbG9hZAVpbmJveAtwbGF5X2NpcmNsZQZyZXBlYXQHcmVmcmVzaAhsaXN0X2FsdARsb2NrBGZsYWcKaGVhZHBob25lcwp2b2x1bWVfb2ZmC3ZvbHVtZV9kb3duCXZvbHVtZV91cAZxcmNvZGUHYmFyY29kZQN0YWcEdGFncwRib29rCGJvb2ttYXJrBXByaW50BmNhbWVyYQRmb250BGJvbGQGaXRhbGljC3RleHRfaGVpZ2h0CnRleHRfd2lkdGgKYWxpZ25fbGVmdAxhbGlnbl9jZW50ZXILYWxpZ25fcmlnaHQNYWxpZ25fanVzdGlmeQRsaXN0C2luZGVudF9sZWZ0DGluZGVudF9yaWdodA5mYWNldGltZV92aWRlbwdwaWN0dXJlBnBlbmNpbAptYXBfbWFya2VyBmFkanVzdAR0aW50BGVkaXQFc2hhcmUFY2hlY2sEbW92ZQ1zdGVwX2JhY2t3YXJkDWZhc3RfYmFja3dhcmQIYmFja3dhcmQEcGxheQVwYXVzZQRzdG9wB2ZvcndhcmQMZmFzdF9mb3J3YXJkDHN0ZXBfZm9yd2FyZAVlamVjdAxjaGV2cm9uX2xlZnQNY2hldnJvbl9yaWdodAlwbHVzX3NpZ24KbWludXNfc2lnbgtyZW1vdmVfc2lnbgdva19zaWduDXF1ZXN0aW9uX3NpZ24JaW5mb19zaWduCnNjcmVlbnNob3QNcmVtb3ZlX2NpcmNsZQlva19jaXJjbGUKYmFuX2NpcmNsZQphcnJvd19sZWZ0C2Fycm93X3JpZ2h0CGFycm93X3VwCmFycm93X2Rvd24Jc2hhcmVfYWx0C3Jlc2l6ZV9mdWxsDHJlc2l6ZV9zbWFsbBBleGNsYW1hdGlvbl9zaWduBGdpZnQEbGVhZgRmaXJlCGV5ZV9vcGVuCWV5ZV9jbG9zZQx3YXJuaW5nX3NpZ24FcGxhbmUIY2FsZW5kYXIGcmFuZG9tB2NvbW1lbnQGbWFnbmV0CmNoZXZyb25fdXAMY2hldnJvbl9kb3duB3JldHdlZXQNc2hvcHBpbmdfY2FydAxmb2xkZXJfY2xvc2ULZm9sZGVyX29wZW4PcmVzaXplX3ZlcnRpY2FsEXJlc2l6ZV9ob3Jpem9udGFsCWJhcl9jaGFydAx0d2l0dGVyX3NpZ24NZmFjZWJvb2tfc2lnbgxjYW1lcmFfcmV0cm8Da2V5BGNvZ3MIY29tbWVudHMNdGh1bWJzX3VwX2FsdA90aHVtYnNfZG93bl9hbHQJc3Rhcl9oYWxmC2hlYXJ0X2VtcHR5B3NpZ25vdXQNbGlua2VkaW5fc2lnbgdwdXNocGluDWV4dGVybmFsX2xpbmsGc2lnbmluBnRyb3BoeQtnaXRodWJfc2lnbgp1cGxvYWRfYWx0BWxlbW9uBXBob25lC2NoZWNrX2VtcHR5DmJvb2ttYXJrX2VtcHR5CnBob25lX3NpZ24HdHdpdHRlcghmYWNlYm9vawZnaXRodWIGdW5sb2NrC2NyZWRpdF9jYXJkA3JzcwNoZGQIYnVsbGhvcm4EYmVsbAtjZXJ0aWZpY2F0ZQpoYW5kX3JpZ2h0CWhhbmRfbGVmdAdoYW5kX3VwCWhhbmRfZG93bhFjaXJjbGVfYXJyb3dfbGVmdBJjaXJjbGVfYXJyb3dfcmlnaHQPY2lyY2xlX2Fycm93X3VwEWNpcmNsZV9hcnJvd19kb3duBWdsb2JlBndyZW5jaAV0YXNrcwZmaWx0ZXIJYnJpZWZjYXNlCmZ1bGxzY3JlZW4FZ3JvdXAEbGluawVjbG91ZAZiZWFrZXIDY3V0BGNvcHkKcGFwZXJfY2xpcARzYXZlCnNpZ25fYmxhbmsHcmVvcmRlcgJ1bAJvbA1zdHJpa2V0aHJvdWdoCXVuZGVybGluZQV0YWJsZQVtYWdpYwV0cnVjawlwaW50ZXJlc3QOcGludGVyZXN0X3NpZ24QZ29vZ2xlX3BsdXNfc2lnbgtnb29nbGVfcGx1cwVtb25leQpjYXJldF9kb3duCGNhcmV0X3VwCmNhcmV0X2xlZnQLY2FyZXRfcmlnaHQHY29sdW1ucwRzb3J0CXNvcnRfZG93bgdzb3J0X3VwDGVudmVsb3BlX2FsdAhsaW5rZWRpbgR1bmRvBWxlZ2FsCWRhc2hib2FyZAtjb21tZW50X2FsdAxjb21tZW50c19hbHQEYm9sdAdzaXRlbWFwCHVtYnJlbGxhBXBhc3RlCmxpZ2h0X2J1bGIIZXhjaGFuZ2UOY2xvdWRfZG93bmxvYWQMY2xvdWRfdXBsb2FkB3VzZXJfbWQLc3RldGhvc2NvcGUIc3VpdGNhc2UIYmVsbF9hbHQGY29mZmVlBGZvb2QNZmlsZV90ZXh0X2FsdAhidWlsZGluZwhob3NwaXRhbAlhbWJ1bGFuY2UGbWVka2l0C2ZpZ2h0ZXJfamV0BGJlZXIGaF9zaWduBGYwZmURZG91YmxlX2FuZ2xlX2xlZnQSZG91YmxlX2FuZ2xlX3JpZ2h0D2RvdWJsZV9hbmdsZV91cBFkb3VibGVfYW5nbGVfZG93bgphbmdsZV9sZWZ0C2FuZ2xlX3JpZ2h0CGFuZ2xlX3VwCmFuZ2xlX2Rvd24HZGVza3RvcAZsYXB0b3AGdGFibGV0DG1vYmlsZV9waG9uZQxjaXJjbGVfYmxhbmsKcXVvdGVfbGVmdAtxdW90ZV9yaWdodAdzcGlubmVyBmNpcmNsZQVyZXBseQpnaXRodWJfYWx0EGZvbGRlcl9jbG9zZV9hbHQPZm9sZGVyX29wZW5fYWx0CmV4cGFuZF9hbHQMY29sbGFwc2VfYWx0BXNtaWxlBWZyb3duA21laAdnYW1lcGFkCGtleWJvYXJkCGZsYWdfYWx0DmZsYWdfY2hlY2tlcmVkCHRlcm1pbmFsBGNvZGUJcmVwbHlfYWxsD3N0YXJfaGFsZl9lbXB0eQ5sb2NhdGlvbl9hcnJvdwRjcm9wCWNvZGVfZm9yawZ1bmxpbmsEXzI3OQtleGNsYW1hdGlvbgtzdXBlcnNjcmlwdAlzdWJzY3JpcHQEXzI4MwxwdXp6bGVfcGllY2UKbWljcm9waG9uZQ5taWNyb3Bob25lX29mZgZzaGllbGQOY2FsZW5kYXJfZW1wdHkRZmlyZV9leHRpbmd1aXNoZXIGcm9ja2V0Bm1heGNkbhFjaGV2cm9uX3NpZ25fbGVmdBJjaGV2cm9uX3NpZ25fcmlnaHQPY2hldnJvbl9zaWduX3VwEWNoZXZyb25fc2lnbl9kb3duBWh0bWw1BGNzczMGYW5jaG9yCnVubG9ja19hbHQIYnVsbHNleWUTZWxsaXBzaXNfaG9yaXpvbnRhbBFlbGxpcHNpc192ZXJ0aWNhbARfMzAzCXBsYXlfc2lnbgZ0aWNrZXQObWludXNfc2lnbl9hbHQLY2hlY2tfbWludXMIbGV2ZWxfdXAKbGV2ZWxfZG93bgpjaGVja19zaWduCWVkaXRfc2lnbgRfMzEyCnNoYXJlX3NpZ24HY29tcGFzcwhjb2xsYXBzZQxjb2xsYXBzZV90b3AEXzMxNwNldXIDZ2JwA3VzZANpbnIDanB5A3J1YgNrcncDYnRjBGZpbGUJZmlsZV90ZXh0EHNvcnRfYnlfYWxwaGFiZXQEXzMyORJzb3J0X2J5X2F0dHJpYnV0ZXMWc29ydF9ieV9hdHRyaWJ1dGVzX2FsdA1zb3J0X2J5X29yZGVyEXNvcnRfYnlfb3JkZXJfYWx0BF8zMzQEXzMzNQx5b3V0dWJlX3NpZ24HeW91dHViZQR4aW5nCXhpbmdfc2lnbgx5b3V0dWJlX3BsYXkHZHJvcGJveA1zdGFja2V4Y2hhbmdlCWluc3RhZ3JhbQZmbGlja3IDYWRuBGYxNzEOYml0YnVja2V0X3NpZ24GdHVtYmxyC3R1bWJscl9zaWduD2xvbmdfYXJyb3dfZG93bg1sb25nX2Fycm93X3VwD2xvbmdfYXJyb3dfbGVmdBBsb25nX2Fycm93X3JpZ2h0B3dpbmRvd3MHYW5kcm9pZAVsaW51eAdkcmliYmxlBXNreXBlCmZvdXJzcXVhcmUGdHJlbGxvBmZlbWFsZQRtYWxlBmdpdHRpcANzdW4EXzM2NgdhcmNoaXZlA2J1ZwJ2awV3ZWlibwZyZW5yZW4EXzM3Mg5zdGFja19leGNoYW5nZQRfMzc0FWFycm93X2NpcmNsZV9hbHRfbGVmdARfMzc2DmRvdF9jaXJjbGVfYWx0BF8zNzgMdmltZW9fc3F1YXJlBF8zODANcGx1c19zcXVhcmVfbwRfMzgyBF8zODMEXzM4NARfMzg1BF8zODYEXzM4NwRfMzg4BF8zODkHdW5pRjFBMARmMWExBF8zOTIEXzM5MwRmMWE0BF8zOTUEXzM5NgRfMzk3BF8zOTgEXzM5OQRfNDAwBGYxYWIEXzQwMgRfNDAzBF80MDQHdW5pRjFCMQRfNDA2BF80MDcEXzQwOARfNDA5BF80MTAEXzQxMQRfNDEyBF80MTMEXzQxNARfNDE1BF80MTYEXzQxNwRfNDE4BF80MTkHdW5pRjFDMAd1bmlGMUMxBF80MjIEXzQyMwRfNDI0BF80MjUEXzQyNgRfNDI3BF80MjgEXzQyOQRfNDMwBF80MzEEXzQzMgRfNDMzBF80MzQHdW5pRjFEMAd1bmlGMUQxB3VuaUYxRDIEXzQzOARfNDM5B3VuaUYxRDUHdW5pRjFENgd1bmlGMUQ3BF80NDMEXzQ0NARfNDQ1BF80NDYEXzQ0NwRfNDQ4BF80NDkHdW5pRjFFMARfNDUxBF80NTIEXzQ1MwRfNDU0BF80NTUEXzQ1NgRfNDU3BF80NTgEXzQ1OQRfNDYwBF80NjEEXzQ2MgRfNDYzBF80NjQHdW5pRjFGMARfNDY2BF80NjcEZjFmMwRfNDY5BF80NzAEXzQ3MQRfNDcyBF80NzMEXzQ3NARfNDc1BF80NzYEZjFmYwRfNDc4BF80NzkEXzQ4MARfNDgxBF80ODIEXzQ4MwRfNDg0BF80ODUEXzQ4NgRfNDg3BF80ODgEXzQ4OQRfNDkwBF80OTEEXzQ5MgRfNDkzBF80OTQEZjIxMARfNDk2BGYyMTIEXzQ5OARfNDk5BF81MDAEXzUwMQRfNTAyBF81MDMEXzUwNARfNTA1BF81MDYEXzUwNwRfNTA4BF81MDkFdmVudXMEXzUxMQRfNTEyBF81MTMEXzUxNARfNTE1BF81MTYEXzUxNwRfNTE4BF81MTkEXzUyMARfNTIxBF81MjIEXzUyMwRfNTI0BF81MjUEXzUyNgRfNTI3BF81MjgEXzUyOQRfNTMwBF81MzEEXzUzMgRfNTMzBF81MzQEXzUzNQRfNTM2BF81MzcEXzUzOARfNTM5BF81NDAEXzU0MQRfNTQyBF81NDMEXzU0NARfNTQ1BF81NDYEXzU0NwRfNTQ4BF81NDkEXzU1MARfNTUxBF81NTIEXzU1MwRfNTU0BF81NTUEXzU1NgRfNTU3BF81NTgEXzU1OQRfNTYwBF81NjEEXzU2MgRfNTYzBF81NjQEXzU2NQRfNTY2BF81NjcEXzU2OARfNTY5BGYyNjAEZjI2MQRfNTcyBGYyNjMEXzU3NARfNTc1BF81NzYEXzU3NwRfNTc4BF81NzkEXzU4MARfNTgxBF81ODIEXzU4MwRfNTg0BF81ODUEXzU4NgRfNTg3BF81ODgEXzU4OQRfNTkwBF81OTEEXzU5MgRfNTkzBF81OTQEXzU5NQRfNTk2BF81OTcEXzU5OARmMjdlB3VuaUYyODAHdW5pRjI4MQRfNjAyBF82MDMEXzYwNAd1bmlGMjg1B3VuaUYyODYEXzYwNwRfNjA4BF82MDkEXzYxMARfNjExBF82MTIEXzYxMwRfNjE0BF82MTUEXzYxNgRfNjE3BF82MTgEXzYxOQRfNjIwBF82MjEEXzYyMgRfNjIzBF82MjQEXzYyNQRfNjI2BF82MjcEXzYyOARfNjI5B3VuaUYyQTAHdW5pRjJBMQd1bmlGMkEyB3VuaUYyQTMHdW5pRjJBNAd1bmlGMkE1B3VuaUYyQTYHdW5pRjJBNwd1bmlGMkE4B3VuaUYyQTkHdW5pRjJBQQd1bmlGMkFCB3VuaUYyQUMHdW5pRjJBRAd1bmlGMkFFB3VuaUYyQjAHdW5pRjJCMQd1bmlGMkIyB3VuaUYyQjMHdW5pRjJCNAd1bmlGMkI1B3VuaUYyQjYHdW5pRjJCNwd1bmlGMkI4B3VuaUYyQjkHdW5pRjJCQQd1bmlGMkJCB3VuaUYyQkMHdW5pRjJCRAd1bmlGMkJFB3VuaUYyQzAHdW5pRjJDMQd1bmlGMkMyB3VuaUYyQzMHdW5pRjJDNAd1bmlGMkM1B3VuaUYyQzYHdW5pRjJDNwd1bmlGMkM4B3VuaUYyQzkHdW5pRjJDQQd1bmlGMkNCB3VuaUYyQ0MHdW5pRjJDRAd1bmlGMkNFB3VuaUYyRDAHdW5pRjJEMQd1bmlGMkQyB3VuaUYyRDMHdW5pRjJENAd1bmlGMkQ1B3VuaUYyRDYHdW5pRjJENwd1bmlGMkQ4B3VuaUYyRDkHdW5pRjJEQQd1bmlGMkRCB3VuaUYyREMHdW5pRjJERAd1bmlGMkRFB3VuaUYyRTAHdW5pRjJFMQd1bmlGMkUyB3VuaUYyRTMHdW5pRjJFNAd1bmlGMkU1B3VuaUYyRTYHdW5pRjJFNwRfNjk4B3VuaUYyRTkHdW5pRjJFQQd1bmlGMkVCB3VuaUYyRUMHdW5pRjJFRAd1bmlGMkVFAAAAAAAAAf//AAIAAQAAAA4AAAAYAAAAAAACAAEAAQLCAAEABAAAAAIAAAAAAAEAAAAAzD2izwAAAADLTzwwAAAAANQxaLk=\";\nexport const fontAwsesomeStyle = `\\\n@font-face {\\\n font-family: \"FontAwesome\";\\\n src: url(\"data:font/opentype;base64,${fontAwesomeOpenType}\") format(\"opentype\");\\\n}`;\n","var index = {\n schemeGroups: {\n sequential: [\"BuGn\", \"BuPu\", \"GnBu\", \"OrRd\", \"PuBu\", \"PuBuGn\", \"PuRd\", \"RdPu\", \"YlGn\", \"YlGnBu\", \"YlOrBr\", \"YlOrRd\"],\n singlehue: [\"Blues\", \"Greens\", \"Greys\", \"Oranges\", \"Purples\", \"Reds\"],\n diverging: [\"BrBG\", \"PiYG\", \"PRGn\", \"PuOr\", \"RdBu\", \"RdGy\", \"RdYlBu\", \"RdYlGn\", \"Spectral\"],\n qualitative: [\"Accent\", \"Dark2\", \"Paired\", \"Pastel1\", \"Pastel2\", \"Set1\", \"Set2\", \"Set3\"]\n }, YlGn: {\n 3: [\"#f7fcb9\", \"#addd8e\", \"#31a354\"],\n 4: [\"#ffffcc\", \"#c2e699\", \"#78c679\", \"#238443\"],\n 5: [\"#ffffcc\", \"#c2e699\", \"#78c679\", \"#31a354\", \"#006837\"],\n 6: [\"#ffffcc\", \"#d9f0a3\", \"#addd8e\", \"#78c679\", \"#31a354\", \"#006837\"],\n 7: [\"#ffffcc\", \"#d9f0a3\", \"#addd8e\", \"#78c679\", \"#41ab5d\", \"#238443\", \"#005a32\"],\n 8: [\"#ffffe5\", \"#f7fcb9\", \"#d9f0a3\", \"#addd8e\", \"#78c679\", \"#41ab5d\", \"#238443\", \"#005a32\"],\n 9: [\"#ffffe5\", \"#f7fcb9\", \"#d9f0a3\", \"#addd8e\", \"#78c679\", \"#41ab5d\", \"#238443\", \"#006837\", \"#004529\"]\n }, YlGnBu: {\n 3: [\"#edf8b1\", \"#7fcdbb\", \"#2c7fb8\"],\n 4: [\"#ffffcc\", \"#a1dab4\", \"#41b6c4\", \"#225ea8\"],\n 5: [\"#ffffcc\", \"#a1dab4\", \"#41b6c4\", \"#2c7fb8\", \"#253494\"],\n 6: [\"#ffffcc\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#2c7fb8\", \"#253494\"],\n 7: [\"#ffffcc\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#1d91c0\", \"#225ea8\", \"#0c2c84\"],\n 8: [\"#ffffd9\", \"#edf8b1\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#1d91c0\", \"#225ea8\", \"#0c2c84\"],\n 9: [\"#ffffd9\", \"#edf8b1\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#1d91c0\", \"#225ea8\", \"#253494\", \"#081d58\"]\n }, GnBu: {\n 3: [\"#e0f3db\", \"#a8ddb5\", \"#43a2ca\"],\n 4: [\"#f0f9e8\", \"#bae4bc\", \"#7bccc4\", \"#2b8cbe\"],\n 5: [\"#f0f9e8\", \"#bae4bc\", \"#7bccc4\", \"#43a2ca\", \"#0868ac\"],\n 6: [\"#f0f9e8\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#43a2ca\", \"#0868ac\"],\n 7: [\"#f0f9e8\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#4eb3d3\", \"#2b8cbe\", \"#08589e\"],\n 8: [\"#f7fcf0\", \"#e0f3db\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#4eb3d3\", \"#2b8cbe\", \"#08589e\"],\n 9: [\"#f7fcf0\", \"#e0f3db\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#4eb3d3\", \"#2b8cbe\", \"#0868ac\", \"#084081\"]\n }, BuGn: {\n 3: [\"#e5f5f9\", \"#99d8c9\", \"#2ca25f\"],\n 4: [\"#edf8fb\", \"#b2e2e2\", \"#66c2a4\", \"#238b45\"],\n 5: [\"#edf8fb\", \"#b2e2e2\", \"#66c2a4\", \"#2ca25f\", \"#006d2c\"],\n 6: [\"#edf8fb\", \"#ccece6\", \"#99d8c9\", \"#66c2a4\", \"#2ca25f\", \"#006d2c\"],\n 7: [\"#edf8fb\", \"#ccece6\", \"#99d8c9\", \"#66c2a4\", \"#41ae76\", \"#238b45\", \"#005824\"],\n 8: [\"#f7fcfd\", \"#e5f5f9\", \"#ccece6\", \"#99d8c9\", \"#66c2a4\", \"#41ae76\", \"#238b45\", \"#005824\"],\n 9: [\"#f7fcfd\", \"#e5f5f9\", \"#ccece6\", \"#99d8c9\", \"#66c2a4\", \"#41ae76\", \"#238b45\", \"#006d2c\", \"#00441b\"]\n }, PuBuGn: {\n 3: [\"#ece2f0\", \"#a6bddb\", \"#1c9099\"],\n 4: [\"#f6eff7\", \"#bdc9e1\", \"#67a9cf\", \"#02818a\"],\n 5: [\"#f6eff7\", \"#bdc9e1\", \"#67a9cf\", \"#1c9099\", \"#016c59\"],\n 6: [\"#f6eff7\", \"#d0d1e6\", \"#a6bddb\", \"#67a9cf\", \"#1c9099\", \"#016c59\"],\n 7: [\"#f6eff7\", \"#d0d1e6\", \"#a6bddb\", \"#67a9cf\", \"#3690c0\", \"#02818a\", \"#016450\"],\n 8: [\"#fff7fb\", \"#ece2f0\", \"#d0d1e6\", \"#a6bddb\", \"#67a9cf\", \"#3690c0\", \"#02818a\", \"#016450\"],\n 9: [\"#fff7fb\", \"#ece2f0\", \"#d0d1e6\", \"#a6bddb\", \"#67a9cf\", \"#3690c0\", \"#02818a\", \"#016c59\", \"#014636\"]\n }, PuBu: {\n 3: [\"#ece7f2\", \"#a6bddb\", \"#2b8cbe\"],\n 4: [\"#f1eef6\", \"#bdc9e1\", \"#74a9cf\", \"#0570b0\"],\n 5: [\"#f1eef6\", \"#bdc9e1\", \"#74a9cf\", \"#2b8cbe\", \"#045a8d\"],\n 6: [\"#f1eef6\", \"#d0d1e6\", \"#a6bddb\", \"#74a9cf\", \"#2b8cbe\", \"#045a8d\"],\n 7: [\"#f1eef6\", \"#d0d1e6\", \"#a6bddb\", \"#74a9cf\", \"#3690c0\", \"#0570b0\", \"#034e7b\"],\n 8: [\"#fff7fb\", \"#ece7f2\", \"#d0d1e6\", \"#a6bddb\", \"#74a9cf\", \"#3690c0\", \"#0570b0\", \"#034e7b\"],\n 9: [\"#fff7fb\", \"#ece7f2\", \"#d0d1e6\", \"#a6bddb\", \"#74a9cf\", \"#3690c0\", \"#0570b0\", \"#045a8d\", \"#023858\"]\n }, BuPu: {\n 3: [\"#e0ecf4\", \"#9ebcda\", \"#8856a7\"],\n 4: [\"#edf8fb\", \"#b3cde3\", \"#8c96c6\", \"#88419d\"],\n 5: [\"#edf8fb\", \"#b3cde3\", \"#8c96c6\", \"#8856a7\", \"#810f7c\"],\n 6: [\"#edf8fb\", \"#bfd3e6\", \"#9ebcda\", \"#8c96c6\", \"#8856a7\", \"#810f7c\"],\n 7: [\"#edf8fb\", \"#bfd3e6\", \"#9ebcda\", \"#8c96c6\", \"#8c6bb1\", \"#88419d\", \"#6e016b\"],\n 8: [\"#f7fcfd\", \"#e0ecf4\", \"#bfd3e6\", \"#9ebcda\", \"#8c96c6\", \"#8c6bb1\", \"#88419d\", \"#6e016b\"],\n 9: [\"#f7fcfd\", \"#e0ecf4\", \"#bfd3e6\", \"#9ebcda\", \"#8c96c6\", \"#8c6bb1\", \"#88419d\", \"#810f7c\", \"#4d004b\"]\n }, RdPu: {\n 3: [\"#fde0dd\", \"#fa9fb5\", \"#c51b8a\"],\n 4: [\"#feebe2\", \"#fbb4b9\", \"#f768a1\", \"#ae017e\"],\n 5: [\"#feebe2\", \"#fbb4b9\", \"#f768a1\", \"#c51b8a\", \"#7a0177\"],\n 6: [\"#feebe2\", \"#fcc5c0\", \"#fa9fb5\", \"#f768a1\", \"#c51b8a\", \"#7a0177\"],\n 7: [\"#feebe2\", \"#fcc5c0\", \"#fa9fb5\", \"#f768a1\", \"#dd3497\", \"#ae017e\", \"#7a0177\"],\n 8: [\"#fff7f3\", \"#fde0dd\", \"#fcc5c0\", \"#fa9fb5\", \"#f768a1\", \"#dd3497\", \"#ae017e\", \"#7a0177\"],\n 9: [\"#fff7f3\", \"#fde0dd\", \"#fcc5c0\", \"#fa9fb5\", \"#f768a1\", \"#dd3497\", \"#ae017e\", \"#7a0177\", \"#49006a\"]\n }, PuRd: {\n 3: [\"#e7e1ef\", \"#c994c7\", \"#dd1c77\"],\n 4: [\"#f1eef6\", \"#d7b5d8\", \"#df65b0\", \"#ce1256\"],\n 5: [\"#f1eef6\", \"#d7b5d8\", \"#df65b0\", \"#dd1c77\", \"#980043\"],\n 6: [\"#f1eef6\", \"#d4b9da\", \"#c994c7\", \"#df65b0\", \"#dd1c77\", \"#980043\"],\n 7: [\"#f1eef6\", \"#d4b9da\", \"#c994c7\", \"#df65b0\", \"#e7298a\", \"#ce1256\", \"#91003f\"],\n 8: [\"#f7f4f9\", \"#e7e1ef\", \"#d4b9da\", \"#c994c7\", \"#df65b0\", \"#e7298a\", \"#ce1256\", \"#91003f\"],\n 9: [\"#f7f4f9\", \"#e7e1ef\", \"#d4b9da\", \"#c994c7\", \"#df65b0\", \"#e7298a\", \"#ce1256\", \"#980043\", \"#67001f\"]\n }, OrRd: {\n 3: [\"#fee8c8\", \"#fdbb84\", \"#e34a33\"],\n 4: [\"#fef0d9\", \"#fdcc8a\", \"#fc8d59\", \"#d7301f\"],\n 5: [\"#fef0d9\", \"#fdcc8a\", \"#fc8d59\", \"#e34a33\", \"#b30000\"],\n 6: [\"#fef0d9\", \"#fdd49e\", \"#fdbb84\", \"#fc8d59\", \"#e34a33\", \"#b30000\"],\n 7: [\"#fef0d9\", \"#fdd49e\", \"#fdbb84\", \"#fc8d59\", \"#ef6548\", \"#d7301f\", \"#990000\"],\n 8: [\"#fff7ec\", \"#fee8c8\", \"#fdd49e\", \"#fdbb84\", \"#fc8d59\", \"#ef6548\", \"#d7301f\", \"#990000\"],\n 9: [\"#fff7ec\", \"#fee8c8\", \"#fdd49e\", \"#fdbb84\", \"#fc8d59\", \"#ef6548\", \"#d7301f\", \"#b30000\", \"#7f0000\"]\n }, YlOrRd: {\n 3: [\"#ffeda0\", \"#feb24c\", \"#f03b20\"],\n 4: [\"#ffffb2\", \"#fecc5c\", \"#fd8d3c\", \"#e31a1c\"],\n 5: [\"#ffffb2\", \"#fecc5c\", \"#fd8d3c\", \"#f03b20\", \"#bd0026\"],\n 6: [\"#ffffb2\", \"#fed976\", \"#feb24c\", \"#fd8d3c\", \"#f03b20\", \"#bd0026\"],\n 7: [\"#ffffb2\", \"#fed976\", \"#feb24c\", \"#fd8d3c\", \"#fc4e2a\", \"#e31a1c\", \"#b10026\"],\n 8: [\"#ffffcc\", \"#ffeda0\", \"#fed976\", \"#feb24c\", \"#fd8d3c\", \"#fc4e2a\", \"#e31a1c\", \"#b10026\"],\n 9: [\"#ffffcc\", \"#ffeda0\", \"#fed976\", \"#feb24c\", \"#fd8d3c\", \"#fc4e2a\", \"#e31a1c\", \"#bd0026\", \"#800026\"]\n }, YlOrBr: {\n 3: [\"#fff7bc\", \"#fec44f\", \"#d95f0e\"],\n 4: [\"#ffffd4\", \"#fed98e\", \"#fe9929\", \"#cc4c02\"],\n 5: [\"#ffffd4\", \"#fed98e\", \"#fe9929\", \"#d95f0e\", \"#993404\"],\n 6: [\"#ffffd4\", \"#fee391\", \"#fec44f\", \"#fe9929\", \"#d95f0e\", \"#993404\"],\n 7: [\"#ffffd4\", \"#fee391\", \"#fec44f\", \"#fe9929\", \"#ec7014\", \"#cc4c02\", \"#8c2d04\"],\n 8: [\"#ffffe5\", \"#fff7bc\", \"#fee391\", \"#fec44f\", \"#fe9929\", \"#ec7014\", \"#cc4c02\", \"#8c2d04\"],\n 9: [\"#ffffe5\", \"#fff7bc\", \"#fee391\", \"#fec44f\", \"#fe9929\", \"#ec7014\", \"#cc4c02\", \"#993404\", \"#662506\"]\n }, Purples: {\n 3: [\"#efedf5\", \"#bcbddc\", \"#756bb1\"],\n 4: [\"#f2f0f7\", \"#cbc9e2\", \"#9e9ac8\", \"#6a51a3\"],\n 5: [\"#f2f0f7\", \"#cbc9e2\", \"#9e9ac8\", \"#756bb1\", \"#54278f\"],\n 6: [\"#f2f0f7\", \"#dadaeb\", \"#bcbddc\", \"#9e9ac8\", \"#756bb1\", \"#54278f\"],\n 7: [\"#f2f0f7\", \"#dadaeb\", \"#bcbddc\", \"#9e9ac8\", \"#807dba\", \"#6a51a3\", \"#4a1486\"],\n 8: [\"#fcfbfd\", \"#efedf5\", \"#dadaeb\", \"#bcbddc\", \"#9e9ac8\", \"#807dba\", \"#6a51a3\", \"#4a1486\"],\n 9: [\"#fcfbfd\", \"#efedf5\", \"#dadaeb\", \"#bcbddc\", \"#9e9ac8\", \"#807dba\", \"#6a51a3\", \"#54278f\", \"#3f007d\"]\n }, Blues: {\n 3: [\"#deebf7\", \"#9ecae1\", \"#3182bd\"],\n 4: [\"#eff3ff\", \"#bdd7e7\", \"#6baed6\", \"#2171b5\"],\n 5: [\"#eff3ff\", \"#bdd7e7\", \"#6baed6\", \"#3182bd\", \"#08519c\"],\n 6: [\"#eff3ff\", \"#c6dbef\", \"#9ecae1\", \"#6baed6\", \"#3182bd\", \"#08519c\"],\n 7: [\"#eff3ff\", \"#c6dbef\", \"#9ecae1\", \"#6baed6\", \"#4292c6\", \"#2171b5\", \"#084594\"],\n 8: [\"#f7fbff\", \"#deebf7\", \"#c6dbef\", \"#9ecae1\", \"#6baed6\", \"#4292c6\", \"#2171b5\", \"#084594\"],\n 9: [\"#f7fbff\", \"#deebf7\", \"#c6dbef\", \"#9ecae1\", \"#6baed6\", \"#4292c6\", \"#2171b5\", \"#08519c\", \"#08306b\"]\n }, Greens: {\n 3: [\"#e5f5e0\", \"#a1d99b\", \"#31a354\"],\n 4: [\"#edf8e9\", \"#bae4b3\", \"#74c476\", \"#238b45\"],\n 5: [\"#edf8e9\", \"#bae4b3\", \"#74c476\", \"#31a354\", \"#006d2c\"],\n 6: [\"#edf8e9\", \"#c7e9c0\", \"#a1d99b\", \"#74c476\", \"#31a354\", \"#006d2c\"],\n 7: [\"#edf8e9\", \"#c7e9c0\", \"#a1d99b\", \"#74c476\", \"#41ab5d\", \"#238b45\", \"#005a32\"],\n 8: [\"#f7fcf5\", \"#e5f5e0\", \"#c7e9c0\", \"#a1d99b\", \"#74c476\", \"#41ab5d\", \"#238b45\", \"#005a32\"],\n 9: [\"#f7fcf5\", \"#e5f5e0\", \"#c7e9c0\", \"#a1d99b\", \"#74c476\", \"#41ab5d\", \"#238b45\", \"#006d2c\", \"#00441b\"]\n }, Oranges: {\n 3: [\"#fee6ce\", \"#fdae6b\", \"#e6550d\"],\n 4: [\"#feedde\", \"#fdbe85\", \"#fd8d3c\", \"#d94701\"],\n 5: [\"#feedde\", \"#fdbe85\", \"#fd8d3c\", \"#e6550d\", \"#a63603\"],\n 6: [\"#feedde\", \"#fdd0a2\", \"#fdae6b\", \"#fd8d3c\", \"#e6550d\", \"#a63603\"],\n 7: [\"#feedde\", \"#fdd0a2\", \"#fdae6b\", \"#fd8d3c\", \"#f16913\", \"#d94801\", \"#8c2d04\"],\n 8: [\"#fff5eb\", \"#fee6ce\", \"#fdd0a2\", \"#fdae6b\", \"#fd8d3c\", \"#f16913\", \"#d94801\", \"#8c2d04\"],\n 9: [\"#fff5eb\", \"#fee6ce\", \"#fdd0a2\", \"#fdae6b\", \"#fd8d3c\", \"#f16913\", \"#d94801\", \"#a63603\", \"#7f2704\"]\n }, Reds: {\n 3: [\"#fee0d2\", \"#fc9272\", \"#de2d26\"],\n 4: [\"#fee5d9\", \"#fcae91\", \"#fb6a4a\", \"#cb181d\"],\n 5: [\"#fee5d9\", \"#fcae91\", \"#fb6a4a\", \"#de2d26\", \"#a50f15\"],\n 6: [\"#fee5d9\", \"#fcbba1\", \"#fc9272\", \"#fb6a4a\", \"#de2d26\", \"#a50f15\"],\n 7: [\"#fee5d9\", \"#fcbba1\", \"#fc9272\", \"#fb6a4a\", \"#ef3b2c\", \"#cb181d\", \"#99000d\"],\n 8: [\"#fff5f0\", \"#fee0d2\", \"#fcbba1\", \"#fc9272\", \"#fb6a4a\", \"#ef3b2c\", \"#cb181d\", \"#99000d\"],\n 9: [\"#fff5f0\", \"#fee0d2\", \"#fcbba1\", \"#fc9272\", \"#fb6a4a\", \"#ef3b2c\", \"#cb181d\", \"#a50f15\", \"#67000d\"]\n }, Greys: {\n 3: [\"#f0f0f0\", \"#bdbdbd\", \"#636363\"],\n 4: [\"#f7f7f7\", \"#cccccc\", \"#969696\", \"#525252\"],\n 5: [\"#f7f7f7\", \"#cccccc\", \"#969696\", \"#636363\", \"#252525\"],\n 6: [\"#f7f7f7\", \"#d9d9d9\", \"#bdbdbd\", \"#969696\", \"#636363\", \"#252525\"],\n 7: [\"#f7f7f7\", \"#d9d9d9\", \"#bdbdbd\", \"#969696\", \"#737373\", \"#525252\", \"#252525\"],\n 8: [\"#ffffff\", \"#f0f0f0\", \"#d9d9d9\", \"#bdbdbd\", \"#969696\", \"#737373\", \"#525252\", \"#252525\"],\n 9: [\"#ffffff\", \"#f0f0f0\", \"#d9d9d9\", \"#bdbdbd\", \"#969696\", \"#737373\", \"#525252\", \"#252525\", \"#000000\"]\n }, PuOr: {\n 3: [\"#f1a340\", \"#f7f7f7\", \"#998ec3\"],\n 4: [\"#e66101\", \"#fdb863\", \"#b2abd2\", \"#5e3c99\"],\n 5: [\"#e66101\", \"#fdb863\", \"#f7f7f7\", \"#b2abd2\", \"#5e3c99\"],\n 6: [\"#b35806\", \"#f1a340\", \"#fee0b6\", \"#d8daeb\", \"#998ec3\", \"#542788\"],\n 7: [\"#b35806\", \"#f1a340\", \"#fee0b6\", \"#f7f7f7\", \"#d8daeb\", \"#998ec3\", \"#542788\"],\n 8: [\"#b35806\", \"#e08214\", \"#fdb863\", \"#fee0b6\", \"#d8daeb\", \"#b2abd2\", \"#8073ac\", \"#542788\"],\n 9: [\"#b35806\", \"#e08214\", \"#fdb863\", \"#fee0b6\", \"#f7f7f7\", \"#d8daeb\", \"#b2abd2\", \"#8073ac\", \"#542788\"],\n 10: [\"#7f3b08\", \"#b35806\", \"#e08214\", \"#fdb863\", \"#fee0b6\", \"#d8daeb\", \"#b2abd2\", \"#8073ac\", \"#542788\", \"#2d004b\"],\n 11: [\"#7f3b08\", \"#b35806\", \"#e08214\", \"#fdb863\", \"#fee0b6\", \"#f7f7f7\", \"#d8daeb\", \"#b2abd2\", \"#8073ac\", \"#542788\", \"#2d004b\"]\n }, BrBG: {\n 3: [\"#d8b365\", \"#f5f5f5\", \"#5ab4ac\"],\n 4: [\"#a6611a\", \"#dfc27d\", \"#80cdc1\", \"#018571\"],\n 5: [\"#a6611a\", \"#dfc27d\", \"#f5f5f5\", \"#80cdc1\", \"#018571\"],\n 6: [\"#8c510a\", \"#d8b365\", \"#f6e8c3\", \"#c7eae5\", \"#5ab4ac\", \"#01665e\"],\n 7: [\"#8c510a\", \"#d8b365\", \"#f6e8c3\", \"#f5f5f5\", \"#c7eae5\", \"#5ab4ac\", \"#01665e\"],\n 8: [\"#8c510a\", \"#bf812d\", \"#dfc27d\", \"#f6e8c3\", \"#c7eae5\", \"#80cdc1\", \"#35978f\", \"#01665e\"],\n 9: [\"#8c510a\", \"#bf812d\", \"#dfc27d\", \"#f6e8c3\", \"#f5f5f5\", \"#c7eae5\", \"#80cdc1\", \"#35978f\", \"#01665e\"],\n 10: [\"#543005\", \"#8c510a\", \"#bf812d\", \"#dfc27d\", \"#f6e8c3\", \"#c7eae5\", \"#80cdc1\", \"#35978f\", \"#01665e\", \"#003c30\"],\n 11: [\"#543005\", \"#8c510a\", \"#bf812d\", \"#dfc27d\", \"#f6e8c3\", \"#f5f5f5\", \"#c7eae5\", \"#80cdc1\", \"#35978f\", \"#01665e\", \"#003c30\"]\n }, PRGn: {\n 3: [\"#af8dc3\", \"#f7f7f7\", \"#7fbf7b\"],\n 4: [\"#7b3294\", \"#c2a5cf\", \"#a6dba0\", \"#008837\"],\n 5: [\"#7b3294\", \"#c2a5cf\", \"#f7f7f7\", \"#a6dba0\", \"#008837\"],\n 6: [\"#762a83\", \"#af8dc3\", \"#e7d4e8\", \"#d9f0d3\", \"#7fbf7b\", \"#1b7837\"],\n 7: [\"#762a83\", \"#af8dc3\", \"#e7d4e8\", \"#f7f7f7\", \"#d9f0d3\", \"#7fbf7b\", \"#1b7837\"],\n 8: [\"#762a83\", \"#9970ab\", \"#c2a5cf\", \"#e7d4e8\", \"#d9f0d3\", \"#a6dba0\", \"#5aae61\", \"#1b7837\"],\n 9: [\"#762a83\", \"#9970ab\", \"#c2a5cf\", \"#e7d4e8\", \"#f7f7f7\", \"#d9f0d3\", \"#a6dba0\", \"#5aae61\", \"#1b7837\"],\n 10: [\"#40004b\", \"#762a83\", \"#9970ab\", \"#c2a5cf\", \"#e7d4e8\", \"#d9f0d3\", \"#a6dba0\", \"#5aae61\", \"#1b7837\", \"#00441b\"],\n 11: [\"#40004b\", \"#762a83\", \"#9970ab\", \"#c2a5cf\", \"#e7d4e8\", \"#f7f7f7\", \"#d9f0d3\", \"#a6dba0\", \"#5aae61\", \"#1b7837\", \"#00441b\"]\n }, PiYG: {\n 3: [\"#e9a3c9\", \"#f7f7f7\", \"#a1d76a\"],\n 4: [\"#d01c8b\", \"#f1b6da\", \"#b8e186\", \"#4dac26\"],\n 5: [\"#d01c8b\", \"#f1b6da\", \"#f7f7f7\", \"#b8e186\", \"#4dac26\"],\n 6: [\"#c51b7d\", \"#e9a3c9\", \"#fde0ef\", \"#e6f5d0\", \"#a1d76a\", \"#4d9221\"],\n 7: [\"#c51b7d\", \"#e9a3c9\", \"#fde0ef\", \"#f7f7f7\", \"#e6f5d0\", \"#a1d76a\", \"#4d9221\"],\n 8: [\"#c51b7d\", \"#de77ae\", \"#f1b6da\", \"#fde0ef\", \"#e6f5d0\", \"#b8e186\", \"#7fbc41\", \"#4d9221\"],\n 9: [\"#c51b7d\", \"#de77ae\", \"#f1b6da\", \"#fde0ef\", \"#f7f7f7\", \"#e6f5d0\", \"#b8e186\", \"#7fbc41\", \"#4d9221\"],\n 10: [\"#8e0152\", \"#c51b7d\", \"#de77ae\", \"#f1b6da\", \"#fde0ef\", \"#e6f5d0\", \"#b8e186\", \"#7fbc41\", \"#4d9221\", \"#276419\"],\n 11: [\"#8e0152\", \"#c51b7d\", \"#de77ae\", \"#f1b6da\", \"#fde0ef\", \"#f7f7f7\", \"#e6f5d0\", \"#b8e186\", \"#7fbc41\", \"#4d9221\", \"#276419\"]\n }, RdBu: {\n 3: [\"#ef8a62\", \"#f7f7f7\", \"#67a9cf\"],\n 4: [\"#ca0020\", \"#f4a582\", \"#92c5de\", \"#0571b0\"],\n 5: [\"#ca0020\", \"#f4a582\", \"#f7f7f7\", \"#92c5de\", \"#0571b0\"],\n 6: [\"#b2182b\", \"#ef8a62\", \"#fddbc7\", \"#d1e5f0\", \"#67a9cf\", \"#2166ac\"],\n 7: [\"#b2182b\", \"#ef8a62\", \"#fddbc7\", \"#f7f7f7\", \"#d1e5f0\", \"#67a9cf\", \"#2166ac\"],\n 8: [\"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#d1e5f0\", \"#92c5de\", \"#4393c3\", \"#2166ac\"],\n 9: [\"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#f7f7f7\", \"#d1e5f0\", \"#92c5de\", \"#4393c3\", \"#2166ac\"],\n 10: [\"#67001f\", \"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#d1e5f0\", \"#92c5de\", \"#4393c3\", \"#2166ac\", \"#053061\"],\n 11: [\"#67001f\", \"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#f7f7f7\", \"#d1e5f0\", \"#92c5de\", \"#4393c3\", \"#2166ac\", \"#053061\"]\n }, RdGy: {\n 3: [\"#ef8a62\", \"#ffffff\", \"#999999\"],\n 4: [\"#ca0020\", \"#f4a582\", \"#bababa\", \"#404040\"],\n 5: [\"#ca0020\", \"#f4a582\", \"#ffffff\", \"#bababa\", \"#404040\"],\n 6: [\"#b2182b\", \"#ef8a62\", \"#fddbc7\", \"#e0e0e0\", \"#999999\", \"#4d4d4d\"],\n 7: [\"#b2182b\", \"#ef8a62\", \"#fddbc7\", \"#ffffff\", \"#e0e0e0\", \"#999999\", \"#4d4d4d\"],\n 8: [\"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#e0e0e0\", \"#bababa\", \"#878787\", \"#4d4d4d\"],\n 9: [\"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#ffffff\", \"#e0e0e0\", \"#bababa\", \"#878787\", \"#4d4d4d\"],\n 10: [\"#67001f\", \"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#e0e0e0\", \"#bababa\", \"#878787\", \"#4d4d4d\", \"#1a1a1a\"],\n 11: [\"#67001f\", \"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#ffffff\", \"#e0e0e0\", \"#bababa\", \"#878787\", \"#4d4d4d\", \"#1a1a1a\"]\n }, RdYlBu: {\n 3: [\"#fc8d59\", \"#ffffbf\", \"#91bfdb\"],\n 4: [\"#d7191c\", \"#fdae61\", \"#abd9e9\", \"#2c7bb6\"],\n 5: [\"#d7191c\", \"#fdae61\", \"#ffffbf\", \"#abd9e9\", \"#2c7bb6\"],\n 6: [\"#d73027\", \"#fc8d59\", \"#fee090\", \"#e0f3f8\", \"#91bfdb\", \"#4575b4\"],\n 7: [\"#d73027\", \"#fc8d59\", \"#fee090\", \"#ffffbf\", \"#e0f3f8\", \"#91bfdb\", \"#4575b4\"],\n 8: [\"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee090\", \"#e0f3f8\", \"#abd9e9\", \"#74add1\", \"#4575b4\"],\n 9: [\"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee090\", \"#ffffbf\", \"#e0f3f8\", \"#abd9e9\", \"#74add1\", \"#4575b4\"],\n 10: [\"#a50026\", \"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee090\", \"#e0f3f8\", \"#abd9e9\", \"#74add1\", \"#4575b4\", \"#313695\"],\n 11: [\"#a50026\", \"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee090\", \"#ffffbf\", \"#e0f3f8\", \"#abd9e9\", \"#74add1\", \"#4575b4\", \"#313695\"]\n }, Spectral: {\n 3: [\"#fc8d59\", \"#ffffbf\", \"#99d594\"],\n 4: [\"#d7191c\", \"#fdae61\", \"#abdda4\", \"#2b83ba\"],\n 5: [\"#d7191c\", \"#fdae61\", \"#ffffbf\", \"#abdda4\", \"#2b83ba\"],\n 6: [\"#d53e4f\", \"#fc8d59\", \"#fee08b\", \"#e6f598\", \"#99d594\", \"#3288bd\"],\n 7: [\"#d53e4f\", \"#fc8d59\", \"#fee08b\", \"#ffffbf\", \"#e6f598\", \"#99d594\", \"#3288bd\"],\n 8: [\"#d53e4f\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#e6f598\", \"#abdda4\", \"#66c2a5\", \"#3288bd\"],\n 9: [\"#d53e4f\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#ffffbf\", \"#e6f598\", \"#abdda4\", \"#66c2a5\", \"#3288bd\"],\n 10: [\"#9e0142\", \"#d53e4f\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#e6f598\", \"#abdda4\", \"#66c2a5\", \"#3288bd\", \"#5e4fa2\"],\n 11: [\"#9e0142\", \"#d53e4f\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#ffffbf\", \"#e6f598\", \"#abdda4\", \"#66c2a5\", \"#3288bd\", \"#5e4fa2\"]\n }, RdYlGn: {\n 3: [\"#fc8d59\", \"#ffffbf\", \"#91cf60\"],\n 4: [\"#d7191c\", \"#fdae61\", \"#a6d96a\", \"#1a9641\"],\n 5: [\"#d7191c\", \"#fdae61\", \"#ffffbf\", \"#a6d96a\", \"#1a9641\"],\n 6: [\"#d73027\", \"#fc8d59\", \"#fee08b\", \"#d9ef8b\", \"#91cf60\", \"#1a9850\"],\n 7: [\"#d73027\", \"#fc8d59\", \"#fee08b\", \"#ffffbf\", \"#d9ef8b\", \"#91cf60\", \"#1a9850\"],\n 8: [\"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#d9ef8b\", \"#a6d96a\", \"#66bd63\", \"#1a9850\"],\n 9: [\"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#ffffbf\", \"#d9ef8b\", \"#a6d96a\", \"#66bd63\", \"#1a9850\"],\n 10: [\"#a50026\", \"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#d9ef8b\", \"#a6d96a\", \"#66bd63\", \"#1a9850\", \"#006837\"],\n 11: [\"#a50026\", \"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#ffffbf\", \"#d9ef8b\", \"#a6d96a\", \"#66bd63\", \"#1a9850\", \"#006837\"]\n }, Accent: {\n 3: [\"#7fc97f\", \"#beaed4\", \"#fdc086\"],\n 4: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\"],\n 5: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\", \"#386cb0\"],\n 6: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\", \"#386cb0\", \"#f0027f\"],\n 7: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\", \"#386cb0\", \"#f0027f\", \"#bf5b17\"],\n 8: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\", \"#386cb0\", \"#f0027f\", \"#bf5b17\", \"#666666\"]\n }, Dark2: {\n 3: [\"#1b9e77\", \"#d95f02\", \"#7570b3\"],\n 4: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\"],\n 5: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\", \"#66a61e\"],\n 6: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\", \"#66a61e\", \"#e6ab02\"],\n 7: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\", \"#66a61e\", \"#e6ab02\", \"#a6761d\"],\n 8: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\", \"#66a61e\", \"#e6ab02\", \"#a6761d\", \"#666666\"]\n }, Paired: {\n 3: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\"],\n 4: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\"],\n 5: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\"],\n 6: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\"],\n 7: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\"],\n 8: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\"],\n 9: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\"],\n 10: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\", \"#6a3d9a\"],\n 11: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\", \"#6a3d9a\", \"#ffff99\"],\n 12: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\", \"#6a3d9a\", \"#ffff99\", \"#b15928\"]\n }, Pastel1: {\n 3: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\"],\n 4: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\"],\n 5: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\"],\n 6: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\", \"#ffffcc\"],\n 7: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\", \"#ffffcc\", \"#e5d8bd\"],\n 8: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\", \"#ffffcc\", \"#e5d8bd\", \"#fddaec\"],\n 9: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\", \"#ffffcc\", \"#e5d8bd\", \"#fddaec\", \"#f2f2f2\"]\n }, Pastel2: {\n 3: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\"],\n 4: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\"],\n 5: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\", \"#e6f5c9\"],\n 6: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\", \"#e6f5c9\", \"#fff2ae\"],\n 7: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\", \"#e6f5c9\", \"#fff2ae\", \"#f1e2cc\"],\n 8: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\", \"#e6f5c9\", \"#fff2ae\", \"#f1e2cc\", \"#cccccc\"]\n }, Set1: {\n 3: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\"],\n 4: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\"],\n 5: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\"],\n 6: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\", \"#ffff33\"],\n 7: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\", \"#ffff33\", \"#a65628\"],\n 8: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\", \"#ffff33\", \"#a65628\", \"#f781bf\"],\n 9: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\", \"#ffff33\", \"#a65628\", \"#f781bf\", \"#999999\"]\n }, Set2: {\n 3: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\"],\n 4: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\"],\n 5: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\", \"#a6d854\"],\n 6: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\", \"#a6d854\", \"#ffd92f\"],\n 7: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\", \"#a6d854\", \"#ffd92f\", \"#e5c494\"],\n 8: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\", \"#a6d854\", \"#ffd92f\", \"#e5c494\", \"#b3b3b3\"]\n }, Set3: {\n 3: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\"],\n 4: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\"],\n 5: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\"],\n 6: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\"],\n 7: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\"],\n 8: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\"],\n 9: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\"],\n 10: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\", \"#bc80bd\"],\n 11: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\", \"#bc80bd\", \"#ccebc5\"],\n 12: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\", \"#bc80bd\", \"#ccebc5\", \"#ffed6f\"]\n }\n};\n\nexport { index as default };\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal(range) {\n var index = map(),\n domain = [],\n unknown = implicit;\n\n range = range == null ? [] : slice.call(range);\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band()\n .domain(domain())\n .range(range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return rescale();\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band().paddingInner(1));\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function deinterpolateLinear(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(b);\n}\n\nfunction deinterpolateClamp(deinterpolate) {\n return function(a, b) {\n var d = deinterpolate(a = +a, b = +b);\n return function(x) { return x <= a ? 0 : x >= b ? 1 : d(x); };\n };\n}\n\nfunction reinterpolateClamp(reinterpolate) {\n return function(a, b) {\n var r = reinterpolate(a = +a, b = +b);\n return function(t) { return t <= 0 ? a : t >= 1 ? b : r(t); };\n };\n}\n\nfunction bimap(domain, range, deinterpolate, reinterpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);\n else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, deinterpolate, reinterpolate) {\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] = deinterpolate(domain[i], domain[i + 1]);\n r[i] = reinterpolate(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}\n\n// deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].\nexport default function continuous(deinterpolate, reinterpolate) {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n clamp = false,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return (output || (output = piecewise(domain, range, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate)))(+x);\n }\n\n scale.invert = function(y) {\n return (input || (input = piecewise(range, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, rescale()) : clamp;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n return rescale();\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(domain, count, specifier) {\n var start = domain[0],\n stop = domain[domain.length - 1],\n step = tickStep(start, stop, count == null ? 10 : 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 {interpolateNumber as reinterpolate} from \"d3-interpolate\";\nimport {default as continuous, copy, deinterpolateLinear as deinterpolate} from \"./continuous\";\nimport tickFormat from \"./tickFormat\";\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 return tickFormat(domain(), count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(deinterpolate, reinterpolate);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n return linearish(scale);\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity() {\n var domain = [0, 1];\n\n function scale(x) {\n return +x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.copy = function() {\n return identity().domain(domain);\n };\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport constant from \"./constant\";\nimport nice from \"./nice\";\nimport {default as continuous, copy} from \"./continuous\";\n\nfunction deinterpolate(a, b) {\n return (b = Math.log(b / a))\n ? function(x) { return Math.log(x / a) / b; }\n : constant(b);\n}\n\nfunction reinterpolate(a, b) {\n return a < 0\n ? function(t) { return -Math.pow(-b, t) * Math.pow(-a, 1 - t); }\n : function(t) { return Math.pow(b, t) * Math.pow(a, 1 - t); };\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport default function log() {\n var scale = continuous(deinterpolate, reinterpolate).domain([1, 10]),\n domain = scale.domain,\n base = 10,\n logs = logp(10),\n pows = powp(10);\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows);\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n scale.copy = function() {\n return copy(scale, log().base(base));\n };\n\n return scale;\n}\n","import constant from \"./constant\";\nimport {linearish} from \"./linear\";\nimport {default as continuous, copy} from \"./continuous\";\n\nfunction raise(x, exponent) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n}\n\nexport default function pow() {\n var exponent = 1,\n scale = continuous(deinterpolate, reinterpolate),\n domain = scale.domain;\n\n function deinterpolate(a, b) {\n return (b = raise(b, exponent) - (a = raise(a, exponent)))\n ? function(x) { return (raise(x, exponent) - a) / b; }\n : constant(b);\n }\n\n function reinterpolate(a, b) {\n b = raise(b, exponent) - (a = raise(a, exponent));\n return function(t) { return raise(a + b * t, 1 / exponent); };\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, domain(domain())) : exponent;\n };\n\n scale.copy = function() {\n return copy(scale, pow().exponent(exponent));\n };\n\n return linearish(scale);\n}\n\nexport function sqrt() {\n return pow().exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [];\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n if (!isNaN(x = +x)) return range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range);\n };\n\n return scale;\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1];\n\n function scale(x) {\n if (x <= x) return range[bisect(domain, x, 0, n)];\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range);\n };\n\n return linearish(scale);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n n = 1;\n\n function scale(x) {\n if (x <= x) return range[bisect(domain, x, 0, n)];\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range);\n };\n\n return scale;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {interpolateNumber as reinterpolate} from \"d3-interpolate\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport {default as continuous, copy, deinterpolateLinear as deinterpolate} from \"./continuous\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(deinterpolate, reinterpolate),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);\n}\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\n\nexport default function() {\n return calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]);\n}\n","export default function(s) {\n return s.match(/.{6}/g).map(function(x) {\n return \"#\" + x;\n });\n}\n","import colors from \"./colors\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"./colors\";\n\nexport default colors(\"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6\");\n","import colors from \"./colors\";\n\nexport default colors(\"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9\");\n","import colors from \"./colors\";\n\nexport default colors(\"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5\");\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar rainbow = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n rainbow.h = 360 * t - 100;\n rainbow.s = 1.5 - 1.5 * ts;\n rainbow.l = 0.8 - 0.9 * ts;\n return rainbow + \"\";\n}\n","import colors from \"./colors\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","import {linearish} from \"./linear\";\n\nexport default function sequential(interpolator) {\n var x0 = 0,\n x1 = 1,\n clamp = false;\n\n function scale(x) {\n var t = (x - x0) / (x1 - x0);\n return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequential(interpolator).domain([x0, x1]).clamp(clamp);\n };\n\n return linearish(scale);\n}\n","import * as _colorbrewer from \"colorbrewer\";\nimport { values as d3Values } from \"d3-collection\";\nimport { rgb as d3RGB } from \"d3-color\";\nimport { interpolateLab as d3InterpolateLab } from \"d3-interpolate\";\nimport { interpolateInferno as d3InterpolateInferno, interpolateMagma as d3InterpolateMagma, interpolatePlasma as d3InterpolatePlasma, interpolateViridis as d3InterpolateViridis, scaleLinear as d3ScaleLinear, scaleOrdinal as d3ScaleOrdinal, scaleQuantize as d3ScaleQuantize, scaleSequential as d3ScaleSequential, schemeCategory10 as d3SchemeCategory10, schemeCategory20 as d3SchemeCategory20, schemeCategory20b as d3SchemeCategory20b, schemeCategory20c as d3SchemeCategory20c } from \"d3-scale\";\nimport { select as d3Select } from \"d3-selection\";\n\nconst d3Schemes = {\n category10: d3SchemeCategory10,\n category20: d3SchemeCategory20,\n category20b: d3SchemeCategory20b,\n category20c: d3SchemeCategory20c\n};\n\nconst m_colorbrewer = _colorbrewer.default || _colorbrewer;\n\nconst m_d3 = {\n Viridis: d3InterpolateViridis,\n Magma: d3InterpolateMagma,\n Inferno: d3InterpolateInferno,\n Plasma: d3InterpolatePlasma\n};\n\nconst d3Ordinal = [\n \"category10\", \"category20\", \"category20b\", \"category20c\"\n];\n\nconst brewerOrdinal = [\n \"Accent\", \"Dark2\", \"Paired\", \"Pastel1\", \"Pastel2\", \"Set1\", \"Set2\", \"Set3\"\n];\n\nconst hpccOrdinal = [\n \"hpcc10\", \"hpcc20\"\n];\n\n// These color schemes are from www.flatuicolors.com\nconst flatuiSchemes = {\n FlatUI_default: [\"rgb(26, 188, 156)\", \"rgb(46, 204, 113)\", \"rgb(52, 152, 219)\", \"rgb(155, 89, 182)\", \"rgb(52, 73, 94)\", \"rgb(22, 160, 133)\", \"rgb(39, 174, 96)\", \"rgb(41, 128, 185)\", \"rgb(142, 68, 173)\", \"rgb(44, 62, 80)\", \"rgb(241, 196, 15)\", \"rgb(230, 126, 34)\", \"rgb(231, 76, 60)\", \"rgb(236, 240, 241)\", \"rgb(149, 165, 166)\", \"rgb(243, 156, 18)\", \"rgb(211, 84, 0)\", \"rgb(192, 57, 43)\", \"rgb(189, 195, 199)\", \"rgb(127, 140, 141)\"],\n FlatUI_American: [\"rgb(85, 239, 196)\", \"rgb(129, 236, 236)\", \"rgb(116, 185, 255)\", \"rgb(162, 155, 254)\", \"rgb(223, 230, 233)\", \"rgb(0, 184, 148)\", \"rgb(0, 206, 201)\", \"rgb(9, 132, 227)\", \"rgb(108, 92, 231)\", \"rgb(178, 190, 195)\", \"rgb(255, 234, 167)\", \"rgb(250, 177, 160)\", \"rgb(255, 118, 117)\", \"rgb(253, 121, 168)\", \"rgb(99, 110, 114)\", \"rgb(253, 203, 110)\", \"rgb(225, 112, 85)\", \"rgb(214, 48, 49)\", \"rgb(232, 67, 147)\", \"rgb(45, 52, 54)\"],\n FlatUI_Aussie: [\"rgb(246, 229, 141)\", \"rgb(255, 190, 118)\", \"rgb(255, 121, 121)\", \"rgb(186, 220, 88)\", \"rgb(223, 249, 251)\", \"rgb(249, 202, 36)\", \"rgb(240, 147, 43)\", \"rgb(235, 77, 75)\", \"rgb(106, 176, 76)\", \"rgb(199, 236, 238)\", \"rgb(126, 214, 223)\", \"rgb(224, 86, 253)\", \"rgb(104, 109, 224)\", \"rgb(48, 51, 107)\", \"rgb(149, 175, 192)\", \"rgb(34, 166, 179)\", \"rgb(190, 46, 221)\", \"rgb(72, 52, 212)\", \"rgb(19, 15, 64)\", \"rgb(83, 92, 104)\"],\n FlatUI_British: [\"rgb(0, 168, 255)\", \"rgb(156, 136, 255)\", \"rgb(251, 197, 49)\", \"rgb(76, 209, 55)\", \"rgb(72, 126, 176)\", \"rgb(0, 151, 230)\", \"rgb(140, 122, 230)\", \"rgb(225, 177, 44)\", \"rgb(68, 189, 50)\", \"rgb(64, 115, 158)\", \"rgb(232, 65, 24)\", \"rgb(245, 246, 250)\", \"rgb(127, 143, 166)\", \"rgb(39, 60, 117)\", \"rgb(53, 59, 72)\", \"rgb(194, 54, 22)\", \"rgb(220, 221, 225)\", \"rgb(113, 128, 147)\", \"rgb(25, 42, 86)\", \"rgb(47, 54, 64)\"],\n FlatUI_Canadian: [\"rgb(255, 159, 243)\", \"rgb(254, 202, 87)\", \"rgb(255, 107, 107)\", \"rgb(72, 219, 251)\", \"rgb(29, 209, 161)\", \"rgb(243, 104, 224)\", \"rgb(255, 159, 67)\", \"rgb(238, 82, 83)\", \"rgb(10, 189, 227)\", \"rgb(16, 172, 132)\", \"rgb(0, 210, 211)\", \"rgb(84, 160, 255)\", \"rgb(95, 39, 205)\", \"rgb(200, 214, 229)\", \"rgb(87, 101, 116)\", \"rgb(1, 163, 164)\", \"rgb(46, 134, 222)\", \"rgb(52, 31, 151)\", \"rgb(131, 149, 167)\", \"rgb(34, 47, 62)\"],\n FlatUI_Chinese: [\"rgb(236, 204, 104)\", \"rgb(255, 127, 80)\", \"rgb(255, 107, 129)\", \"rgb(164, 176, 190)\", \"rgb(87, 96, 111)\", \"rgb(255, 165, 2)\", \"rgb(255, 99, 72)\", \"rgb(255, 71, 87)\", \"rgb(116, 125, 140)\", \"rgb(47, 53, 66)\", \"rgb(123, 237, 159)\", \"rgb(112, 161, 255)\", \"rgb(83, 82, 237)\", \"rgb(255, 255, 255)\", \"rgb(223, 228, 234)\", \"rgb(46, 213, 115)\", \"rgb(30, 144, 255)\", \"rgb(55, 66, 250)\", \"rgb(241, 242, 246)\", \"rgb(206, 214, 224)\"],\n FlatUI_Dutch: [\"rgb(255, 195, 18)\", \"rgb(196, 229, 56)\", \"rgb(18, 203, 196)\", \"rgb(253, 167, 223)\", \"rgb(237, 76, 103)\", \"rgb(247, 159, 31)\", \"rgb(163, 203, 56)\", \"rgb(18, 137, 167)\", \"rgb(217, 128, 250)\", \"rgb(181, 52, 113)\", \"rgb(238, 90, 36)\", \"rgb(0, 148, 50)\", \"rgb(6, 82, 221)\", \"rgb(153, 128, 250)\", \"rgb(131, 52, 113)\", \"rgb(234, 32, 39)\", \"rgb(0, 98, 102)\", \"rgb(27, 20, 100)\", \"rgb(87, 88, 187)\", \"rgb(111, 30, 81)\"],\n FlatUI_French: [\"rgb(250, 211, 144)\", \"rgb(248, 194, 145)\", \"rgb(106, 137, 204)\", \"rgb(130, 204, 221)\", \"rgb(184, 233, 148)\", \"rgb(246, 185, 59)\", \"rgb(229, 80, 57)\", \"rgb(74, 105, 189)\", \"rgb(96, 163, 188)\", \"rgb(120, 224, 143)\", \"rgb(250, 152, 58)\", \"rgb(235, 47, 6)\", \"rgb(30, 55, 153)\", \"rgb(60, 99, 130)\", \"rgb(56, 173, 169)\", \"rgb(229, 142, 38)\", \"rgb(183, 21, 64)\", \"rgb(12, 36, 97)\", \"rgb(10, 61, 98)\", \"rgb(7, 153, 146)\"],\n FlatUI_German: [\"rgb(252, 92, 101)\", \"rgb(253, 150, 68)\", \"rgb(254, 211, 48)\", \"rgb(38, 222, 129)\", \"rgb(43, 203, 186)\", \"rgb(235, 59, 90)\", \"rgb(250, 130, 49)\", \"rgb(247, 183, 49)\", \"rgb(32, 191, 107)\", \"rgb(15, 185, 177)\", \"rgb(69, 170, 242)\", \"rgb(75, 123, 236)\", \"rgb(165, 94, 234)\", \"rgb(209, 216, 224)\", \"rgb(119, 140, 163)\", \"rgb(45, 152, 218)\", \"rgb(56, 103, 214)\", \"rgb(136, 84, 208)\", \"rgb(165, 177, 194)\", \"rgb(75, 101, 132)\"],\n FlatUI_Indian: [\"rgb(254, 164, 127)\", \"rgb(37, 204, 247)\", \"rgb(234, 181, 67)\", \"rgb(85, 230, 193)\", \"rgb(202, 211, 200)\", \"rgb(249, 127, 81)\", \"rgb(27, 156, 252)\", \"rgb(248, 239, 186)\", \"rgb(88, 177, 159)\", \"rgb(44, 58, 71)\", \"rgb(179, 55, 113)\", \"rgb(59, 59, 152)\", \"rgb(253, 114, 114)\", \"rgb(154, 236, 219)\", \"rgb(214, 162, 232)\", \"rgb(109, 33, 79)\", \"rgb(24, 44, 97)\", \"rgb(252, 66, 123)\", \"rgb(189, 197, 129)\", \"rgb(130, 88, 159)\"],\n FlatUI_Russian: [\"rgb(243, 166, 131)\", \"rgb(247, 215, 148)\", \"rgb(119, 139, 235)\", \"rgb(231, 127, 103)\", \"rgb(207, 106, 135)\", \"rgb(241, 144, 102)\", \"rgb(245, 205, 121)\", \"rgb(84, 109, 229)\", \"rgb(225, 95, 65)\", \"rgb(196, 69, 105)\", \"rgb(120, 111, 166)\", \"rgb(248, 165, 194)\", \"rgb(99, 205, 218)\", \"rgb(234, 134, 133)\", \"rgb(89, 98, 117)\", \"rgb(87, 75, 144)\", \"rgb(247, 143, 179)\", \"rgb(61, 193, 211)\", \"rgb(230, 103, 103)\", \"rgb(48, 57, 82)\"],\n FlatUI_Spanish: [\"rgb(64, 64, 122)\", \"rgb(112, 111, 211)\", \"rgb(247, 241, 227)\", \"rgb(52, 172, 224)\", \"rgb(51, 217, 178)\", \"rgb(44, 44, 84)\", \"rgb(71, 71, 135)\", \"rgb(170, 166, 157)\", \"rgb(34, 112, 147)\", \"rgb(33, 140, 116)\", \"rgb(255, 82, 82)\", \"rgb(255, 121, 63)\", \"rgb(209, 204, 192)\", \"rgb(255, 177, 66)\", \"rgb(255, 218, 121)\", \"rgb(179, 57, 57)\", \"rgb(205, 97, 51)\", \"rgb(132, 129, 122)\", \"rgb(204, 142, 53)\", \"rgb(204, 174, 98)\"],\n FlatUI_Swedish: [\"rgb(239, 87, 119)\", \"rgb(87, 95, 207)\", \"rgb(75, 207, 250)\", \"rgb(52, 231, 228)\", \"rgb(11, 232, 129)\", \"rgb(245, 59, 87)\", \"rgb(60, 64, 198)\", \"rgb(15, 188, 249)\", \"rgb(0, 216, 214)\", \"rgb(5, 196, 107)\", \"rgb(255, 192, 72)\", \"rgb(255, 221, 89)\", \"rgb(255, 94, 87)\", \"rgb(210, 218, 226)\", \"rgb(72, 84, 96)\", \"rgb(255, 168, 1)\", \"rgb(255, 211, 42)\", \"rgb(255, 63, 52)\", \"rgb(128, 142, 155)\", \"rgb(30, 39, 46)\"],\n FlatUI_Turkish: [\"rgb(205, 132, 241)\", \"rgb(255, 204, 204)\", \"rgb(255, 77, 77)\", \"rgb(255, 175, 64)\", \"rgb(255, 250, 101)\", \"rgb(197, 108, 240)\", \"rgb(255, 184, 184)\", \"rgb(255, 56, 56)\", \"rgb(255, 159, 26)\", \"rgb(255, 242, 0)\", \"rgb(50, 255, 126)\", \"rgb(126, 255, 245)\", \"rgb(24, 220, 255)\", \"rgb(125, 95, 255)\", \"rgb(75, 75, 75)\", \"rgb(58, 227, 116)\", \"rgb(103, 230, 220)\", \"rgb(23, 192, 235)\", \"rgb(113, 88, 226)\", \"rgb(61, 61, 61)\"]\n};\nconst flatuiOrdinal = Object.keys(flatuiSchemes);\n\nconst ordinalCache = {};\n\nexport interface PaletteFunc {\n switch(id?: string, colors?: string[]);\n type(): \"ordinal\" | \"rainbow\";\n}\n\nexport interface OrdinalPaletteFunc extends PaletteFunc {\n (label: string): string;\n}\nexport function fetchOrdinalItem(): string[];\nexport function fetchOrdinalItem(id: string, colors?: string[]): OrdinalPaletteFunc;\nexport function fetchOrdinalItem(id?: string, colors?: string[]): string[] | OrdinalPaletteFunc {\n if (!id) return palette_ordinal();\n let retVal = ordinalCache[id];\n if (!retVal) {\n retVal = palette_ordinal(id, colors);\n ordinalCache[id] = retVal;\n }\n return retVal;\n}\n\nfunction palette_ordinal(id?, colors?): any {\n if (!id) return [\"default\"].concat(d3Ordinal.concat(brewerOrdinal).concat(hpccOrdinal).concat(flatuiOrdinal));\n let scale = null;\n\n if (colors) {\n scale = d3ScaleOrdinal().range(colors);\n } else {\n if (d3Ordinal.indexOf(id) >= 0) {\n scale = d3ScaleOrdinal(d3Schemes[id]);\n } else if (flatuiOrdinal.indexOf(id) >= 0) {\n scale = d3ScaleOrdinal().range(flatuiSchemes[id]);\n } else if (hpccOrdinal.indexOf(id) >= 0) {\n let newColors = [];\n switch (id) {\n case \"hpcc10\":\n const defColors = palette_ordinal(\"default\").colors();\n newColors = defColors.filter(function (_item, idx) {\n if (idx % 2) {\n return true;\n }\n return false;\n });\n break;\n case \"hpcc20\":\n newColors = palette_ordinal(\"category10\").colors().concat(palette_ordinal(\"hpcc10\").colors());\n break;\n }\n scale = d3ScaleOrdinal().range(newColors);\n } else if (brewerOrdinal.indexOf(id) >= 0) {\n let largestPalette = 12;\n while (largestPalette > 0) {\n if (m_colorbrewer[id][largestPalette]) {\n scale = d3ScaleOrdinal().range(m_colorbrewer[id][largestPalette]);\n break;\n }\n --largestPalette;\n }\n }\n if (!scale) {\n // Default to Category20 ---\n scale = d3ScaleOrdinal(d3SchemeCategory20);\n }\n colors = scale.range();\n }\n const ordinal: any = function (_) {\n return scale(_);\n };\n ordinal.type = function () {\n return \"ordinal\";\n };\n ordinal.id = function (_?) {\n if (!arguments.length) return id;\n id = _;\n return ordinal;\n };\n ordinal.colors = function (_?) {\n if (!arguments.length) return colors;\n colors = _;\n return ordinal;\n };\n ordinal.clone = function (newID) {\n ordinalCache[newID] = palette_ordinal(newID, this.colors());\n return ordinalCache[newID];\n\n };\n ordinal.cloneNotExists = function (newID) {\n if (ordinalCache[newID]) {\n return ordinalCache[newID];\n }\n return this.clone(newID);\n };\n ordinal.switch = function (_id?, _colors?) {\n if (id === _id) {\n return this;\n }\n return arguments.length ? fetchOrdinalItem(_id, _colors) : fetchOrdinalItem();\n };\n\n return ordinal;\n}\n\nconst rainbowCache = {};\nexport interface RainbowPaletteFunc extends PaletteFunc {\n (value: number, domainLow: number, domainHigh: number): string;\n}\nexport function fetchRainbowItem(): string[];\nexport function fetchRainbowItem(id: string): RainbowPaletteFunc;\nexport function fetchRainbowItem(id: string, colors: string[], steps?: number): RainbowPaletteFunc;\nexport function fetchRainbowItem(id?: string, colors?: string[], steps?: number): string[] | RainbowPaletteFunc {\n if (!id) return palette_rainbow();\n let retVal = rainbowCache[id];\n if (!retVal) {\n retVal = palette_rainbow(id, colors, steps);\n rainbowCache[id] = retVal;\n }\n return retVal;\n}\n\nfunction palette_rainbow(id?, _colors?, _steps?) {\n if (!arguments.length) {\n const retVal = [\"default\"];\n for (const key in m_colorbrewer) {\n if (brewerOrdinal.indexOf(key) === -1) {\n retVal.push(key);\n }\n }\n return retVal;\n }\n\n let scale = null;\n let colors = _colors;\n\n const _custom = function (colors, steps?) {\n steps = steps || 32;\n const subPaletteSize = Math.ceil(steps / (colors.length - 1));\n const range = [];\n let prevColor = null;\n colors.forEach(function (color) {\n if (prevColor) {\n const scale = d3ScaleLinear()\n .domain([0, subPaletteSize])\n .range([prevColor, color])\n .interpolate(d3InterpolateLab as any)\n ;\n for (let i = 0; i < subPaletteSize; ++i) {\n range.push(scale(i));\n }\n }\n prevColor = color;\n });\n scale = d3ScaleQuantize().domain([0, 100]).range(range);\n return scale;\n };\n\n if (_colors) {\n scale = _custom(_colors, _steps);\n } else {\n if (m_colorbrewer[id]) {\n let largestPalette = 12;\n while (largestPalette > 0) {\n if (m_colorbrewer[id][largestPalette]) {\n scale = _custom(m_colorbrewer[id][largestPalette]);\n break;\n }\n --largestPalette;\n }\n }\n if (m_d3[id]) {\n scale = d3ScaleSequential(m_d3[id]).domain([0, 100]);\n }\n if (!scale) {\n scale = _custom(m_colorbrewer.RdYlGn[11]);\n }\n colors = scale.range ? scale.range() : scale;\n\n }\n const rainbow: any = function (x, low, high) {\n if (low === high) {\n return scale.domain([low - 1, high + 1])(x);\n }\n return scale.domain([low, high])(x);\n };\n rainbow.type = function () {\n return \"rainbow\";\n };\n rainbow.id = function (_?) {\n if (!arguments.length) return id;\n id = _;\n return rainbow;\n };\n rainbow.colors = function (_?) {\n if (!arguments.length) return colors;\n colors = _;\n return rainbow;\n };\n rainbow.clone = function (newID) {\n rainbowCache[newID] = palette_rainbow(newID, this.colors());\n return rainbowCache[newID];\n };\n rainbow.cloneNotExists = function (newID) {\n if (rainbowCache[newID]) {\n return rainbowCache[newID];\n }\n return this.clone(newID);\n };\n rainbow.switch = function (_id?, _colors?) {\n if (id === _id) {\n return this;\n }\n return arguments.length ? fetchRainbowItem(_id, _colors) : fetchRainbowItem();\n };\n\n return rainbow;\n}\n\nexport function test(ordinalDivID, brewerDivID, customDivID, customArr, steps) {\n d3Select(ordinalDivID)\n .selectAll(\".palette\")\n .data(palette_ordinal(), function (d: any) { return d; })\n .enter().append(\"span\")\n .attr(\"class\", \"palette\")\n .attr(\"title\", function (d: any) { return d; })\n .on(\"click\", function (d: any) {\n console.info(d3Values(d.value).map(JSON.stringify as any).join(\"\\n\"));\n })\n .selectAll(\".swatch\").data(function (d) { return palette_ordinal(d).colors(); })\n .enter().append(\"span\")\n .attr(\"class\", \"swatch\")\n .style(\"background-color\", function (d: any) { return d; });\n\n d3Select(brewerDivID)\n .selectAll(\".palette\")\n .data(palette_rainbow(), function (d: any) { return d; })\n .enter().append(\"span\")\n .attr(\"class\", \"palette\")\n .attr(\"title\", function (d: any) { return d; })\n .on(\"click\", function (d: any) {\n console.info(d3Values(d.value).map(JSON.stringify as any).join(\"\\n\"));\n })\n .selectAll(\".swatch2\").data(function (d) { return palette_rainbow(d).colors(); })\n .enter().append(\"span\")\n .attr(\"class\", \"swatch2\")\n .style(\"height\", (256 / 32) + \"px\")\n .style(\"background-color\", function (d: any) { return d; });\n\n const palette = { id: customArr.join(\"_\") + steps, scale: palette_rainbow(\"custom\", customArr, steps) };\n d3Select(customDivID)\n .selectAll(\".palette\")\n .data([palette], function (d: any) { return d.id; })\n .enter().append(\"span\")\n .attr(\"class\", \"palette\")\n .attr(\"title\", function () { return \"aaa\"; /*d.from + \"->\" + d.to;*/ })\n .on(\"click\", function (d) {\n console.info(d3Values(d.id).map(JSON.stringify as any).join(\"\\n\"));\n })\n .selectAll(\".swatch2\").data(function () {\n const retVal = [];\n for (let i = 0; i <= 255; ++i) {\n retVal.push(palette.scale(i, 0, 255));\n }\n return retVal;\n })\n .enter().append(\"span\")\n .attr(\"class\", \"swatch2\")\n .style(\"background-color\", function (d) { return d; });\n}\n\nm_colorbrewer.RdWhGr = {\n 3: [\"red\", \"white\", \"green\"]\n};\n\nexport const ordinal = fetchOrdinalItem;\nexport const rainbow = fetchRainbowItem;\nexport function textColor(backgroundColor: string): string {\n let rgb;\n switch (backgroundColor) {\n case \"\":\n case \"transparent\":\n rgb = d3RGB(\"white\");\n break;\n default:\n rgb = d3RGB(backgroundColor);\n }\n return ((rgb.r * 0.299 + rgb.g * 0.587 + rgb.b * 0.114) > 149) ? \"black\" : \"white\";\n}\n","import { select as d3Select } from \"d3-selection\";\nimport { SVGWidget } from \"./SVGWidget.ts\";\n\nimport \"../src/Shape.css\";\n\nexport class Shape extends SVGWidget {\n protected _tooltipElement;\n\n constructor() {\n super();\n }\n\n contains(point) {\n switch (this.shape()) {\n case \"circle\":\n return this.containsCircle(this.radius(), point);\n }\n return SVGWidget.prototype.intersection.apply(this, arguments);\n }\n\n intersection(pointA, pointB) {\n switch (this.shape()) {\n case \"circle\":\n return this.intersectCircle(this.radius(), pointA, pointB);\n }\n return SVGWidget.prototype.intersection.apply(this, arguments);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n delete this._prevHash;\n }\n\n _prevHash;\n update(_domNode, element) {\n const shape = element.selectAll(\"rect,circle,ellipse,path\").data([this.shape()], function (d) { return d; });\n const hash = this.hashSum();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n\n const context = this;\n shape.enter().append(this.getShapeElementTag(this.shape()))\n .attr(\"class\", \"common_Shape\")\n .each(function () {\n const element2 = d3Select(this);\n context._tooltipElement = element2.append(\"title\");\n })\n .on(\"click\", () => {\n this.click();\n })\n .on(\"dblclick\", () => {\n this.dblclick();\n })\n .merge(shape)\n .style(\"fill\", this.colorFill())\n .style(\"stroke\", this.colorStroke())\n .each(function () {\n const element2 = d3Select(this);\n context._tooltipElement.text(context.tooltip());\n switch (context.shape()) {\n case \"circle\":\n const radius = context.radius();\n element2\n .attr(\"r\", radius)\n ;\n break;\n case \"square\":\n const width = Math.max(context.width(), context.height());\n element2\n .attr(\"x\", -width / 2)\n .attr(\"y\", -width / 2)\n .attr(\"rx\", context.cornerRadius())\n .attr(\"ry\", context.cornerRadius())\n .attr(\"width\", width)\n .attr(\"height\", width)\n ;\n break;\n case \"rect\":\n element2\n .attr(\"x\", -context.width() / 2)\n .attr(\"y\", -context.height() / 2)\n .attr(\"rx\", context.cornerRadius())\n .attr(\"ry\", context.cornerRadius())\n .attr(\"width\", context.width())\n .attr(\"height\", context.height())\n ;\n break;\n case \"ellipse\":\n element2\n .attr(\"rx\", context.width() / 2)\n .attr(\"ry\", context.height() / 2)\n ;\n break;\n case \"pin\":\n element2\n .attr(\"d\", context.pinPath())\n ;\n break;\n }\n })\n ;\n shape.exit().remove();\n }\n }\n getShapeElementTag(_shape) {\n switch (_shape) {\n case \"square\":\n return \"rect\";\n case \"pin\":\n return \"path\";\n }\n return _shape;\n }\n pinPath() {\n const radius = this.cornerRadius();\n const arrow_h = this.arrowHeight();\n const arrow_w = this.arrowWidth();\n const width = this.width();\n const height = this.height() - arrow_h;\n const x = 0 - width / 2;\n const y = 0 - height;\n const arrow_b = (width - radius * 2 - arrow_w) / 2;\n return \"M\" + x + \",\" + y +\n \"a\" + -radius + \",\" + -radius + \" 0 0 1 \" + radius + \",\" + -radius +\n \"h\" + (width + -radius * 2) +\n \"a\" + radius + \",\" + radius + \" 0 0 1 \" + radius + \",\" + radius +\n \"v\" + (height + -radius * 2) +\n \"a\" + radius + \",\" + radius + \" 0 0 1 \" + -radius + \",\" + radius +\n \"h\" + -arrow_b +\n \"l\" + -arrow_w / 2 + \",\" + arrow_h +\n \"l\" + -arrow_w / 2 + \",\" + -arrow_h +\n \"h\" + -arrow_b +\n \"a\" + -radius + \",\" + -radius + \" 0 0 1 \" + -radius + \",\" + -radius +\n \"z\";\n }\n\n click() {\n }\n\n dblclick() {\n }\n\n}\nShape.prototype._class += \" common_Shape\";\n\nexport interface Shape {\n shape(): string;\n shape(_: string): this;\n colorStroke(): string;\n colorStroke(_: string): this;\n colorFill(): string;\n colorFill(_: string): this;\n colorFill_exists(): boolean;\n radius(): number;\n radius(_: number): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n arrowHeight(): number;\n arrowHeight(_: number): this;\n arrowWidth(): number;\n arrowWidth(_: number): this;\n tooltip(): string;\n tooltip(_: string): this;\n}\n\nShape.prototype.publish(\"shape\", \"circle\", \"set\", \"Shape Type\", [\"circle\", \"square\", \"rect\", \"ellipse\", \"pin\"], { tags: [\"Private\"] });\nShape.prototype.publish(\"width\", 24, \"number\", \"Width\", null, { tags: [\"Private\"] });\nShape.prototype.publish(\"height\", 24, \"number\", \"Height\", null, { tags: [\"Private\"] });\nShape.prototype.publish(\"colorStroke\", null, \"html-color\", \"Stroke Color\", null, { optional: true });\nShape.prototype.publish(\"colorFill\", null, \"html-color\", \"Fill Color\", null, { optional: true });\nShape.prototype.publish(\"radius\", null, \"number\", \"Radius\", null, { tags: [\"Private\"] });\nShape.prototype.publish(\"cornerRadius\", 3, \"number\", \"cornerRadius\");\nShape.prototype.publish(\"arrowHeight\", 5, \"number\", \"arrowHeight\");\nShape.prototype.publish(\"arrowWidth\", 10, \"number\", \"arrowWidth\");\nShape.prototype.publish(\"tooltip\", \"\", \"string\", \"Tooltip\", null, { tags: [\"Private\"] });\n\nconst _origRadius = Shape.prototype.radius;\nShape.prototype.radius = function (_?) {\n const retVal = _origRadius.apply(this, arguments);\n if (arguments.length) {\n this.width(_);\n this.height(_);\n return retVal;\n }\n return Math.max(this.width(), this.height()) / 2;\n};\n","import { FAChar } from \"./FAChar.ts\";\nimport { textColor } from \"./Palette.ts\";\nimport { Shape } from \"./Shape.ts\";\nimport { SVGWidget } from \"./SVGWidget.ts\";\n\nimport \"../src/Icon.css\";\n\nexport class Icon extends SVGWidget {\n\n protected _shapeWidget;\n protected _faChar;\n protected _defs;\n protected _root;\n protected _tooltipElement;\n\n constructor() {\n super();\n\n this._shapeWidget = new Shape();\n this._faChar = new FAChar();\n }\n\n getBBox(refresh = false, round = false) {\n const diameter = this.diameter();\n return {\n x: - diameter / 2,\n y: - diameter / 2,\n width: diameter,\n height: diameter\n };\n }\n\n contains(point) {\n return this._shapeWidget.contains(point);\n }\n\n intersection(pointA, pointB) {\n return this._shapeWidget.intersection(pointA, pointB);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n delete this._prevHash;\n this._defs = element.append(\"defs\");\n this._defs.append(\"clipPath\")\n .attr(\"id\", \"clip_\" + this.id() + \"_circle\")\n .append(\"circle\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n ;\n this._defs.append(\"clipPath\")\n .attr(\"id\", \"clip_\" + this.id() + \"_square\")\n .append(\"rect\")\n ;\n this._root = element.append(\"g\");\n this._shapeWidget\n .target(this._root.node())\n ;\n this._faChar\n .target(element.node())\n ;\n this._tooltipElement = element.append(\"title\");\n const context = this;\n element\n .on(\"click\", function (el) {\n context.click(el);\n })\n .on(\"dblclick\", function (el) {\n context.dblclick(el);\n })\n ;\n }\n\n click(_domNode) {\n // console.log(\"Clicked the icon\");\n }\n\n dblclick(_domNode) {\n // console.log(\"Double clicked the icon\");\n }\n\n _prevHash;\n update(domNode, element) {\n super.update(domNode, element);\n const hash = this.hashSum();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n\n const diameter = this.diameter();\n const radius = diameter / 2;\n this._defs.select(\"circle\")\n .attr(\"r\", radius)\n ;\n this._defs.select(\"rect\")\n .attr(\"x\", -radius)\n .attr(\"y\", -radius)\n .attr(\"width\", diameter)\n .attr(\"height\", diameter)\n ;\n this._faChar\n .fontSize(diameter * (100 - this.paddingPercent()) / 100)\n .render()\n ;\n this._shapeWidget\n .shape(this.shape())\n .width(diameter)\n .height(diameter)\n .render()\n ;\n const image = this._root.selectAll(\"image\").data(this.imageUrl() ? [this.imageUrl()] : [], function (d) { return d; });\n image.enter()\n .append(\"image\")\n .attr(\"xlink:href\", this.imageUrl())\n .merge(image)\n .attr(\"clip-path\", \"url(#clip_\" + this.id() + \"_\" + this.shape() + \")\")\n .attr(\"x\", -radius)\n .attr(\"y\", -radius)\n .attr(\"width\", diameter)\n .attr(\"height\", diameter)\n ;\n if (this.shape_colorFill_exists() && !this.image_colorFill_exists()) {\n this.image_colorFill(textColor(this.shape_colorFill()));\n }\n image.exit()\n .remove()\n ;\n this._tooltipElement.text(this.tooltip());\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n this._shapeWidget\n .target(null)\n ;\n this._faChar\n .target(null)\n ;\n }\n\n}\nIcon.prototype._class += \" common_Icon\";\n\nexport interface Icon {\n shape(): string;\n shape(_: string): this;\n faChar(): string;\n faChar(_: string): this;\n imageUrl(): string;\n imageUrl(_: string): this;\n image_colorFill(): string;\n image_colorFill(_: string): this;\n image_colorFill_exists(): boolean;\n tooltip(): string;\n tooltip(_: string): this;\n diameter(): number;\n diameter(_: number): this;\n paddingPercent(): number;\n paddingPercent(_: number): this;\n shape_colorFill(): string;\n shape_colorFill(_: string): this;\n shape_colorFill_exists(): boolean;\n shape_colorStroke(): string;\n shape_colorStroke(_: string): this;\n}\n\nIcon.prototype.publish(\"shape\", \"circle\", \"set\", \"Shape Type\", [\"circle\", \"square\"], { tags: [\"Private\"] });\nIcon.prototype.publishProxy(\"faChar\", \"_faChar\", \"char\");\nIcon.prototype.publishProxy(\"fontFamily\", \"_faChar\", \"text_fontFamily\");\nIcon.prototype.publish(\"imageUrl\", null, \"string\", \"Image URL\", null, { optional: true });\nIcon.prototype.publishProxy(\"image_colorFill\", \"_faChar\", \"text_colorFill\");\nIcon.prototype.publish(\"tooltip\", \"\", \"string\", \"Tooltip\", null, { tags: [\"Private\"] });\nIcon.prototype.publish(\"diameter\", 24, \"number\", \"Diameter\", null, { tags: [\"Private\"] });\nIcon.prototype.publish(\"paddingPercent\", 45, \"number\", \"Padding Percent\", null, { tags: [\"Private\"] });\nIcon.prototype.publishProxy(\"shape_colorFill\", \"_shapeWidget\", \"colorFill\");\nIcon.prototype.publishProxy(\"shape_colorStroke\", \"_shapeWidget\", \"colorStroke\");\n","import { local as d3Local } from \"d3-selection\";\nimport { Icon } from \"./Icon.ts\";\nimport { Shape } from \"./Shape.ts\";\nimport { SVGWidget } from \"./SVGWidget.ts\";\nimport { Text } from \"./Text.ts\";\nimport { BBox, Widget } from \"./Widget.ts\";\n\nexport interface IAnnotation {\n faChar: string;\n tooltip?: string;\n shape_colorFill?: string;\n shape_colorStroke?: string;\n image_colorFill?: string;\n shape?: string;\n}\n\nexport class Entity extends SVGWidget {\n protected _icon_widget: Icon;\n protected _background_widget: Shape;\n protected _title_widget: Text;\n protected _desc_widget: Text;\n protected _annotation_widgets: { [idx: number]: { widget: SVGWidget, bbox: BBox } };\n protected _element_anno;\n protected _element_background;\n protected _element_desc;\n protected _element_icon;\n protected _element_title;\n\n private _annotationLocal = d3Local<Icon>();\n\n constructor() {\n super();\n\n this._background_widget = new Shape();\n this._icon_widget = new Icon();\n this._title_widget = new Text();\n this._desc_widget = new Text();\n this._annotation_widgets = {};\n }\n getAnnotationsBBox(): BBox {\n let retVal: BBox;\n for (const key in this._annotation_widgets) {\n const bbox = this._annotation_widgets[key].bbox;\n if (!retVal) {\n retVal = bbox;\n } else {\n retVal.x = Math.min(retVal.x, bbox.x);\n retVal.y = Math.min(retVal.y, bbox.y);\n retVal.width = Math.max(retVal.width, bbox.width);\n retVal.height = Math.max(retVal.height, bbox.height);\n }\n }\n return retVal || { x: 0, y: 0, width: 0, height: 0 };\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n element\n .on(\"mouseover\", () => {\n element.classed(\"hovering\", true);\n this.render();\n })\n .on(\"mouseout\", () => {\n element.classed(\"hovering\", false);\n this.render();\n })\n ;\n\n this._element_background = element.append(\"g\").attr(\"class\", \"entity_shape\");\n this._element_icon = element.append(\"g\").attr(\"class\", \"entity_icon\");\n this._element_title = element.append(\"g\").attr(\"class\", \"entity_title\");\n this._element_desc = element.append(\"g\").attr(\"class\", \"entity_desc\");\n this._element_anno = element.append(\"g\").attr(\"class\", \"entity_anno\");\n\n this._background_widget\n .target(this._element_background.node());\n this._icon_widget\n .shape_colorFill(\"none\")\n .shape_colorStroke(\"none\")\n .target(this._element_icon.node());\n this._title_widget\n .target(this._element_title.node());\n this._desc_widget\n .target(this._element_desc.node());\n }\n update(domNode, element) {\n super.update(domNode, element);\n this._desc_widget\n .fontSize(this.descriptionFontSize());\n const context = this;\n this._annotation_widgets = {};\n let annoXPos = 0;\n const annotations = this._element_anno.selectAll(\".annotation\").data([...this.annotationIcons()].reverse());\n annotations.enter().append(\"g\")\n .attr(\"class\", \"annotation\")\n .each(function (this: SVGGElement, d, idx) {\n const anno = new Icon()\n .diameter(context.annotationDiameter())\n .paddingPercent(context.annotationPaddingPercent())\n .target(this)\n .shape(\"square\")\n ;\n context._annotationLocal.set(this, anno);\n })\n .merge(annotations)\n .each(function (this: SVGGElement, d, idx) {\n const anno = context._annotationLocal.get(this);\n if (typeof d.faChar !== \"undefined\") anno.faChar(d.faChar);\n if (typeof d.shape !== \"undefined\") anno.shape(d.shape);\n if (typeof d.image_colorFill !== \"undefined\") anno.image_colorFill(d.image_colorFill);\n if (typeof d.shape_colorFill !== \"undefined\") anno.shape_colorFill(d.shape_colorFill);\n if (typeof d.shape_colorStroke !== \"undefined\") anno.shape_colorStroke(d.shape_colorStroke);\n const annoDiam = anno.diameter();\n anno\n .x(annoXPos - annoDiam)\n .y(annoDiam / 2)\n .render()\n ;\n annoXPos -= annoDiam + context.annotationSpacing();\n context._annotation_widgets[idx] = {\n widget: anno,\n bbox: anno.getBBox(true)\n };\n });\n annotations.exit()\n .each(function (this: HTMLElement, d, idx) {\n const anno = context._annotationLocal.get(this);\n anno.target(null);\n })\n .remove();\n }\n exit(domNode, element) {\n this._desc_widget.target(null);\n this._title_widget.target(null);\n this._icon_widget.target(null);\n this._background_widget.target(null);\n super.exit(domNode, element);\n }\n moveAnnotations(x_offset: number, y_offset: number) {\n this._element_anno.attr(\"transform\", `translate(${x_offset}, ${y_offset})`);\n }\n render(callback?: (w: Widget) => void) {\n return super.render(w => {\n this._background_widget.render();\n this._icon_widget.render();\n this._title_widget.render();\n this._desc_widget.render();\n if (callback) {\n callback(w);\n }\n });\n }\n}\nEntity.prototype._class += \" common_Entity\";\n\nexport interface Entity {\n arrowHeight(): number;\n arrowHeight(_: number): this;\n arrowWidth(): number;\n arrowWidth(_: number): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n padding(): number;\n padding(_: number): this;\n paddingPercent(): number;\n paddingPercent(_: number): this;\n\n annotationIcons(): IAnnotation[];\n annotationIcons(_: IAnnotation[]): this;\n annotationDiameter(): number;\n annotationDiameter(_: number): this;\n annotationSpacing(): number;\n annotationSpacing(_: number): this;\n annotationPaddingPercent(): number;\n annotationPaddingPercent(_: number): this;\n icon(): string;\n icon(_: string): this;\n iconColor(): string;\n iconColor(_: string): this;\n iconDiameter(): number;\n iconDiameter(_: number): this;\n iconPaddingPercent(): number;\n iconPaddingPercent(_: number): this;\n description(): string;\n description(_: string): this;\n descriptionColor(): string;\n descriptionColor(_: string): this;\n descriptionFontFamily(): string;\n descriptionFontFamily(_: string): this;\n descriptionFontSize(): number;\n descriptionFontSize(_: number): this;\n title(): string;\n title(_: string): this;\n titleColor(): string;\n titleColor(_: string): this;\n titleFontFamily(): string;\n titleFontFamily(_: string): this;\n titleFontSize(): number;\n titleFontSize(_: number): this;\n backgroundShape(): string;\n backgroundShape(_: string): this;\n backgroundColorFill(): string;\n backgroundColorFill(_: string): this;\n backgroundColorStroke(): string;\n backgroundColorStroke(_: string): this;\n}\n\nEntity.prototype.publish(\"padding\", 8, \"number\", \"padding\");\n\nEntity.prototype.publish(\"annotationPaddingPercent\", 38, \"number\", \"annotationPaddingPercent\");\nEntity.prototype.publish(\"annotationDiameter\", 14, \"number\", \"Annotation Diameter\");\nEntity.prototype.publish(\"annotationIcons\", [], \"array\", \"annotationIcons\"); // TODO: is this really used?\nEntity.prototype.publish(\"annotationSpacing\", 3, \"number\", \"annotationSpacing\");\n\nEntity.prototype.publishProxy(\"icon\", \"_icon_widget\", \"faChar\");\nEntity.prototype.publishProxy(\"iconColor\", \"_icon_widget\", \"image_colorFill\");\nEntity.prototype.publishProxy(\"iconDiameter\", \"_icon_widget\", \"diameter\");\nEntity.prototype.publishProxy(\"iconPaddingPercent\", \"_icon_widget\", \"paddingPercent\");\n\nEntity.prototype.publishProxy(\"title\", \"_title_widget\", \"text\");\nEntity.prototype.publishProxy(\"titleColor\", \"_title_widget\", \"colorFill\");\nEntity.prototype.publishProxy(\"titleFontFamily\", \"_title_widget\", \"fontFamily\");\nEntity.prototype.publishProxy(\"titleFontSize\", \"_title_widget\", \"fontSize\");\n\nEntity.prototype.publishProxy(\"description\", \"_desc_widget\", \"text\");\nEntity.prototype.publishProxy(\"descriptionColor\", \"_desc_widget\", \"colorFill\");\nEntity.prototype.publishProxy(\"descriptionFontFamily\", \"_desc_widget\", \"fontFamily\");\nEntity.prototype.publishProxy(\"descriptionFontSize\", \"_desc_widget\", \"fontSize\");\n\nEntity.prototype.publishProxy(\"backgroundShape\", \"_background_widget\", \"shape\");\nEntity.prototype.publishProxy(\"backgroundColorFill\", \"_background_widget\", \"colorFill\");\nEntity.prototype.publishProxy(\"backgroundColorStroke\", \"_background_widget\", \"colorStroke\");\n\nEntity.prototype.publishProxy(\"cornerRadius\", \"_background_widget\");\nEntity.prototype.publishProxy(\"arrowHeight\", \"_background_widget\");\nEntity.prototype.publishProxy(\"arrowWidth\", \"_background_widget\");\n","import { Entity } from \"./Entity.ts\";\n\nexport class EntityCard extends Entity {\n protected _element_textbox;\n constructor() {\n super();\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n update() {\n super.update.apply(this, arguments);\n\n this._icon_widget.render();\n this._title_widget.render();\n this._desc_widget.render();\n const icon_bbox = this._icon_widget.getBBox(true);\n const title_bbox = this._title_widget.getBBox(true);\n const desc_bbox = this._desc_widget.getBBox(true);\n\n let anno_w = 0;\n let anno_h = 0;\n const anno_gap = this.annotationSpacing();\n for (const i of Object.keys(this._annotation_widgets)) {\n anno_w += this._annotation_widgets[i].bbox.width + anno_gap;\n anno_h = anno_h > this._annotation_widgets[i].bbox.height ? anno_h : this._annotation_widgets[i].bbox.height;\n }\n\n const _background_h = this.fixedHeight() !== null ? this.fixedHeight() : Math.max(\n title_bbox.height + desc_bbox.height + (this.padding() * 3),\n anno_h + icon_bbox.height + (this.padding() * 3)\n );\n const _background_w = this.fixedWidth() !== null ? this.fixedWidth() : Math.max(\n title_bbox.width + icon_bbox.width + (this.padding() * 3),\n anno_w + desc_bbox.width + (this.padding() * 3)\n );\n this._background_widget\n .height(_background_h)\n .width(_background_w);\n\n this._title_widget.move({\n x: -(_background_w / 2) + (title_bbox.width / 2) + this.padding(),\n y: -(_background_h / 2) + (title_bbox.height / 2) + this.padding()\n });\n this._icon_widget.move({\n x: (_background_w / 2) - (icon_bbox.width / 2) - this.padding(),\n y: -(_background_h / 2) + (icon_bbox.height / 2) + this.padding()\n });\n this._desc_widget.move({\n x: -(_background_w / 2) + (desc_bbox.width / 2) + this.padding(),\n y: (_background_h / 2) - (desc_bbox.height / 2) - this.padding()\n });\n this.moveAnnotations((_background_w / 2), (_background_h / 2) - anno_h - this.padding());\n }\n}\nEntityCard.prototype._class += \" common_EntityCard\";\n\nexport interface EntityCard {\n fixedWidth(): number;\n fixedWidth(_: number): this;\n fixedHeight(): number;\n fixedHeight(_: number): this;\n}\n\nEntityCard.prototype.publish(\"fixedWidth\", null, \"number\", \"fixedWidth\");\nEntityCard.prototype.publish(\"fixedHeight\", null, \"number\", \"fixedHeight\");\n","import { Entity } from \"./Entity.ts\";\n\nexport class EntityPin extends Entity {\n protected _element_textbox;\n constructor() {\n super();\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n update(domNode, element) {\n super.update.apply(this, arguments);\n\n const is_hovering = element.classed(\"hovering\");\n\n this._icon_widget.render();\n this._desc_widget.render();\n this._title_widget.render();\n const title_bbox = !this.titleOnlyShowOnHover() || is_hovering ? this._title_widget.getBBox(true) : { height: 0, width: 0 };\n const icon_bbox = !this.iconOnlyShowOnHover() || is_hovering ? this._icon_widget.getBBox(true) : { height: 0, width: 0 };\n const desc_bbox = !this.descriptionOnlyShowOnHover() || is_hovering ? this._desc_widget.getBBox(true) : { height: 0, width: 0 };\n const _anno_h = !this.annotationOnlyShowOnHover() || is_hovering ? this.annotationIcons().length > 0 ? this.annotationDiameter() + this.padding() : 0 : 0;\n const background_bbox = this.calcBackgroundBBox(is_hovering, title_bbox, icon_bbox, desc_bbox, _anno_h);\n\n this._title_widget.display(!this.titleOnlyShowOnHover() || is_hovering);\n this._icon_widget.display(!this.iconOnlyShowOnHover() || is_hovering);\n this._desc_widget.display(!this.descriptionOnlyShowOnHover() || is_hovering);\n\n this._background_widget\n .height(background_bbox.height)\n .width(background_bbox.width);\n const icon_y = -background_bbox.height + icon_bbox.height + (this.padding() / 2);\n const title_y = icon_y + (icon_bbox.height / 2) + (title_bbox.height / 2) + this.padding();\n const desc_y = title_y + (title_bbox.height / 2) + (desc_bbox.height / 2) + this.padding();\n const anno_y = desc_y + (desc_bbox.height / 2) + this.padding();\n this._title_widget.move({\n x: 0,\n y: title_y\n });\n this._desc_widget.move({\n x: 0,\n y: desc_y\n });\n this._icon_widget.move({\n x: 0,\n y: icon_y\n });\n this.moveAnnotations(background_bbox.width / 2, anno_y);\n\n }\n calcHeight() {\n const is_hovering = true;\n this._icon_widget.render();\n this._desc_widget.render();\n this._title_widget.render();\n const title_bbox = !this.titleOnlyShowOnHover() || is_hovering ? this._title_widget.getBBox(true) : { height: 0, width: 0 };\n const icon_bbox = !this.iconOnlyShowOnHover() || is_hovering ? this._icon_widget.getBBox(true) : { height: 0, width: 0 };\n const desc_bbox = !this.descriptionOnlyShowOnHover() || is_hovering ? this._desc_widget.getBBox(true) : { height: 0, width: 0 };\n const _anno_h = !this.annotationOnlyShowOnHover() || is_hovering ? this.annotationIcons().length > 0 ? this.annotationDiameter() + this.padding() : 0 : 0;\n const background_bbox = this.calcBackgroundBBox(is_hovering, title_bbox, icon_bbox, desc_bbox, _anno_h);\n\n return background_bbox.height;\n }\n calcBackgroundBBox(is_hovering, title_bbox, icon_bbox, desc_bbox, _anno_h) {\n const content_width = Math.max(title_bbox.width, icon_bbox.width, desc_bbox.width);\n const background_bbox = {\n width: content_width + (this.padding() * 2),\n height: icon_bbox.height + title_bbox.height + _anno_h + this.arrowHeight() + desc_bbox.height + (this.padding() * 5)\n };\n let remove_padding = 0;\n if (this.titleOnlyShowOnHover() && !is_hovering) {\n remove_padding += this.padding();\n }\n if (this.iconOnlyShowOnHover() && !is_hovering) {\n remove_padding += this.padding();\n }\n if (this.descriptionOnlyShowOnHover() && !is_hovering) {\n remove_padding += this.padding();\n }\n if (this.annotationIcons().length === 0 || this.annotationOnlyShowOnHover() && !is_hovering) {\n remove_padding += this.padding();\n }\n background_bbox.height -= remove_padding;\n return background_bbox;\n }\n}\nEntityPin.prototype._class += \" common_EntityPin\";\n\nexport interface EntityPin {\n titleOnlyShowOnHover(): boolean;\n titleOnlyShowOnHover(_: boolean): this;\n iconOnlyShowOnHover(): boolean;\n iconOnlyShowOnHover(_: boolean): this;\n descriptionOnlyShowOnHover(): boolean;\n descriptionOnlyShowOnHover(_: boolean): this;\n annotationOnlyShowOnHover(): boolean;\n annotationOnlyShowOnHover(_: boolean): this;\n}\n\nEntityPin.prototype.publish(\"titleOnlyShowOnHover\", false, \"boolean\", \"titleOnlyShowOnHover\");\nEntityPin.prototype.publish(\"iconOnlyShowOnHover\", false, \"boolean\", \"iconOnlyShowOnHover\");\nEntityPin.prototype.publish(\"descriptionOnlyShowOnHover\", false, \"boolean\", \"descriptionOnlyShowOnHover\");\nEntityPin.prototype.publish(\"annotationOnlyShowOnHover\", false, \"boolean\", \"annotationOnlyShowOnHover\");\n","import { local as d3Local, select as d3Select } from \"d3-selection\";\nimport { Entity } from \"./Entity.ts\";\nimport { HTMLWidget } from \"./HTMLWidget.ts\";\nimport * as Utility from \"./Utility.ts\";\nimport { InputField } from \"./Widget.ts\";\n\nimport \"../src/EntityRect.css\";\n\nexport class EntityRect extends Entity {\n protected _element_textbox;\n constructor() {\n super();\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n update(domNode, element) {\n this._desc_widget.text(\"\");\n super.update(domNode, element);\n }\n render(callback?: (w: EntityRect) => void) {\n return super.render((w: EntityRect) => {\n const icon_bbox = w.icon() === \"\" ? { width: 0, height: 0 } : this._icon_widget.getBBox(true);\n const title_bbox = this._title_widget.getBBox(true);\n const annotations_bbox = this.getAnnotationsBBox();\n\n let width = this.fixedWidth();\n if (!width) {\n width = icon_bbox.width + title_bbox.width + annotations_bbox.width + this.padding() * 4;\n }\n\n let height = this.fixedHeight();\n if (!height) {\n height = Math.max(icon_bbox.height, title_bbox.height, annotations_bbox.height) + this.padding() * 2;\n }\n\n this._background_widget\n .width(width)\n .height(height)\n .render()\n ;\n\n this._icon_widget.move({\n x: -(width / 2) + (icon_bbox.width),\n y: 0\n });\n\n this.moveAnnotations(width / 2, -annotations_bbox.height / 2);\n const iconWidth = icon_bbox.width > 0 ? icon_bbox.width + this.padding() : 0;\n const titleX = -(width / 2) + iconWidth + this.padding();\n const annoWidth = this.padding() / 2 + annotations_bbox.width + this.padding();\n const titleW = width - iconWidth - annoWidth;\n\n this._title_widget\n .move({\n x: titleX,\n y: 0\n })\n .anchor(\"start\")\n .width(titleW)\n .render()\n ;\n\n if (callback) {\n callback(w);\n }\n });\n }\n}\nEntityRect.prototype._class += \" common_EntityRect\";\n\nexport interface EntityRect {\n fixedWidth(): number;\n fixedWidth(_: number): this;\n fixedHeight(): number;\n fixedHeight(_: number): this;\n}\n\nEntityRect.prototype.publish(\"fixedWidth\", null, \"number\", \"fixedWidth\");\nEntityRect.prototype.publish(\"fixedHeight\", null, \"number\", \"fixedHeight\");\n\nexport class EntityRectList extends HTMLWidget {\n static __inputs: InputField[] = [{\n id: \"borderColor\",\n type: \"string\"\n }, {\n id: \"icon\",\n type: \"string\"\n }, {\n id: \"iconColor\",\n type: \"string\"\n }, {\n id: \"title\",\n type: \"string\"\n }];\n\n private _enityRectLocal = d3Local<EntityRect>();\n\n constructor() {\n super();\n Utility.SimpleSelectionMixin.call(this, true);\n }\n\n entityRectData() {\n const columns = this.columns();\n const idxColumns = [\n \"backgroundColor\",\n \"borderColor\",\n \"icon\",\n \"iconColor\",\n \"title\",\n \"titleColor\",\n \"description\",\n \"descriptionColor\"\n ];\n const idxs = idxColumns.map(idxColumn => columns.indexOf(this[`${idxColumn}Column`]()));\n return this.data().map(row => {\n const retVal = {\n origRow: row\n };\n for (let i = 0; i < idxColumns.length; ++i) {\n retVal[idxColumns[i]] = idxs[i] >= 0 ? row[idxs[i]] : typeof this[`${idxColumns[i]}`] === \"function\" ? this[`${idxColumns[i]}`]() : \"\";\n }\n return retVal;\n }, this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode)\n .style(\"overflow-x\", \"hidden\")\n .style(\"overflow-y\", \"scroll\")\n ;\n this._selection.widgetElement(element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n const margin = { left: 8, top: 8, right: 8, bottom: 8 };\n const width = this.width() - margin.left - margin.right - 20; // -20 for VScroll (could do better)\n const height = this.fixedHeight() - margin.top - margin.bottom;\n\n const svg = element.selectAll(\"svg\").data(this.entityRectData());\n svg.enter().append(\"svg\")\n .attr(\"class\", \"entityRectItem\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.origRow), context.titleColumn(), context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.origRow), context.titleColumn(), context._selection.selected(this));\n })\n .each(function () {\n const entityRect = new EntityRect()\n .target(this)\n ;\n context._enityRectLocal.set(this, entityRect);\n })\n .merge(svg)\n .style(\"border-color\", d => d.borderColor)\n .each(function (d) {\n context._enityRectLocal.get(this)\n .pos({ x: width / 2, y: height / 2 })\n .resize({ width, height })\n .fixedWidth(width)\n .fixedHeight(height)\n .backgroundShape(\"rect\")\n .backgroundColorFill(d.backgroundColor)\n .backgroundColorStroke(\"none\")\n .icon(d.icon)\n .iconColor(d.iconColor)\n .iconDiameter(height / 2.6666)\n .iconPaddingPercent(0)\n .title(d.title)\n .titleFontSize(height / 2.6666)\n .titleColor(d.titleColor)\n .description(d.description)\n .descriptionColor(d.descriptionColor)\n .render()\n ;\n })\n ;\n svg.exit().remove();\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row, column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \",\" + selected);\n }\n\n dblclick(row, column, selected) {\n // console.log(\"Double click: \" + JSON.stringify(row) + \", \" + column + \",\" + selected);\n }\n\n // SimpleSelectionMixin\n _selection;\n}\nEntityRectList.prototype._class += \" common_EntityRectList\";\n\nexport interface EntityRectList {\n fixedHeight(): number;\n fixedHeight(_: number): this;\n backgroundColor(): string;\n backgroundColor(_: string): this;\n backgroundColorColumn(): string;\n backgroundColorColumn(_: string): this;\n borderColor(): string;\n borderColor(_: string): this;\n borderColorColumn(): string;\n borderColorColumn(_: string): this;\n icon(): string;\n icon(_: string): this;\n iconColumn(): string;\n iconColumn(_: string): this;\n iconColor(): string;\n iconColor(_: string): this;\n iconColorColumn(): string;\n iconColorColumn(_: string): this;\n titleColumn(): string;\n titleColumn(_: string): this;\n titleColor(): string;\n titleColor(_: string): this;\n titleColorColumn(): string;\n titleColorColumn(_: string): this;\n descriptionColumn(): string;\n descriptionColumn(_: string): this;\n descriptionColor(): string;\n descriptionColor(_: string): this;\n descriptionColorColumn(): string;\n descriptionColorColumn(_: string): this;\n}\n\nEntityRectList.prototype.publish(\"fixedHeight\", 64, \"number\", \"fixedHeight\");\nEntityRectList.prototype.publish(\"backgroundColor\", \"#f8f8f8\", \"string\", \"Default Background Color\", null, { inputType: \"html-color\" });\nEntityRectList.prototype.publish(\"backgroundColorColumn\", null, \"set\", \"Background Color Column\", function () { return this.columns(); }, { optional: true });\nEntityRectList.prototype.publish(\"borderColor\", \"black\", \"string\", \"Default Border Color\", null, { inputType: \"html-color\" });\nEntityRectList.prototype.publish(\"borderColorColumn\", null, \"set\", \"Border Color Column\", function () { return this.columns(); }, { optional: true });\nEntityRectList.prototype.publish(\"icon\", \"\", \"string\", \"Icon\");\nEntityRectList.prototype.publish(\"iconColumn\", null, \"set\", \"Icon Column\", function () { return this.columns(); }, { optional: true });\nEntityRectList.prototype.publish(\"iconColor\", \"red\", \"string\", \"Default Icon Color\", null, { inputType: \"html-color\" });\nEntityRectList.prototype.publish(\"iconColorColumn\", null, \"set\", \"Icon Color Column \", function () { return this.columns(); }, { optional: true });\nEntityRectList.prototype.publish(\"titleColumn\", null, \"set\", \"Title Column\", function () { return this.columns(); }, { optional: true });\nEntityRectList.prototype.publish(\"titleColor\", \"black\", \"string\", \"Default Title Color\", null, { inputType: \"html-color\" });\nEntityRectList.prototype.publish(\"titleColorColumn\", null, \"set\", \"Title Color Column \", function () { return this.columns(); }, { optional: true });\nEntityRectList.prototype.publish(\"descriptionColumn\", null, \"set\", \"Description Column\", function () { return this.columns(); }, { optional: true });\nEntityRectList.prototype.publish(\"descriptionColor\", \"black\", \"string\", \"Default Description Color\", null, { inputType: \"html-color\" });\nEntityRectList.prototype.publish(\"descriptionColorColumn\", null, \"set\", \"Description Color Column \", function () { return this.columns(); }, { optional: true });\n\n","import { textColor } from \"./Palette.ts\";\nimport { Shape } from \"./Shape.ts\";\nimport { SVGWidget } from \"./SVGWidget.ts\";\nimport { Text } from \"./Text.ts\";\nimport { ISize } from \"./Widget.ts\";\n\nimport \"../src/TextBox.css\";\n\nexport class TextBox extends SVGWidget {\n\n protected _shape: Shape;\n protected _text: Text;\n\n constructor() {\n super();\n\n this._shape = new Shape()\n .shape(\"rect\")\n .on(\"click\", () => {\n this.click();\n })\n .on(\"dblclick\", () => {\n this.dblclick();\n })\n ;\n this._text = new Text()\n .on(\"click\", () => {\n this.click();\n })\n .on(\"dblclick\", () => {\n this.dblclick();\n })\n ;\n }\n\n padding(_) {\n this.paddingLeft(_);\n this.paddingRight(_);\n this.paddingTop(_);\n this.paddingBottom(_);\n return this;\n }\n\n getTextX(width) {\n switch (this.anchor()) {\n case \"start\":\n return -width / 2;\n case \"end\":\n return width / 2;\n }\n return 0;\n }\n\n getBBox(refresh = false, round = false) {\n const textBBox = this._text.getBBox(true);\n const width = this.fixedSize() ? this.fixedSize().width : textBBox.width + this.paddingLeft() + this.paddingRight();\n const height = this.fixedSize() ? this.fixedSize().height : textBBox.height + this.paddingTop() + this.paddingBottom();\n return {\n x: -width - 2,\n y: -height - 2,\n width,\n height\n };\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n delete this._prevHash;\n this._shape\n .target(domNode)\n .tooltip(this.tooltip())\n ;\n this._text\n .target(domNode)\n ;\n }\n\n _prevHash;\n update(domNode, element) {\n super.update(domNode, element);\n const hash = this.hashSum();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n\n const textBBox = this._text.getBBox(true);\n const size = {\n width: this.fixedSize() ? this.fixedSize().width : textBBox.width + this.paddingLeft() + this.paddingRight(),\n height: this.fixedSize() ? this.fixedSize().height : textBBox.height + this.paddingTop() + this.paddingBottom()\n };\n\n this._shape\n .width(size.width)\n .height(size.height)\n .render()\n ;\n\n this._text\n .x(this.getTextX(textBBox.width))\n .colorFill_default(this._shape.colorFill_exists() ? textColor(this._shape.colorFill()) : undefined)\n .render()\n ;\n\n if (this.fixedSize()) {\n switch (this.anchor()) {\n case \"start\":\n this._text\n .x(-this.fixedSize().width / 2 + textBBox.width / 2 + (this.paddingLeft() + this.paddingRight()) / 2)\n .render()\n ;\n break;\n case \"end\":\n this._text\n .x(this.fixedSize().width / 2 - textBBox.width / 2 - (this.paddingLeft() + this.paddingRight()) / 2)\n .render()\n ;\n break;\n }\n }\n this._text.visible(textBBox.width <= size.width && textBBox.height <= size.height);\n }\n }\n\n exit(domNode, element) {\n this._shape\n .target(null)\n ;\n this._text\n .target(null)\n ;\n super.exit(domNode, element);\n }\n\n click() {\n }\n\n dblclick() {\n }\n}\nTextBox.prototype._class += \" common_TextBox\";\n\nexport interface TextBox {\n text(): string;\n text(_: string): this;\n fontSize(): number;\n fontSize(_: number): this;\n shape_colorFill(): string;\n shape_colorFill(_: string): this;\n shape_colorStroke(): string;\n shape_colorStroke(_: string): this;\n text_colorFill(): string;\n text_colorFill(_: string): this;\n text_fontFamily(): string;\n text_fontFamily(_: string): this;\n paddingLeft(): number;\n paddingLeft(_: number): this;\n paddingRight(): number;\n paddingRight(_: number): this;\n paddingTop(): number;\n paddingTop(_: number): this;\n paddingBottom(): number;\n paddingBottom(_: number): this;\n anchor(): \"start\" | \"middle\" | \"end\";\n anchor(_: \"start\" | \"middle\" | \"end\"): this;\n fixedSize(): ISize;\n fixedSize(_: ISize): this;\n tooltip(): string;\n tooltip(_: string): this;\n}\n\nTextBox.prototype.publishProxy(\"text\", \"_text\");\nTextBox.prototype.publishProxy(\"fontSize\", \"_text\", \"fontSize\");\nTextBox.prototype.publishProxy(\"shape_colorStroke\", \"_shape\", \"colorStroke\");\nTextBox.prototype.publishProxy(\"shape_colorFill\", \"_shape\", \"colorFill\");\nTextBox.prototype.publishProxy(\"text_colorFill\", \"_text\", \"colorFill\");\nTextBox.prototype.publishProxy(\"text_fontFamily\", \"_text\", \"fontFamily\");\nTextBox.prototype.publish(\"paddingLeft\", 4, \"number\", \"Left padding (in pixels)\", null, { tags: [\"Private\"] });\nTextBox.prototype.publish(\"paddingRight\", 4, \"number\", \"Right padding (in pixels)\", null, { tags: [\"Private\"] });\nTextBox.prototype.publish(\"paddingTop\", 4, \"number\", \"Top padding (in pixels)\", null, { tags: [\"Private\"] });\nTextBox.prototype.publish(\"paddingBottom\", 4, \"number\", \"Bottom padding (in pixels)\", null, { tags: [\"Private\"] });\nTextBox.prototype.publishProxy(\"anchor\", \"_text\");\nTextBox.prototype.publish(\"fixedSize\", null);\n\nTextBox.prototype.publish(\"tooltip\", \"\", \"string\", \"Tooltip\", null, { tags: [\"Private\"] });\n","import { Entity } from \"./Entity.ts\";\nimport { TextBox } from \"./TextBox.ts\";\n\nexport class EntityVertex extends Entity {\n protected _textbox_widget: TextBox;\n protected _element_textbox;\n constructor() {\n super();\n this._textbox_widget = new TextBox();\n }\n enter(domNode, element) {\n this._element_textbox = element.append(\"g\").attr(\"class\", \"entity_textbox\");\n super.enter(domNode, element);\n this._textbox_widget.target(this._element_textbox.node());\n }\n update() {\n super.update.apply(this, arguments);\n this._textbox_widget\n .text(this._title_widget.text());\n this._icon_widget\n .shape_colorFill(this.iconColorFill())\n .shape_colorStroke(this.iconColorStroke());\n this._background_widget\n .colorFill(\"none\")\n .colorStroke(\"none\");\n\n this._icon_widget.render();\n this._textbox_widget.render();\n const icon_bbox = this._icon_widget.getBBox(true);\n const text_bbox = this._textbox_widget.getBBox(true);\n let _icon_x = 0;\n let _icon_y = -(text_bbox.height / 2) - (icon_bbox.height / 3);\n switch (this.iconAnchor()) {\n case \"start\":\n _icon_x = -(text_bbox.width / 2) + (icon_bbox.width / 3);\n break;\n case \"end\":\n _icon_x = (text_bbox.width / 2) - (icon_bbox.width / 3);\n break;\n case \"left\":\n _icon_x = -(text_bbox.width / 2) - (icon_bbox.width / 2);\n _icon_y = 0;\n break;\n }\n this._icon_widget.move({\n x: _icon_x,\n y: _icon_y\n });\n this.moveAnnotations(text_bbox.width / 2, text_bbox.height / 2);\n }\n exit(domNode, element) {\n this._textbox_widget.target(null);\n super.exit(domNode, element);\n }\n}\nEntityVertex.prototype._class += \" common_EntityVertex\";\n\nexport interface EntityVertex {\n iconAnchor(): string;\n iconAnchor(_: string): this;\n iconColorFill(): string;\n iconColorFill(_: string): this;\n iconColorStroke(): string;\n iconColorStroke(_: string): this;\n shape_colorStroke(): string;\n shape_colorStroke(_: string): this;\n shape_colorFill(): string;\n shape_colorFill(_: string): this;\n text_colorFill(): string;\n text_colorFill(_: string): this;\n\n textboxColorStroke(): string;\n textboxColorStroke(_: string): this;\n textboxColorFill(): string;\n textboxColorFill(_: string): this;\n textboxFontColor(): string;\n textboxFontColor(_: string): this;\n}\n\nEntityVertex.prototype.publish(\"iconAnchor\", \"start\", \"set\", \"Horizontal anchor position of icon\", [\"\", \"start\", \"middle\", \"end\", \"left\"]);\nEntityVertex.prototype.publish(\"iconColorFill\", null, \"html-color\", \"iconColorFill\");\nEntityVertex.prototype.publish(\"iconColorStroke\", null, \"html-color\", \"iconColorStroke\");\n\nEntityVertex.prototype.publishProxy(\"textboxColorStroke\", \"_textbox_widget\", \"shape_colorStroke\");\nEntityVertex.prototype.publishProxy(\"textboxColorFill\", \"_textbox_widget\", \"shape_colorFill\");\nEntityVertex.prototype.publishProxy(\"textboxFontColor\", \"_textbox_widget\", \"text_colorFill\");\n","import { select as d3Select } from \"d3-selection\";\nimport { HTMLWidget } from \"./HTMLWidget.ts\";\n\nexport class Image extends HTMLWidget {\n private _imgElement;\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const img = element.selectAll(\"img\").data(this.source() ? [this.source()] : [], function (d) { return d; });\n img.enter()\n .append(\"img\")\n .attr(\"src\", this.source())\n .style(\"opacity\", 0)\n .on(\"load\", function () {\n context._imgElement = d3Select(this);\n context.styleImageElement();\n context._imgElement.style(\"opacity\", 1);\n })\n ;\n this.styleImageElement();\n img.exit()\n .remove()\n ;\n }\n\n styleImageElement() {\n if (!this._imgElement) return;\n switch (this.sizing()) {\n case \"actual\":\n this._imgElement.style(\"width\", \"auto\");\n this._imgElement.style(\"height\", \"auto\");\n break;\n case \"fit\":\n if (this.lockAspectRatio()) {\n this._imgElement.style(\"width\", \"auto\");\n this._imgElement.style(\"height\", \"auto\");\n const bbox = this._imgElement.node().getBoundingClientRect();\n const xScale = bbox.width / this.width();\n const yScale = bbox.height / this.height();\n if (xScale > yScale) {\n this._imgElement.style(\"width\", this.width() + \"px\");\n this._imgElement.style(\"height\", (bbox.height / xScale) + \"px\");\n } else {\n this._imgElement.style(\"width\", (bbox.width / yScale) + \"px\");\n this._imgElement.style(\"height\", this.height() + \"px\");\n }\n } else {\n this._imgElement.style(\"width\", this.width() + \"px\");\n this._imgElement.style(\"height\", this.height() + \"px\");\n }\n break;\n case \"custom\":\n this._imgElement.style(\"width\", this.customWidth());\n this._imgElement.style(\"height\", this.customHeight());\n break;\n }\n switch (this.alignment()) {\n case \"origin\":\n break;\n case \"center\":\n const bbox = this._imgElement.node().getBoundingClientRect();\n this._imgElement.style(\"margin-left\", `${(this.width() - bbox.width) / 2}px`);\n this._imgElement.style(\"margin-top\", `${(this.height() - bbox.height) / 2}px`);\n break;\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n}\nImage.prototype._class += \" common_Image\";\n\nexport interface Image {\n source(): string;\n source(_: string): this;\n sizing(): \"actual\" | \"fit\" | \"custom\";\n sizing(_: \"actual\" | \"fit\" | \"custom\"): this;\n customWidth(): string;\n customWidth(_: string): this;\n customHeight(): string;\n customHeight(_: string): this;\n lockAspectRatio(): boolean;\n lockAspectRatio(_: boolean): this;\n alignment(): \"center\" | \"origin\";\n alignment(_: \"center\" | \"origin\"): this;\n}\n\nImage.prototype.publish(\"source\", null, \"string\", \"Image Source\", null, { tags: [\"Basic\"] });\nImage.prototype.publish(\"sizing\", \"actual\", \"set\", \"Controls sizing mode\", [\"actual\", \"fit\", \"custom\"], { tags: [\"Basic\"] });\nImage.prototype.publish(\"customWidth\", \"50%\", \"string\", \"Applies this width to IMG element if 'sizing' is set to 'custom' (user should set 'px' or 'em' etc.)\", null, { tags: [\"Basic\"], disable: (w) => w.sizing() !== \"custom\" });\nImage.prototype.publish(\"customHeight\", \"20%\", \"string\", \"Applies this height to IMG element if 'sizing' is set to 'custom' (user should set 'px' or 'em' etc.)\", null, { tags: [\"Basic\"], disable: (w) => w.sizing() !== \"custom\" });\nImage.prototype.publish(\"lockAspectRatio\", true, \"boolean\", \"Locks the aspect ratio when scaling/stretching\", null, { tags: [\"Basic\"], disable: (w) => w.sizing() !== \"fit\" });\nImage.prototype.publish(\"alignment\", \"center\", \"set\", \"Image Alignment\", [\"center\", \"origin\"], { tags: [\"Basic\"] });\n","import { IList } from \"./IList.ts\";\nimport { SVGWidget } from \"./SVGWidget.ts\";\nimport { TextBox } from \"./TextBox.ts\";\n\nimport \"../src/List.css\";\n\nexport class List extends SVGWidget implements IList {\n\n protected _listWidgets;\n\n constructor() {\n super();\n\n this._listWidgets = {};\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n const line = element.selectAll(\".line\").data(this.data(), function (d) { return d; });\n const lineEnter = line.enter().append(\"g\")\n .attr(\"class\", \"line\")\n .each(function (d) {\n const newTextBox = new TextBox()\n .target(this)\n .paddingTop(0)\n .paddingBottom(0)\n .paddingLeft(8)\n .paddingRight(8)\n .text(d)\n .render()\n ;\n newTextBox.element()\n .on(\"click\", function (d2) {\n context.click(d2.text());\n })\n .on(\"dblclick\", function (d2) {\n context.dblclick(d2.text());\n })\n ;\n context._listWidgets[d] = newTextBox;\n })\n ;\n\n let listHeight = 0;\n let listWidth = 0;\n for (const key in this._listWidgets) {\n if (!this._listWidgets.hasOwnProperty(key)) continue;\n const bbox = this._listWidgets[key].getBBox();\n listHeight += bbox.height;\n if (listWidth < bbox.width)\n listWidth = bbox.width;\n }\n\n let yPos = -listHeight / 2; // + lineHeight / 2;\n lineEnter.merge(line).each(function (d) {\n const widget = context._listWidgets[d];\n const bbox = widget.getBBox();\n widget\n .pos({ x: 0, y: yPos + bbox.height / 2 })\n .anchor(context.anchor())\n .fixedSize({ width: listWidth, height: bbox.height })\n .render()\n ;\n yPos += bbox.height;\n });\n line.exit()\n .remove()\n .each(function (d) {\n context._listWidgets[d].target(null);\n delete context._listWidgets[d];\n })\n ;\n }\n\n exit(domNode, element) {\n for (const key in this._listWidgets) {\n if (this._listWidgets.hasOwnProperty(key)) {\n this._listWidgets[key].target(null);\n }\n }\n super.exit(domNode, element);\n }\n\n // Events ---\n click(d) {\n // console.log(\"Click: \" + d);\n }\n\n dblclick(d) {\n // console.log(\"Double click: \" + d);\n }\n}\nList.prototype._class += \" common_List\";\n\nexport interface List {\n anchor(): \"\" | \"start\" | \"middle\" | \"end\";\n anchor(_: \"\" | \"start\" | \"middle\" | \"end\"): this;\n}\n\nList.prototype.publish(\"anchor\", \"start\", \"set\", \"Anchor Position\", [\"\", \"start\", \"middle\", \"end\"], { tags: [\"Private\"] });\n","import { event as d3Event, select as d3Select } from \"d3-selection\";\nimport { Icon } from \"./Icon.ts\";\nimport { IMenu } from \"./IMenu.ts\";\nimport { List } from \"./List.ts\";\nimport { SVGWidget } from \"./SVGWidget.ts\";\n\nimport \"../src/Menu.css\";\n\nexport class Menu extends SVGWidget implements IMenu {\n protected _icon = new Icon().shape(\"square\").diameter(14).paddingPercent(0);\n protected _list = new List();\n protected _open;\n\n constructor() {\n super();\n\n const context = this;\n this._list.click = function (d) {\n d3Event.stopPropagation();\n context.hideMenu();\n context.click(d);\n };\n this._open = false;\n }\n\n toggleMenu() {\n if (!this._open) {\n this.showMenu();\n } else {\n this.hideMenu();\n }\n }\n\n showMenu() {\n this.preShowMenu();\n this._open = true;\n this._list\n .data(this.data())\n .render()\n ;\n\n const bbox = this._icon.getBBox(true);\n const menuBBox = this._list.getBBox(true);\n const pos = {\n x: bbox.width / 2 - menuBBox.width / 2,\n y: bbox.height / 2 + menuBBox.height / 2\n };\n this._list\n .move(pos)\n ;\n const context = this;\n d3Select(\"body\")\n .on(\"click.\" + this._id, function () {\n if (context._open) {\n context.hideMenu();\n }\n })\n ;\n }\n\n hideMenu() {\n d3Select(\"body\")\n .on(\"click.\" + this._id, null)\n ;\n this._open = false;\n this._list\n .data([])\n .render()\n ;\n this.postHideMenu();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._icon\n .target(domNode)\n .render()\n ;\n\n this._list\n .target(domNode)\n .render()\n ;\n\n const context = this;\n this._icon.element()\n .on(\"click\", function () {\n d3Event.stopPropagation();\n context.toggleMenu();\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n element\n .classed(\"disabled\", this.data().length === 0)\n ;\n\n this._icon\n .faChar(this.faChar())\n .paddingPercent(this.paddingPercent())\n .render()\n ;\n }\n\n exit(domNode, element) {\n this._icon\n .target(null)\n ;\n\n this._list\n .target(null)\n ;\n\n super.exit(domNode, element);\n }\n\n // Events ---\n click(d) {\n }\n preShowMenu() {\n }\n postHideMenu() {\n }\n\n}\nMenu.prototype._class += \" common_Menu\";\n\nexport interface Menu {\n faChar(): string;\n faChar(_: string): this;\n paddingPercent(): number;\n paddingPercent(_: number): this;\n}\n\nMenu.prototype.publishProxy(\"faChar\", \"_icon\", null, \"\\uf0c9\");\nMenu.prototype.publishProxy(\"paddingPercent\", \"_icon\", null, 10);\n","import { PropertyExt } from \"./PropertyExt.ts\";\n\nexport class ProgressBar extends PropertyExt {\n\n protected _elementID: string;\n protected _running: boolean = false;\n protected _style;\n\n constructor() {\n super();\n }\n\n calcCSS(halflife: number, perc: number) {\n const bar_size = this.size();\n const bar_color = this.color();\n const blur_opacity = this.blurOpacity();\n const blur_opacity_hex = blur_opacity * 255 >= 16 ? Math.floor(blur_opacity * 255).toString(16).slice(-2) : \"00\";\n const blur_color = this.blurColor() || bar_color;\n const blur_size = this.blurSize();\n const blur_fx = this.blurBar() ? `background: radial-gradient(ellipse at 50% 50%, ${blur_color}${blur_opacity_hex}, ${blur_color}00, #00000000 ${blur_size}px);` : \"\";\n return `\n #${this._elementID}::before{\n content:\" \";display:block;position:absolute;\n height:${bar_size}px;width:${perc}%;\n left:0;top:0;\n background-color: ${bar_color};\n transition: width ${(halflife / 1000)}s;\n }\n #${this._elementID}::after{\n content:\" \";display:block;position:absolute;\n height:${blur_size}px;width:${blur_size * 2}px;\n left:calc(${perc}% - ${blur_size}px);\n top:${-((blur_size / 2) - (bar_size / 2))}px;\n background-color: ${bar_color};\n transition: left ${(halflife / 1000)}s;\n transform: rotate(1deg) translate(-${blur_size / 2.5}px,0px) scale(1.5,0.5);\n ${blur_fx}\n }\n `;\n }\n\n start() {\n this._running = true;\n this.updateProgress(this.halfLife(), 10);\n }\n\n finish() {\n this.updateProgress(100, 100);\n }\n\n enter(domNode, element) {\n this._elementID = element.attr(\"id\");\n if (!this._elementID) throw new Error(\"Target element requires an id attribute.\");\n this._style = element.insert(\"style\");\n }\n\n exit(_domNode, _element) {\n this._running = false;\n if (this._style)\n this._style.remove();\n delete this._style;\n }\n\n protected updateProgress(halflife: number, perc: number) {\n if (!this._running) return;\n if (this._style) {\n this._style.html(this.calcCSS(halflife, perc));\n }\n\n const percLimit = 95;\n halflife *= this.decay();\n perc = perc ? perc : 10;\n if (perc < percLimit) {\n setTimeout(() => {\n const _remaining = 100 - perc;\n this.updateProgress(halflife, perc + (_remaining / 2));\n }, perc === 10 ? 100 : halflife);\n } else if (perc === 100) {\n setTimeout(() => {\n this._running = false;\n if (this._style) {\n this._style.html(\"\");\n }\n }, halflife);\n }\n }\n}\nProgressBar.prototype._class += \" common_ProgressBar\";\n\nexport interface ProgressBar {\n halfLife(): number;\n halfLife(_: number): this;\n decay(): number;\n decay(_: number): this;\n size(): number;\n size(_: number): this;\n color(): string;\n color(_: string): this;\n blurBar(): boolean;\n blurBar(_: boolean): this;\n blurSize(): number;\n blurSize(_: number): this;\n blurColor(): string;\n blurColor(_: string): this;\n blurOpacity(): number;\n blurOpacity(_: number): this;\n}\nProgressBar.prototype.publish(\"halfLife\", 5000, \"number\", \"Half Life\");\nProgressBar.prototype.publish(\"decay\", 1.2, \"number\", \"Decay\");\nProgressBar.prototype.publish(\"size\", 2, \"number\", \"Size\");\nProgressBar.prototype.publish(\"color\", \"#2ed573\", \"string\", \"Color\");\nProgressBar.prototype.publish(\"blurBar\", true, \"boolean\", \"Bar Blur\");\nProgressBar.prototype.publish(\"blurSize\", 50, \"number\", \"Blur Size\");\nProgressBar.prototype.publish(\"blurColor\", \"#7bed9f\", \"string\", \"Blur Color (hex)\", null, { optional: true });\nProgressBar.prototype.publish(\"blurOpacity\", 0.35, \"number\", \"Blur Opacity\");\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\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, true);\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 function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\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 {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {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() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(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)\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() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\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\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\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();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\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();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n 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]);\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","import { select as d3Select } from \"d3-selection\";\nimport \"d3-transition\";\nimport { Icon } from \"./Icon.ts\";\nimport { Menu } from \"./Menu.ts\";\nimport { Shape } from \"./Shape.ts\";\nimport { SVGWidget } from \"./SVGWidget.ts\";\nimport { Text } from \"./Text.ts\";\n\nimport \"../src/Surface.css\";\n\nexport class Surface extends SVGWidget {\n _origMenuParam;\n _origShowContent;\n\n protected _iconWidget;\n protected _containerWidget;\n protected _titleRectWidget;\n protected _textWidget;\n _menuWidget;\n protected _surfaceButtons;\n\n protected _clipRect;\n protected buttonContainer;\n\n constructor() {\n super();\n\n this._iconWidget = new Icon()\n .faChar(\"\\uf07b\")\n .paddingPercent(50)\n ;\n this._containerWidget = new Shape()\n .class(\"container\")\n .shape(\"rect\")\n ;\n this._titleRectWidget = new Shape()\n .class(\"title\")\n .shape(\"rect\")\n ;\n this._textWidget = new Text()\n .class(\"title\")\n ;\n this._menuWidget = new Menu()\n .paddingPercent(0)\n ;\n const context = this;\n this._menuWidget.preShowMenu = function () {\n if (context.content() && context.content().hasOverlay()) {\n context.content().visible(false);\n }\n };\n this._menuWidget.postHideMenu = function () {\n if (context.content() && context.content().hasOverlay()) {\n context.content().visible(true);\n }\n };\n\n this._surfaceButtons = [];\n }\n\n enter(_domNode, _element) {\n super.enter(_domNode, _element);\n const element = _element.append(\"g\").attr(\"class\", \"frame\");\n const domNode = element.node();\n this._clipRect = element.append(\"defs\").append(\"clipPath\")\n .attr(\"id\", this.id() + \"_clip\")\n .append(\"rect\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"width\", this._size.width)\n .attr(\"height\", this._size.height)\n ;\n this._titleRectWidget\n .target(domNode)\n .render()\n .display(this.showTitle() && this.showIcon())\n ;\n this._iconWidget\n .target(domNode)\n .render()\n ;\n this._menuWidget\n .target(_domNode)\n ;\n this._textWidget\n .target(domNode)\n ;\n this._containerWidget\n .target(domNode)\n ;\n this.buttonContainer = d3Select(this._target).append(\"div\").attr(\"class\", \"svg-button-container\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n let width = this.width() - 1;\n const height = this.height() - 1;\n\n this._iconWidget\n .display(this.showTitle() && this.showIcon())\n .shape(this.icon_shape())\n .render()\n ;\n this._menuWidget\n .render()\n ;\n this._textWidget\n .text(this.title())\n .display(this.showTitle())\n .render()\n ;\n\n const surfaceButtons = this.buttonContainer.selectAll(\".surface-button\").data(this.buttonAnnotations());\n surfaceButtons.enter().append(\"button\").attr(\"class\", \"surface-button\")\n .each(function (button, idx) {\n const el = context._surfaceButtons[idx] = d3Select(this)\n .attr(\"class\", \"surface-button \" + (button.class ? button.class : \"\"))\n .attr(\"id\", button.id)\n .style(\"padding\", button.padding)\n .style(\"width\", button.width)\n .style(\"height\", button.height)\n .style(\"cursor\", \"pointer\")\n .on(\"click\", function (d) { context.click(d); });\n if (button.font === \"FontAwesome\") {\n el\n .append(\"i\")\n .attr(\"class\", \"fa\")\n .text(function () { return button.label; });\n } else {\n el\n .text(function () { return button.label; });\n }\n })\n ;\n surfaceButtons.exit()\n .each(function (_d, idx) {\n const element2 = d3Select(this);\n delete context._surfaceButtons[idx];\n element2.remove();\n })\n ;\n\n const buttonClientHeight = this.showTitle() ? Math.max.apply(null, this._surfaceButtons.map(function (d) { return d.node().offsetHeight; })) : 0;\n const iconClientSize = this.showTitle() && this.showIcon() ? this._iconWidget.getBBox(true) : { width: 0, height: 0 };\n const textClientSize = this._textWidget.getBBox(true);\n const menuClientSize = this._menuWidget.getBBox(true);\n const _titleRegionHeight = Math.max(iconClientSize.height, textClientSize.height, menuClientSize.height, buttonClientHeight);\n const titleRegionHeight = this.showTitle() ? _titleRegionHeight : 0;\n const yTitle = (-height + _titleRegionHeight) / 2;\n\n const titleTextHeight = this.showTitle() ? Math.max(textClientSize.height, menuClientSize.height, buttonClientHeight) : 0;\n const titleTextWidth = this.showTitle() ? textClientSize.width + menuClientSize.width : 0;\n if (titleTextWidth > width) {\n width = titleTextWidth;\n }\n\n const topMargin = titleRegionHeight <= titleTextHeight ? 0 : (titleRegionHeight - titleTextHeight) / 2;\n const leftMargin = topMargin;\n\n this._titleRectWidget\n .pos({ x: leftMargin, y: yTitle })\n .width(width - leftMargin * 2)\n .height(titleTextHeight)\n .display(this.showTitle())\n .render()\n ;\n this._iconWidget\n .move({ x: -width / 2 + iconClientSize.width / 2, y: yTitle })\n ;\n this._menuWidget\n .move({ x: width / 2 - menuClientSize.width / 2 - this.menuPadding(), y: yTitle })\n ;\n this._textWidget\n .move({ x: (iconClientSize.width / 2 - menuClientSize.width / 2) / 2, y: yTitle })\n ;\n\n const xPos = context._titleRectWidget.node().getBoundingClientRect().left + (context._size.width - leftMargin * 2) - context.buttonGutter() - this.buttonContainer.node().offsetWidth;\n const yPos = context._titleRectWidget.node().getBoundingClientRect().top + ((titleTextHeight - this.buttonContainer.node().offsetHeight) / 2);\n if (!isNaN(xPos)) {\n this.buttonContainer.style(\"left\", xPos + \"px\");\n }\n if (!isNaN(yPos)) {\n this.buttonContainer.style(\"top\", yPos + \"px\");\n }\n\n if (this.showTitle()) {\n this._containerWidget\n .pos({ x: leftMargin / 2, y: titleRegionHeight / 2 - topMargin / 2 })\n .width(width - leftMargin)\n .height(height - titleRegionHeight + topMargin)\n .render()\n ;\n } else {\n this._containerWidget\n .pos({ x: 0, y: 0 })\n .width(width)\n .height(height)\n .render()\n ;\n }\n\n if (this.showContent()) {\n const xOffset = leftMargin;\n const yOffset = titleRegionHeight - topMargin;\n\n const content = element.selectAll(\".content\").data(this.content() ? [this.content()] : [], function (d) { return d._id; });\n content.enter().append(\"g\")\n .attr(\"class\", \"content\")\n .attr(\"clip-path\", \"url(#\" + this.id() + \"_clip)\")\n .each(function (d) {\n d.target(this);\n })\n .merge(content)\n .attr(\"transform\", \"translate(\" + (leftMargin / 2) + \", \" + (titleRegionHeight / 2 - topMargin / 2) + \")\")\n .each(function (d) {\n const padding = {\n left: 0,\n top: 0,\n right: 1,\n bottom: 1\n };\n d\n .resize({\n width: width - xOffset - (padding.left + padding.right),\n height: height - yOffset - (padding.top + padding.bottom)\n })\n ;\n })\n ;\n if (this.content()) {\n this._clipRect\n .attr(\"x\", -(width - xOffset) / 2)\n .attr(\"y\", -(height - yOffset) / 2)\n .attr(\"width\", width - xOffset)\n .attr(\"height\", height - yOffset)\n ;\n }\n content.exit().transition()\n .each(function (d) { d.target(null); })\n .remove()\n ;\n }\n\n if (this._menuWidget.element() && this._menuWidget.element().node() && this._menuWidget.element().node().parentNode) {\n this._menuWidget.element().node().parentNode.appendChild(this._menuWidget.element().node()); // Make sure menu is on top (Z-Order POV)\n }\n }\n\n exit(domNode, element) {\n this._titleRectWidget\n .target(null)\n ;\n this._iconWidget\n .target(null)\n ;\n this._menuWidget\n .target(null)\n ;\n this._textWidget\n .target(null)\n ;\n this._containerWidget\n .target(null)\n ;\n if (this.content()) {\n this.content().target(null);\n }\n super.exit(domNode, element);\n }\n\n intersection(pointA, pointB) {\n const hits = [];\n const i1 = this._iconWidget.intersection(pointA, pointB, this._pos);\n if (i1) {\n hits.push({ i: i1, d: this.distance(i1, pointB) });\n }\n const i2 = this._titleRectWidget.intersection(pointA, pointB);\n if (i2) {\n hits.push({ i: i2, d: this.distance(i2, pointB) });\n }\n const i3 = this._containerWidget.intersection(pointA, pointB);\n if (i3) {\n hits.push({ i: i3, d: this.distance(i3, pointB) });\n }\n let nearest = null;\n hits.forEach(function (item) {\n if (nearest === null || nearest.d > item.d) {\n nearest = item;\n }\n });\n return nearest && nearest.i ? nearest.i : null;\n }\n\n click(d) {\n }\n\n}\nSurface.prototype._class += \" common_Surface\";\n\nexport interface Surface {\n showTitle(): boolean;\n showTitle(_: boolean): this;\n title(): string;\n title(_: string): this;\n titleFontSize(): string;\n titleFontSize(_: string): this;\n showIcon(): boolean;\n showIcon(_: boolean): this;\n icon_faChar(): string;\n icon_faChar(_: string): this;\n icon_shape(): string;\n icon_shape(_: string): this;\n content(): any;\n content(_: any): this;\n buttonAnnotations(): any[];\n buttonAnnotations(_: any[]): this;\n buttonGutter(): number;\n buttonGutter(_: number): this;\n showContent(): boolean;\n showContent(_: boolean): this;\n menu(): any[];\n menu(_: any[]): this;\n menuPadding(): number;\n menuPadding(_: number): this;\n}\n\nSurface.prototype.publish(\"showTitle\", true, \"boolean\", \"Show Title\", null, { tags: [\"Basic\"] });\nSurface.prototype.publish(\"title\", \"\", \"string\", \"Title\", null, { tags: [\"Basic\"] });\nSurface.prototype.publishProxy(\"titleFontSize\", \"_textWidget\", \"fontSize\");\nSurface.prototype.publish(\"showIcon\", true, \"boolean\", \"Show Title\", null, { tags: [\"Advanced\"] });\nSurface.prototype.publishProxy(\"icon_faChar\", \"_iconWidget\", \"faChar\");\nSurface.prototype.publishProxy(\"icon_shape\", \"_iconWidget\", \"shape\");\n\nSurface.prototype.publish(\"content\", null, \"widget\", \"Content\", null, { tags: [\"Private\"] });\n\nSurface.prototype.publish(\"buttonAnnotations\", [], \"array\", \"Button Array\", null, { tags: [\"Intermediate\"] });\nSurface.prototype.publish(\"buttonGutter\", 25, \"number\", \"Space Between Menu and Buttons\", null, { tags: [\"Intermediate\"] });\n\nSurface.prototype.publish(\"showContent\", true, \"boolean\", \"Show Content\", null, { tags: [\"Intermediate\"] });\nSurface.prototype.publish(\"menu\", [], \"array\", \"Menu List Data\", null, { tags: [\"Intermediate\"] });\nSurface.prototype.publish(\"menuPadding\", 2, \"number\", \"Menu Padding\", null, { tags: [\"Advanced\"] });\n\nSurface.prototype._origMenuParam = Surface.prototype.menu;\nSurface.prototype.menu = function (this: Surface, _?) {\n Surface.prototype._origMenuParam.apply(this, arguments);\n if (arguments.length) {\n this._menuWidget.data(_);\n return this;\n }\n return this._menuWidget.data();\n};\n\nSurface.prototype._origShowContent = Surface.prototype.showContent;\nSurface.prototype.showContent = function (_?) {\n const retVal = Surface.prototype._origShowContent.apply(this, arguments);\n if (arguments.length) {\n if (this.content()) {\n this.content().visible(this.showContent());\n }\n }\n return retVal;\n};\n","import { dispatch as d3Dispatch } from \"d3-dispatch\";\nimport { drag as d3Drag } from \"d3-drag\";\nimport { event as d3Event, select as d3Select } from \"d3-selection\";\nimport { Surface } from \"./Surface.ts\";\n\nimport \"../src/ResizeSurface.css\";\n\nexport class ResizeSurface extends Surface {\n\n protected handleWidth;\n protected handles;\n protected dispatch;\n protected drag;\n protected _domNode;\n protected _dragHandlePos;\n protected _dragStartPos;\n protected _dragStartSize;\n protected _prevPosSize;\n protected _textPosSize;\n protected _iconPosSize;\n\n constructor() {\n super();\n\n this.handleWidth = 8;\n this.handles = [{ loc: \"NW\" }, { loc: \"N\" }, { loc: \"NE\" }, { loc: \"E\" }, { loc: \"SE\" }, { loc: \"S\" }, { loc: \"SW\" }, { loc: \"W\" }];\n\n const context = this;\n this.dispatch = d3Dispatch(\"sizestart\", \"size\", \"sizeend\");\n this.drag = d3Drag()\n .subject(function (d) { return d; })\n ;\n this.drag\n .on(\"start\", function (d) {\n context.dispatch.call(\"sizestart\", context, d.loc);\n if (context.allowResize()) {\n d3Event.sourceEvent.stopPropagation();\n context._dragHandlePos = { x: d.x, y: d.y };\n context._dragStartPos = context.pos();\n context._dragStartSize = context.size();\n context._prevPosSize = {\n x: context._dragStartPos.x,\n y: context._dragStartPos.y,\n width: context._dragStartSize.width,\n height: context._dragStartSize.height\n };\n context._textPosSize = context._textWidget.getBBox(true);\n context._iconPosSize = context._iconWidget.getBBox(true);\n context.showContent(false);\n }\n })\n .on(\"drag\", function (d) {\n if (context.allowResize()) {\n d3Event.sourceEvent.stopPropagation();\n const _dx = d3Event.x - context._dragHandlePos.x;\n const _dy = d3Event.y - context._dragHandlePos.y;\n const delta = { x: 0, y: 0, w: 0, h: 0 };\n switch (d.loc) {\n case \"NW\":\n delta.x = _dx / 2;\n delta.w = -_dx;\n /* falls through */\n case \"N\":\n delta.y = _dy / 2;\n delta.h = -_dy;\n break;\n case \"NE\":\n delta.y = _dy / 2;\n delta.h = -_dy;\n /* falls through */\n case \"E\":\n delta.x = _dx / 2;\n delta.w = _dx;\n break;\n case \"SE\":\n delta.x = _dx / 2;\n delta.w = _dx;\n /* falls through */\n case \"S\":\n delta.y = _dy / 2;\n delta.h = _dy;\n break;\n case \"SW\":\n delta.y = _dy / 2;\n delta.h = _dy;\n /* falls through */\n case \"W\":\n delta.x = _dx / 2;\n delta.w = -_dx;\n break;\n }\n const posSize = {\n x: context._dragStartPos.x + delta.x,\n y: context._dragStartPos.y + delta.y,\n width: context._dragStartSize.width + delta.w,\n height: context._dragStartSize.height + delta.h\n };\n if (posSize.width < context._iconPosSize.width * 2 + context._textPosSize.width) {\n posSize.x = context._prevPosSize.x;\n posSize.width = context._prevPosSize.width;\n }\n if (posSize.height < context._textPosSize.height + 48) {\n posSize.y = context._prevPosSize.y;\n posSize.height = context._prevPosSize.height;\n }\n context\n .pos({ x: posSize.x, y: posSize.y })\n .size({ width: posSize.width, height: posSize.height })\n .render()\n .getBBox(true)\n ;\n context.dispatch.call(\"size\", context, d.loc);\n context._prevPosSize = posSize;\n }\n })\n .on(\"end\", function (d) {\n if (context.allowResize()) {\n d3Event.sourceEvent.stopPropagation();\n context\n .showContent(true)\n .render()\n ;\n context._containerWidget.getBBox(true);\n context._titleRectWidget.getBBox(true);\n context.dispatch.call(\"sizeend\", context, d.loc);\n }\n })\n ;\n }\n\n move(_) {\n const retVal = super.move.apply(this, arguments);\n this.updateHandles(this._domNode, this._element);\n return retVal;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this.updateHandles(domNode, element);\n }\n\n updateHandles(_domNode, _element) {\n const sizeHandles = this._placeholderElement.selectAll(\"rect\").data(this.handles, function (d) { return d.loc; });\n const sizeHandlesEnter = sizeHandles.enter().append(\"rect\")\n .attr(\"class\", function (d) { return \"resize\" + d.loc; })\n .call(this.drag)\n ;\n\n const l = this._pos.x + this._containerWidget._pos.x - this._containerWidget.width() / 2;\n const t = this._pos.y + this._titleRectWidget._pos.y - this._titleRectWidget.height() / 2;\n const r = this._pos.x + this._containerWidget._pos.x + this._containerWidget.width() / 2;\n const b = this._pos.y + this._containerWidget._pos.y + this._containerWidget.height() / 2;\n const w = r - l;\n const h = b - t;\n const context = this;\n sizeHandlesEnter.merge(sizeHandles)\n .each(function (d) {\n switch (d.loc) {\n case \"NW\":\n d.x = l - context.handleWidth / 2;\n d.y = t - context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"N\":\n d.x = l + context.handleWidth / 2;\n d.y = t - context.handleWidth / 2;\n d.width = w - context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"NE\":\n d.x = r - context.handleWidth / 2;\n d.y = t - context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"E\":\n d.x = r - context.handleWidth / 2;\n d.y = t + context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = h - context.handleWidth;\n break;\n case \"SE\":\n d.x = r - context.handleWidth / 2;\n d.y = b - context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"S\":\n d.x = l + context.handleWidth / 2;\n d.y = b - context.handleWidth / 2;\n d.width = w - context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"SW\":\n d.x = l - context.handleWidth / 2;\n d.y = b - context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"W\":\n d.x = l - context.handleWidth / 2;\n d.y = t + context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = h - context.handleWidth;\n break;\n }\n d3Select(this)\n .attr(\"x\", d.x)\n .attr(\"y\", d.y)\n .attr(\"width\", d.width)\n .attr(\"height\", d.height)\n ;\n })\n ;\n }\n}\nResizeSurface.prototype._class += \" common_ResizeSurface\";\n\nexport interface ResizeSurface {\n allowResize(): boolean;\n allowResize(_: boolean): this;\n}\n\nResizeSurface.prototype.publish(\"allowResize\", true, \"boolean\", \"Sets if surface can be resized\", null, { tags: [\"Private\", \"Shared\"] });\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","import { event as d3Event } from \"d3-selection\";\nimport { HTMLWidget } from \"./HTMLWidget.ts\";\nimport { fa5Class } from \"./Utility.ts\";\nimport { Widget } from \"./Widget.ts\";\n\nimport \"../src/TitleBar.css\";\n\n// Lite button for titlebar ---\nexport class Button extends HTMLWidget {\n private _enabled = true;\n private _i;\n\n constructor() {\n super();\n this._tag = \"a\";\n }\n\n enter(domNode: HTMLElement, element) {\n super.enter(domNode, element);\n const context = this;\n this._i = this._element\n .attr(\"href\", \"#\")\n .on(\"click\", function () {\n context.click();\n d3Event.preventDefault();\n })\n .on(\"mousemove\", this.mouseMove)\n .on(\"mouseout\", this.mouseOut)\n .append(\"i\")\n ;\n }\n\n update(domNode: HTMLElement, element) {\n super.update(domNode, element);\n element\n .classed(\"disabled\", !this.enabled())\n .attr(\"title\", this.tooltip())\n ;\n this._i.attr(\"class\", `fa ${fa5Class(this.faChar())} fa-lg fa-fw`);\n }\n\n // Events ---\n click() {\n }\n\n mouseMove(d, idx, groups) {\n }\n\n mouseOut(d, idx, groups) {\n }\n\n enabled(): boolean;\n enabled(_: boolean): this;\n enabled(_?: boolean): boolean | this {\n if (!arguments.length) return this._enabled;\n this._enabled = _;\n return this;\n }\n}\nButton.prototype._class += \" common_Button\";\nexport interface Button {\n faChar(): string;\n faChar(_: string): this;\n tooltip(): string;\n tooltip(_: string): this;\n}\nButton.prototype.publish(\"faChar\", \"\", \"string\", \"FontAwesome class\");\nButton.prototype.publish(\"tooltip\", \"\", \"string\", \"Displays as the button alt text attribute\");\n\n// Sticky button ---\nexport class StickyButton extends Button {\n\n enter(domNode: HTMLElement, element) {\n super.enter(domNode, element);\n }\n\n update(domNode: HTMLElement, element) {\n super.update(domNode, element);\n element.classed(\"selected\", this.selected());\n }\n}\nStickyButton.prototype._class += \" common_StickyButton\";\nexport interface StickyButton {\n selected(): boolean;\n selected(_: boolean): this;\n}\nStickyButton.prototype.publish(\"selected\", false, \"boolean\");\n\n// Toggle button ---\nexport class ToggleButton extends StickyButton {\n\n enter(domNode: HTMLElement, element) {\n element.on(\"click.sel\", (d, idx, groups) => {\n this\n .selected(!this.selected())\n .render()\n ;\n d3Event.preventDefault();\n });\n super.enter(domNode, element);\n }\n}\nToggleButton.prototype._class += \" common_ToggleButton\";\n\n// Spacer ---\nexport class Spacer extends HTMLWidget {\n\n enter(domNode: HTMLElement, element) {\n super.enter(domNode, element);\n element\n .attr(\"class\", this.vline() ? \"spacer vline\" : \"spacer\")\n .attr(\"href\", \"#\")\n .append(\"i\")\n ;\n }\n}\nSpacer.prototype._class += \" common_Spacer\";\n\nexport interface Spacer {\n vline(): boolean;\n vline(_: boolean): this;\n}\nSpacer.prototype.publish(\"vline\", true, \"boolean\");\n\nexport class SelectDropDown extends HTMLWidget {\n private _enabled = true;\n\n constructor() {\n super();\n this._tag = \"select\";\n }\n\n enabled(): boolean;\n enabled(_: boolean): this;\n enabled(_?: boolean): boolean | this {\n if (!arguments.length) return this._enabled;\n this._enabled = _;\n return this;\n }\n\n enter(domNode: HTMLSelectElement, element) {\n super.enter(domNode, element);\n const context = this;\n element.on(\"change\", function (d) {\n const values = context.values();\n for (const key in context.values()) {\n if (this.value === values[key]) {\n context.selected(key);\n break;\n }\n }\n context.click(this.value);\n });\n }\n\n update(domNode: HTMLElement, element) {\n super.update(domNode, element);\n element\n .classed(\"disabled\", !this.enabled())\n .attr(\"title\", this.tooltip())\n ;\n\n const values = this.values();\n\n const options = element.selectAll(\".icon-bar-select-option\").data(Object.keys(values));\n const optionUpdate = options.enter().append(\"option\")\n .attr(\"class\", \"icon-bar-select-option\")\n .merge(options)\n .attr(\"value\", r => values[r])\n .attr(\"selected\", r => r === this.selected() ? \"selected\" : null)\n .text(r => r)\n ;\n options.exit().remove();\n optionUpdate.order();\n }\n\n // Events ---\n click(value) {\n }\n\n mouseMove(d, idx, groups) {\n }\n\n mouseOut(d, idx, groups) {\n }\n}\nSelectDropDown.prototype._class += \" common_SelectDropDown\";\nexport interface SelectDropDown {\n values(): { [key: string]: string };\n values(_: { [key: string]: string }): this;\n selected(): string;\n selected(_: string): this;\n tooltip(): string;\n tooltip(_: string): this;\n}\nSelectDropDown.prototype.publish(\"values\", {}, \"object\", \"Label, Values\");\nSelectDropDown.prototype.publish(\"selected\", \"\", \"string\", \"Selected Item\");\nSelectDropDown.prototype.publish(\"tooltip\", \"\", \"string\", \"Displays as the button alt text attribute\");\n\n// IconBar ---\nexport class IconBar extends HTMLWidget {\n _divIconBar;\n _buttons: Widget[] = [];\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._divIconBar = element.append(\"div\")\n .attr(\"class\", \"icon-bar\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n let buttons = this.buttons().filter(button => this.hiddenButtons().indexOf(button) < 0);\n buttons = buttons.reduce((prev, item, idx) => {\n if (item instanceof Spacer) {\n if ((prev.length === 0 || idx === buttons.length - 1)) {\n return prev;\n } else if (buttons[idx + 1] instanceof Spacer) {\n return prev;\n }\n }\n prev.push(item);\n return prev;\n }, []);\n const icons = this._divIconBar.selectAll(\".icon-bar-item\").data(buttons, (d: Widget) => d.id());\n icons.enter().append(\"div\")\n .attr(\"class\", \"icon-bar-item\")\n .each(function (this: HTMLElement, d: Widget) {\n d.target(this);\n })\n .merge(icons)\n .each(function (d: Widget) {\n d.render();\n })\n ;\n icons.exit()\n .each(function (d: Widget) {\n d.target(null);\n })\n .remove()\n ;\n icons.order();\n }\n\n exit(domNode, element) {\n this.buttons().forEach(b => b.target(null));\n super.exit(domNode, element);\n }\n}\nIconBar.prototype._class += \" common_IconBar\";\n\nexport interface IconBar {\n buttons(): Widget[];\n buttons(_: Widget[]): this;\n hiddenButtons(): Widget[];\n hiddenButtons(_: Widget[]): this;\n}\nIconBar.prototype.publish(\"buttons\", [], \"widgetArray\", null, { internal: true });\nIconBar.prototype.publish(\"hiddenButtons\", [], \"widgetArray\", null, { internal: true });\n\n// SelectionBar ---\nexport class SelectionButton extends StickyButton {\n _owner: SelectionBar;\n\n enter(domNode: HTMLElement, element) {\n element.on(\"click.sel\", (d, idx, groups) => {\n this.selected(true).render();\n d3Event.preventDefault();\n });\n super.enter(domNode, element);\n }\n\n selected(): boolean;\n selected(_: boolean): this;\n selected(_?: boolean): boolean | this {\n const retVal = super.selected.apply(this, arguments);\n if (_ && this._owner) {\n this._owner.buttons().filter(sb => sb !== this && sb instanceof SelectionButton).forEach((sb: SelectionButton) => sb.selected(false).render());\n this._owner.selected(this);\n }\n return retVal;\n }\n}\nSelectionButton.prototype._class += \" common_SelectionButton\";\n\nexport class SelectionBar extends IconBar {\n\n buttons(): Array<SelectionButton | Spacer>;\n buttons(_: Array<SelectionButton | Spacer>): this;\n buttons(_?: Array<SelectionButton | Spacer>): Array<SelectionButton | Spacer> | this {\n const retVal = super.buttons.apply(this, arguments);\n if (arguments.length) {\n _.filter(b => b instanceof SelectionButton).forEach((sb: SelectionButton) => {\n sb._owner = this;\n });\n }\n return retVal;\n }\n\n // Events ---\n selected(row: SelectionButton) {\n }\n}\nSelectionBar.prototype._class += \" common_SelectionBar\";\n\n// Titlebar ---\nexport class TitleBar extends IconBar {\n\n _divTitle;\n _divTitleIcon;\n _divTitleText;\n _divDescriptionText;\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n this._divTitle = element.append(\"div\")\n .attr(\"class\", \"title-title\")\n .style(\"min-width\", \"0px\")\n ;\n this._divTitleIcon = this._divTitle.append(\"div\")\n .attr(\"class\", \"title-icon\")\n .style(\"font-family\", this.titleIconFont())\n .style(\"font-size\", `${this.titleIconFontSize()}px`)\n .style(\"width\", `${this.titleIconFontSize()}px`)\n ;\n this._divTitle.append(\"div\")\n .attr(\"class\", \"data-count\")\n ;\n this._divTitleText = this._divTitle.append(\"div\")\n .attr(\"class\", \"title-text\")\n .style(\"font-family\", this.titleFont())\n .style(\"font-size\", `${this.titleFontSize()}px`)\n ;\n this._divDescriptionText = this._divTitle.append(\"div\")\n .attr(\"class\", \"description-text\")\n .style(\"font-family\", this.descriptionFont())\n ;\n\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n this._divTitleIcon\n .text(this.titleIcon())\n .style(\"display\", this.titleIcon() !== \"\" ? \"inline-block\" : \"none\")\n ;\n this._divTitleText\n .text(this.title())\n .attr(\"title\", this.title())\n ;\n this._divDescriptionText\n .style(\"display\", this.description_exists() ? \"block\" : \"none\")\n .style(\"font-size\", this.description_exists() ? `${this.descriptionFontSize()}px` : null)\n .style(\"line-height\", this.description_exists() ? `${this.descriptionFontSize()}px` : null)\n .text(this.description())\n ;\n\n super.update(domNode, element);\n }\n}\nTitleBar.prototype._class += \" common_TitleBar\";\n\nexport interface TitleBar {\n title(): string;\n title(_: string): this;\n titleIcon(): string;\n titleIcon(_: string): this;\n titleIconFont(): string;\n titleIconFont(_: string): this;\n titleFont(): string;\n titleFont(_: string): this;\n titleIconFontSize(): number;\n titleIconFontSize(_: number): this;\n titleFontSize(): number;\n titleFontSize(_: number): this;\n description(): string;\n description(_: string): this;\n description_exists(): boolean;\n descriptionFont(): string;\n descriptionFont(_: string): this;\n descriptionFontSize(): number;\n descriptionFontSize(_: number): this;\n}\nTitleBar.prototype.publish(\"titleIcon\", \"\", \"string\", \"Icon text\");\nTitleBar.prototype.publish(\"titleIconFont\", \"\", \"string\", \"Icon font-family\");\nTitleBar.prototype.publish(\"titleIconFontSize\", 28, \"number\", \"Icon font-size (pixels)\");\nTitleBar.prototype.publish(\"title\", \"\", \"string\", \"Title text\");\nTitleBar.prototype.publish(\"titleFont\", \"\", \"string\", \"Title font-family\");\nTitleBar.prototype.publish(\"titleFontSize\", 20, \"number\", \"Title font-size (pixels)\");\nTitleBar.prototype.publish(\"description\", null, \"string\", \"Description text\", null, { optional: true });\nTitleBar.prototype.publish(\"descriptionFont\", \"\", \"string\", \"Description font-family\");\nTitleBar.prototype.publish(\"descriptionFontSize\", 10, \"number\", \"Description font-size (pixels)\");\n","import { event as d3Event, mouse as d3Mouse } from \"d3-selection\";\nimport { zoom as d3Zoom, zoomIdentity as d3ZoomIdentity } from \"d3-zoom\";\nimport { SVGWidget } from \"./SVGWidget.ts\";\nimport { safeRaise } from \"./Utility.ts\";\nimport { Button, IconBar, Spacer, ToggleButton } from \"./TitleBar.ts\";\n\nimport \"../src/SVGZoomWidget.css\";\n\nexport type MouseMode = \"zoom\" | \"marqueeSelection\";\n\nexport class SVGZoomWidget extends SVGWidget {\n\n protected _renderElement;\n\n private _currZoom;\n protected _zoomScale = 1;\n protected _zoomTranslate = [0, 0];\n protected _zoomRoot;\n protected _zoomGrab;\n protected _zoomG;\n private _prevZoomable;\n\n protected _marqueeSelectionRoot;\n protected _marqueeSelection;\n\n protected _autoSelectionMode = false;\n\n protected _toggleMarqueeSelection = new ToggleButton().faChar(\"fa-square-o\").tooltip(\"Marquee Selection\")\n .on(\"click\", () => {\n if (this._toggleMarqueeSelection.selected()) {\n this.mouseMode(\"marqueeSelection\");\n }\n this.updateIconBar();\n })\n ;\n\n protected _toggleZoom = new ToggleButton().faChar(\"fa-mouse-pointer\").tooltip(\"Zoom\")\n .on(\"click\", () => {\n if (this._toggleZoom.selected()) {\n this.mouseMode(\"zoom\");\n }\n this.updateIconBar();\n })\n ;\n\n _iconBar = new IconBar()\n .buttons([\n this._toggleMarqueeSelection,\n this._toggleZoom,\n new Spacer().vline(false),\n new Button().faChar(\"fa-arrows-alt\").tooltip(\"Zoom to fit\")\n .on(\"click\", () => {\n this.zoomToFit();\n }),\n new Spacer().vline(false),\n new Button().faChar(\"fa-plus\").tooltip(\"Zoom in\")\n .on(\"click\", () => {\n this.zoomPlus();\n }),\n new Button().faChar(\"fa-minus\").tooltip(\"Zoom out\")\n .on(\"click\", () => {\n this.zoomMinus();\n })\n ])\n ;\n\n constructor() {\n super();\n\n this._currZoom = d3Zoom()\n .scaleExtent([0.05, 20])\n .on(\"zoom end\", (evt) => {\n this.onZoomed();\n })\n ;\n }\n\n getScreenBBox(target: any) {\n let targetel = target;\n\n while (targetel.getScreenCTM == null && targetel.parentNode == null) {\n targetel = targetel.parentNode;\n }\n\n const bbox: any = {};\n const matrix = targetel.getScreenCTM();\n const tbbox = targetel.getBBox();\n const width = tbbox.width;\n const height = tbbox.height;\n const x = tbbox.x;\n const y = tbbox.y;\n const point = this._placeholderElement.node().createSVGPoint();\n point.x = x;\n point.y = y;\n\n bbox.nw = point.matrixTransform(matrix);\n point.x += width;\n bbox.ne = point.matrixTransform(matrix);\n point.y += height;\n bbox.se = point.matrixTransform(matrix);\n point.x -= width;\n bbox.sw = point.matrixTransform(matrix);\n point.y -= height / 2;\n bbox.w = point.matrixTransform(matrix);\n point.x += width;\n bbox.e = point.matrixTransform(matrix);\n point.x -= width / 2;\n point.y -= height / 2;\n bbox.n = point.matrixTransform(matrix);\n point.y += height;\n bbox.s = point.matrixTransform(matrix);\n\n return {\n x: bbox.nw.x,\n y: bbox.nw.y,\n width: bbox.se.x - bbox.nw.x,\n height: bbox.se.y - bbox.nw.y\n };\n }\n\n zoomScale(): number {\n return this._zoomScale;\n }\n\n zoomTranslate(): number[] {\n return this._zoomTranslate;\n }\n\n zoomExtent(range): void {\n this._currZoom.scaleExtent(range);\n }\n\n zoomTo(translate?, scale?, transitionDuration = 250) {\n translate = translate || this._zoomTranslate;\n scale = scale || this._zoomScale;\n transitionDuration = transitionDuration === undefined ? this.zoomDuration() : transitionDuration;\n\n this._zoomRoot.transition().duration(transitionDuration)\n .call(this._currZoom.transform, d3ZoomIdentity.translate(translate[0], translate[1]).scale(scale))\n ;\n }\n\n zoomPlus() {\n this._zoomRoot.transition()\n .call(this._currZoom.scaleBy, 1.33)\n ;\n }\n\n zoomMinus() {\n this._zoomRoot.transition()\n .call(this._currZoom.scaleBy, 1 / 1.33)\n ;\n }\n\n centerOnBBox(bbox, transitionDuration?) {\n if (bbox.width && bbox.height) {\n const x = bbox.x + bbox.width / 2;\n const y = bbox.y + bbox.height / 2;\n const width = this.width();\n const height = this.height();\n\n const scale = this.zoomScale();\n const translate = [width / 2 - scale * x, height / 2 - scale * y];\n this.zoomTo(translate, scale, transitionDuration);\n }\n }\n\n getRenderElementBBox() {\n return this._renderElement.node().getBBox();\n }\n\n calcZoomToBBox(bbox, widthOnly: boolean = false, scale?: number) {\n const width = this.width();\n const height = this.height();\n if (bbox.width && bbox.height) {\n const x = bbox.x + bbox.width / 2;\n const y = bbox.y + bbox.height / 2;\n const dx = bbox.width;\n const dy = bbox.height;\n\n let newScale = scale || 1 / (widthOnly ? dx / width : Math.max(dx / width, dy / height));\n if (this.zoomToFitLimit_exists() && newScale > this.zoomToFitLimit()) {\n newScale = this.zoomToFitLimit();\n }\n const translate = [width / 2 - newScale * x, height / 2 - newScale * y];\n return { translate, newScale };\n }\n return { translate: [width / 2, height / 2], newScale: scale };\n }\n\n zoomToBBox(bbox, transitionDuration?, widthOnly: boolean = false, scale?: number) {\n const { translate, newScale } = this.calcZoomToBBox(bbox, widthOnly, scale);\n this.zoomTo(translate, newScale, transitionDuration);\n }\n\n zoomToScale(scale, transitionDuration?) {\n if (this._renderElement) {\n const bbox = this.getRenderElementBBox();\n this.zoomToBBox(bbox, transitionDuration, undefined, scale);\n }\n }\n\n zoomToWidth(transitionDuration?) {\n if (this._renderElement) {\n const bbox = this.getRenderElementBBox();\n this.zoomToBBox(bbox, transitionDuration, true);\n }\n }\n\n zoomToFit(transitionDuration?) {\n if (this._renderElement) {\n const bbox = this.getRenderElementBBox();\n this.zoomToBBox(bbox, transitionDuration);\n }\n }\n\n onZoomed() {\n if (d3Event && d3Event.transform && this.mouseMode() === \"zoom\") {\n this.zoomed(d3Event.transform);\n }\n }\n\n zoomed(transform) {\n this._zoomScale = transform.k;\n this._zoomTranslate = [transform.x, transform.y];\n this._zoomG.attr(\"transform\", transform);\n }\n\n updateIconBar() {\n this._toggleMarqueeSelection.selected(this.mouseMode() === \"marqueeSelection\").render();\n this._toggleZoom.selected(this.mouseMode() === \"zoom\").render();\n }\n\n mousedownMarqueeSelection() {\n const p = d3Mouse(this._marqueeSelectionRoot.node());\n this._marqueeSelection = this.element().append(\"rect\")\n .attr(\"class\", \"marqueeSelection\")\n .attr(\"rx\", 6)\n .attr(\"ry\", 6)\n .attr(\"x\", p[0])\n .attr(\"y\", p[1])\n .attr(\"width\", 0)\n .attr(\"height\", 0)\n ;\n this.startMarqueeSelection();\n }\n\n mousemoveMarqueeSelection() {\n if (this._marqueeSelection) {\n const p = d3Mouse(this._marqueeSelectionRoot.node());\n const d = {\n x: parseInt(this._marqueeSelection.attr(\"x\"), 10),\n y: parseInt(this._marqueeSelection.attr(\"y\"), 10),\n width: parseInt(this._marqueeSelection.attr(\"width\"), 10),\n height: parseInt(this._marqueeSelection.attr(\"height\"), 10)\n };\n const move = {\n x: p[0] - d.x,\n y: p[1] - d.y\n };\n\n if (move.x < 1 || (move.x * 2 < d.width)) {\n d.x = p[0];\n d.width -= move.x;\n } else {\n d.width = move.x;\n }\n\n if (move.y < 1 || (move.y * 2 < d.height)) {\n d.y = p[1];\n d.height -= move.y;\n } else {\n d.height = move.y;\n }\n\n this._marqueeSelection\n .attr(\"x\", d.x)\n .attr(\"y\", d.y)\n .attr(\"width\", d.width)\n .attr(\"height\", d.height)\n ;\n\n this.updateMarqueeSelection({\n x: (d.x - this._zoomTranslate[0]) / this._zoomScale,\n y: (d.y - this._zoomTranslate[1]) / this._zoomScale,\n width: d.width / this._zoomScale,\n height: d.height / this._zoomScale\n });\n }\n }\n\n mouseupMarqueeSelection() {\n if (this._marqueeSelection) {\n this._marqueeSelection.remove();\n delete this._marqueeSelection;\n if (this._autoSelectionMode) {\n this._autoSelectionMode = false;\n this.mouseMode(\"zoom\");\n this.updateIconBar();\n }\n this.endMarqueeSelection();\n }\n }\n\n enter(domNode, _element) {\n super.enter(domNode, _element);\n _element.style(\"user-select\", \"none\");\n\n this._marqueeSelectionRoot = _element.append(\"rect\")\n .attr(\"class\", \"zoomBackground\")\n .attr(\"width\", this.width())\n .attr(\"height\", this.height())\n .style(\"fill\", \"transparent\")\n .style(\"cursor\", \"crosshair\")\n .on(\"mousedown\", () => {\n this.mousedownMarqueeSelection();\n })\n .on(\"mousemove\", () => {\n this.mousemoveMarqueeSelection();\n })\n .on(\"mouseup mouseout\", () => {\n this.mouseupMarqueeSelection();\n })\n ;\n\n this._zoomRoot = _element.append(\"g\");\n\n this._zoomGrab = this._zoomRoot.append(\"rect\")\n .attr(\"class\", \"zoomBackground\")\n .attr(\"width\", this.width())\n .attr(\"height\", this.height())\n .style(\"fill\", \"transparent\")\n .on(\"mousedown\", () => {\n if (d3Event.shiftKey && this.mouseMode() === \"zoom\") {\n d3Event.stopPropagation();\n this.mouseMode(\"marqueeSelection\");\n this._autoSelectionMode = true;\n this.mousedownMarqueeSelection();\n }\n })\n ;\n this._zoomG = this._zoomRoot.append(\"g\");\n this._renderElement = this._zoomG.append(\"g\");\n\n if (this._prevZoomable !== this.zoomable()) {\n if (this.zoomable()) {\n this._zoomRoot.call(this._currZoom);\n } else {\n this._zoomRoot.on(\".zoom\", null);\n }\n this._prevZoomable = this.zoomable();\n }\n\n this._iconBar.target(this._zoomRoot.node());\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._zoomGrab\n .attr(\"width\", this.width())\n .attr(\"height\", this.height())\n ;\n\n this._marqueeSelectionRoot\n .attr(\"width\", this.width())\n .attr(\"height\", this.height())\n ;\n\n this._iconBar\n .visible(this.zoomable() && this.showToolbar())\n .render((w: IconBar) => {\n const bbox = w.getBBox();\n w.reposition({ x: this.width() - bbox.width - 4, y: -4 });\n })\n ;\n }\n\n exit(domNode, element) {\n this._iconBar.target(null);\n super.exit(domNode, element);\n }\n\n // Events\n startMarqueeSelection() {\n }\n\n updateMarqueeSelection(rect: { x: number, y: number, width: number, height: number }) {\n }\n\n endMarqueeSelection() {\n }\n}\nSVGZoomWidget.prototype._class += \" common_SVGZoomWidget\";\n\nexport interface SVGZoomWidget {\n showToolbar(): boolean;\n showToolbar(_: boolean): this;\n zoomable(): boolean;\n zoomable(_: boolean): this;\n zoomDuration(): number;\n zoomDuration(_: number): this;\n zoomToFitLimit(): number;\n zoomToFitLimit(_: number): this;\n zoomToFitLimit_exists(): boolean;\n mouseMode(_: MouseMode): this;\n mouseMode(): MouseMode;\n}\nSVGZoomWidget.prototype.publish(\"showToolbar\", true, \"boolean\", \"Show Toolbar\");\nSVGZoomWidget.prototype.publish(\"zoomable\", true, \"boolean\", \"Enable/Disable Zooming\");\nSVGZoomWidget.prototype.publish(\"zoomDuration\", 250, \"number\", \"Transition Duration\");\nSVGZoomWidget.prototype.publish(\"zoomToFitLimit\", undefined, \"number\", \"Zoom to fit limit\", undefined, { optional: true });\nSVGZoomWidget.prototype.publish(\"mouseMode\", \"zoom\", \"set\", \"Mouse Mode (zoom | marqueeSelection)\", [\"zoom\", \"marqueeSelection\"]);\n\nconst _origMouseMode = SVGZoomWidget.prototype.mouseMode;\nSVGZoomWidget.prototype.mouseMode = function (_?, transitionDuration?) {\n const retVal = _origMouseMode.apply(this, arguments);\n if (arguments.length) {\n if (_ === \"zoom\") {\n safeRaise(this._zoomRoot.node());\n } else {\n safeRaise(this._marqueeSelectionRoot.node());\n }\n this.updateIconBar();\n }\n return retVal;\n};\n","import { Widget } from \"./Widget.ts\";\n\nexport class WidgetArray extends Widget {\n\n constructor() {\n super();\n }\n}\nWidgetArray.prototype._class += \" common_WidgetArray\";\n\nexport interface WidgetArray {\n content(): Widget[];\n content(_: Widget[]): this;\n}\nWidgetArray.prototype.publish(\"content\", [], \"widgetArray\", \"Widget Array\");\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export * from \"./__package__.ts\";\nexport * from \"./CanvasWidget.ts\";\nexport * from \"./Class.ts\";\nimport * as Database from \"./Database.ts\";\nexport { Database };\nexport * from \"./Entity.ts\";\nexport * from \"./EntityCard.ts\";\nexport * from \"./EntityPin.ts\";\nexport * from \"./EntityRect.ts\";\nexport * from \"./EntityVertex.ts\";\nexport * from \"./FAChar.ts\";\nexport * from \"./HTMLWidget.ts\";\nexport * from \"./Icon.ts\";\nexport * from \"./IList.ts\";\nexport * from \"./Image.ts\";\nexport * from \"./IMenu.ts\";\nexport * from \"./List.ts\";\nexport * from \"./Menu.ts\";\nimport * as Palette from \"./Palette.ts\";\nexport { Palette };\nimport * as Platform from \"./Platform.ts\";\nexport { Platform };\nexport * from \"./ProgressBar.ts\";\nexport * from \"./PropertyExt.ts\";\nexport * from \"./ResizeSurface.ts\";\nexport * from \"./Shape.ts\";\nexport * from \"./Surface.ts\";\nexport * from \"./SVGWidget.ts\";\nexport * from \"./SVGZoomWidget.ts\";\nexport * from \"./Text.ts\";\nexport * from \"./TextBox.ts\";\nexport * from \"./TitleBar.ts\";\nimport * as Utility from \"./Utility.ts\";\nexport { Utility };\nexport * from \"./Widget.ts\";\nexport * from \"./WidgetArray.ts\";\n\nexport * from \"d3-array\";\nexport * from \"d3-brush\";\nexport * from \"d3-collection\";\nexport * from \"d3-color\";\nexport * from \"d3-dispatch\";\nexport * from \"d3-drag\";\nexport * from \"d3-dsv\";\nexport * from \"d3-ease\";\nexport * from \"d3-format\";\nexport * from \"d3-interpolate\";\nexport * from \"d3-scale\";\nexport * from \"d3-selection\";\nexport * from \"d3-time-format\";\nexport * from \"d3-transition\";\nexport * from \"d3-zoom\";\n\nimport { event as _d3Event } from \"d3-selection\";\nexport const d3Event = () => _d3Event;\n"],"names":["prefix","document","selector","select","Selection","empty","constant","selection","merge","ascending","attrRemove","attrRemoveNS","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","styleRemove","styleConstant","styleFunction","textConstant","textFunction","raise","create","event","index","parseTypenames","type","window","root","local","id","point","touches","touch","get","set","copy","timeout","now","time","t0","t1","t2","schedule","self","start","active","define","hsl","degrees","lab","hcl","cubehelix","cosh","sinh","t3","linear","hue","color","rgb","colorRgb","colors","basis","value","number","i","string","date","identity","b0","b1","colorHsl","colorLab","colorHcl","colorCubehelix","interpolate","transition","interpolateNumber","interpolateTransform","Transition","inherit","style","remove","exponent","polyIn","polyOut","polyInOut","backIn","backOut","backInOut","elasticIn","a","p","elasticOut","elasticInOut","easeCubicInOut","array","pairs","variance","slice","map","ticks","threshold","histogram","range","bisect","quantile","deviation","min","transpose","keys","entries","object","key","values","pad","length","formatYear","year","locale","zero","format","formatPrefix","defaultLocale","formatLocale","interval","test","durationSecond","durationMinute","durationHour","durationDay","durationWeek","formats","day","timeMonday","timeDay","timeYear","timeSunday","timeThursday","timeFormat","timeParse","utcFormat","utcParse","classID2Meta","widget","hashSum","d3Event","re","d3Select","element","isArray","d3Ascending","d3TimeFormat","Utility.checksum","d3Format","d3CsvFormatRows","Utility.removeHTMLFromString","d3CsvParse","d3TsvParse","d3TsvFormatRows","d3Map","d3TimeParse","transform","d3CubicInOut","b2","d3Rgb","svgNode","styleValue","resolve","reject","Utility.faChar","Utility.faKeys","ordinal","deinterpolate","reinterpolate","interpolateValue","piecewise","month","hour","minute","second","millisecond","tickFormat","timeMonth","timeWeek","timeHour","timeMinute","timeSecond","timeMillisecond","utcWeek","utcSecond","utcMillisecond","interpolateCubehelixLong","rainbow","_colorbrewer.default","d3InterpolateMagma","d3InterpolateInferno","d3InterpolatePlasma","d3ScaleOrdinal","scale","d3ScaleLinear","d3InterpolateLab","d3ScaleQuantize","d3ScaleSequential","_colors","d3RGB","element2","d3Local","Utility.SimpleSelectionMixin","Image","nopropagation","noevent","dispatch","defaultFilter","defaultTouchable","nodrag","container","d3Dispatch","defaultExtent","extent","dragEnable","d3ZoomIdentity","d3Mouse","brush","E","_d3Event"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,250,251,252,253,254,257,258,259,260,261,265,266,267,268]}
|