@hpcc-js/api 3.1.0 → 3.2.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 +123 -33
- package/dist/index.js.map +4 -4
- package/package.json +6 -6
- package/src/__package__.ts +2 -2
- package/types/__package__.d.ts +2 -2
- package/dist/index.css +0 -2
- package/dist/index.css.map +0 -7
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/__package__.ts", "../../common/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", "../../common/src/Database.ts", "../../../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", "../../util/src/__package__.ts", "../../util/src/array.ts", "../../util/src/hashSum.ts", "../../util/src/cache.ts", "../../util/src/debounce.ts", "../../util/src/dictionary.ts", "../../util/src/esp.ts", "../../util/src/graph.ts", "../../util/src/graph2.ts", "../../util/src/immutable.ts", "../../util/src/platform.ts", "../../util/src/stack.ts", "../../util/src/logging.ts", "../../util/src/math.ts", "../../util/src/object.ts", "../../util/src/observer.ts", "../../util/src/dispatch.ts", "../../util/src/saxParser.ts", "../../util/src/stateful.ts", "../../util/src/string.ts", "../../util/src/url.ts", "../../common/src/Class.ts", "../../common/src/PropertyExt.ts", "../../common/src/Utility.ts", "../../common/src/Widget.ts", "../../common/src/HTMLWidget.ts", "../../common/src/CanvasWidget.ts", "../../common/src/Platform.ts", "../../common/src/Transition.ts", "../../common/src/SVGWidget.ts", "../../common/src/Text.ts", "../../common/src/FAChar.ts", "../../common/src/Palette.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", "../../common/src/Shape.ts", "../../common/src/Icon.ts", "../../common/src/Entity.ts", "../../common/src/EntityCard.ts", "../../common/src/EntityPin.ts", "../../common/src/EntityRect.ts", "../../common/src/TextBox.ts", "../../common/src/EntityVertex.ts", "../../common/src/Image.ts", "../../common/src/List.ts", "../../common/src/Menu.ts", "../../common/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", "../../common/src/Surface.ts", "../../common/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", "../../common/src/TitleBar.ts", "../../common/src/SVGZoomWidget.ts", "../../common/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", "../../common/src/index.ts", "../src/I1DChart.ts", "../../../node_modules/d3-color/src/define.js", "../../../node_modules/d3-color/src/color.js", "../src/I2DChart.ts", "../src/I2DAggrChart.ts", "../src/IGraph.ts", "../src/IHighlight.ts", "../src/IInput.ts", "../src/INDChart.ts", "../../../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-collection/src/map.js", "../../../node_modules/d3-collection/src/set.js", "../../../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", "../src/Tooltip.ts", "../src/ITooltip.ts", "../src/ITree.ts"],
|
|
4
|
-
"sourcesContent": ["export const PKG_NAME = \"@hpcc-js/api\";\nexport const PKG_VERSION = \"3.1.0\";\nexport const BUILD_VERSION = \"2.107.0\";\n", "export const PKG_NAME = \"@hpcc-js/common\";\nexport const PKG_VERSION = \"3.1.0\";\nexport const BUILD_VERSION = \"2.107.0\";\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 \u201C__proto__\u201D.\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\u2019t 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\u2019ve set an alarm, if we haven\u2019t 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 \u2245 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\u2019re 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\u2019re 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\u2019re 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\u2019re 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\u2019re 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", "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", "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\u2019s 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, \u00B1Infinity\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\",\"\u00B5\",\"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 \u201Cvalue\u201D part that can be\n // grouped, and fractional or exponential \u201Csuffix\u201D 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", "export const PKG_NAME = \"@hpcc-js/util\";\nexport const PKG_VERSION = \"3.1.0\";\nexport const BUILD_VERSION = \"2.107.0\";\n", "// Based on: https://tc39.github.io/ecma262/#sec-array.prototype.find\nexport function find<T>(o: ReadonlyArray<T>, predicate: (value: T, index: number) => boolean) {\n // 1. Let O be ? ToObject(this value).\n if (o == null) {\n throw new TypeError('\"o\" is null or not defined');\n }\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n const len = o.length >>> 0;\n\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\n if (typeof predicate !== \"function\") {\n throw new TypeError(\"predicate must be a function\");\n }\n\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n const thisArg = arguments[1];\n\n // 5. Let k be 0.\n let k = 0;\n\n // 6. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ! ToString(k).\n // b. Let kValue be ? Get(O, Pk).\n // c. Let testResult be ToBoolean(? Call(predicate, T, \u00AB kValue, k, O \u00BB)).\n // d. If testResult is true, return kValue.\n const kValue = o[k];\n if (predicate.call(thisArg, kValue, k)) {\n return kValue;\n }\n // e. Increase k by 1.\n k++;\n }\n\n // 7. Return undefined.\n return undefined;\n}\nexport interface IDifferences2<T> {\n update: T[];\n exit: T[];\n enter: T[];\n}\n\nexport function compare<T>(before: readonly T[], after: readonly T[]): IDifferences2<T> {\n const retVal: IDifferences2<T> = {\n update: [],\n exit: [],\n enter: [...after]\n };\n for (const row of before) {\n const otherIdx = retVal.enter.indexOf(row);\n if (otherIdx >= 0) {\n retVal.update.push(row);\n retVal.enter.splice(otherIdx, 1);\n } else {\n retVal.exit.push(row);\n }\n }\n return retVal;\n}\n\nexport interface IDifferences2<T> {\n enter: T[];\n update: T[];\n exit: T[];\n}\n\nexport function compare2<T>(before: readonly T[], after: readonly T[], idFunc: (itme: T) => string | number, updateFunc: (before: T, after: T) => T = (before, after) => after): IDifferences2<T> {\n const retVal: IDifferences2<T> = {\n update: [],\n exit: [],\n enter: []\n };\n if (before === after) {\n retVal.update = before as T[];\n return retVal;\n }\n const unknownMap: { [key: string]: T } = {};\n after.forEach(item => {\n unknownMap[idFunc(item)] = item;\n });\n for (const row of before) {\n const id = idFunc(row);\n const item = unknownMap[id];\n if (item !== undefined) {\n delete unknownMap[id];\n retVal.update.push(updateFunc(row, item));\n } else {\n retVal.exit.push(row);\n }\n }\n for (const key in unknownMap) {\n retVal.enter.push(unknownMap[key]);\n }\n return retVal;\n}\n", "// Ported to TypeScript from: https://github.com/bevacqua/hash-sum\n\nfunction pad(hash: string, len: number): string {\n while (hash.length < len) {\n hash = \"0\" + hash;\n }\n return hash;\n}\n\nfunction fold(hash: number, text: string): number {\n if (text.length === 0) {\n return hash;\n }\n for (let i = 0; i < text.length; ++i) {\n const chr = text.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0;\n }\n return hash < 0 ? hash * -2 : hash;\n}\n\nfunction foldObject(hash: number, o: any, seen: any[]): number {\n if (typeof o.hashSum === \"function\") {\n return o.hashSum();\n }\n return Object.keys(o).sort().reduce((input: any, key: string) => {\n return foldValue(input, o[key], key, seen);\n }, hash);\n}\n\nfunction foldValue(input: number, value: any, key: string, seen: any[]): number {\n const hash = fold(fold(fold(input, key), toString(value)), typeof value);\n if (value === null) {\n return fold(hash, \"null\");\n }\n if (value === undefined) {\n return fold(hash, \"undefined\");\n }\n if (typeof value === \"object\") {\n if (seen.indexOf(value) !== -1) {\n return fold(hash, \"[Circular]\" + key);\n }\n seen.push(value);\n return foldObject(hash, value, seen);\n }\n return fold(hash, value.toString());\n}\n\nfunction toString(o: any): string {\n return Object.prototype.toString.call(o);\n}\n\nexport function hashSum(o: any): string {\n return pad(foldValue(0, o, \"\", []).toString(16), 8);\n}\n", "import { hashSum } from \"./hashSum.ts\";\n\nexport class Cache<I, C> {\n private _cache: { [id: string]: C } = {};\n private _calcID: (espObj: I | C) => string;\n\n static hash(...args: any[]) {\n return hashSum({ ...args });\n }\n\n constructor(calcID: (espObj: I | C) => string) {\n this._calcID = calcID;\n }\n\n has(espObj: I): boolean {\n return this._calcID(espObj) in this._cache;\n }\n\n set(obj: C): C {\n this._cache[this._calcID(obj)] = obj;\n return obj;\n }\n\n get(espObj: I): C | null;\n get(espObj: I, factory: () => C): C;\n get(espObj: I, factory?: () => C): C | null {\n const retVal = this._cache[this._calcID(espObj)];\n if (!retVal) {\n return factory ? this.set(factory()) : null;\n }\n return retVal;\n }\n}\n\nexport class AsyncCache<I, C> {\n private _cache: { [id: string]: Promise<C> } = {};\n private _calcID: (espObj: I | C) => string;\n\n static hash(...args: any[]) {\n return hashSum({ ...args });\n }\n\n constructor(calcID: (espObj: I | C) => string) {\n this._calcID = calcID;\n }\n\n has(espObj: I): boolean {\n return this._calcID(espObj) in this._cache;\n }\n\n set(espObj: I, obj: Promise<C>): Promise<C> {\n this._cache[this._calcID(espObj)] = obj;\n return obj;\n }\n\n get(espObj: I): Promise<C | null>;\n get(espObj: I, factory: () => Promise<C>): Promise<C>;\n get(espObj: I, factory?: () => Promise<C>): Promise<C | null> {\n const retVal = this._cache[this._calcID(espObj)];\n if (!retVal) {\n return factory ? this.set(espObj, factory()) : Promise.resolve(null);\n }\n return retVal;\n }\n}\n", "import { hashSum } from \"./hashSum.ts\";\n\nexport function debounce<R extends Promise<any>>(fn: () => R, timeout?: number): () => R;\nexport function debounce<P1, R extends Promise<any>>(fn: (param1: P1) => R, timeout?: number): (param1: P1) => R;\nexport function debounce<P1, P2, R extends Promise<any>>(fn: (param1: P1, param2: P2) => R, timeout?: number): (param1: P1, param2: P2) => R;\nexport function debounce<P1, P2, P3, R extends Promise<any>>(fn: (param1: P1, param2: P2, param3: P3) => R, timeout?: number): (param1: P1, param2: P2, param3: P3) => R;\nexport function debounce<P1, P2, P3, P4, R extends Promise<any>>(fn: (param1: P1, param2: P2, param3: P3, param4: P4) => R, timeout?: number): (param1: P1, param2: P2, param3: P3, param4: P4) => R;\nexport function debounce<TParam, R extends Promise<any>>(fn: (...params: TParam[]) => R, timeout?: number): (...params: TParam[]) => R {\n const promises: { [key: string]: { promise: R, clockStart: number } | null } = {};\n\n return (...params) => {\n const hash = hashSum(params);\n if (!promises[hash]) {\n promises[hash] = {\n clockStart: Date.now(),\n promise: fn(...params).then(response => {\n if (timeout === undefined) {\n promises[hash] = null;\n } else {\n setTimeout(() => {\n promises[hash] = null;\n }, Math.max(timeout - (Date.now() - promises[hash]!.clockStart), 0));\n }\n return response;\n }).catch(e => {\n promises[hash] = null;\n throw e;\n }) as R\n };\n }\n return promises[hash]!.promise;\n };\n}\n\nexport function promiseTimeout<T>(ms: number, promise: Promise<T>): Promise<T> {\n let id: any;\n const timeout = new Promise((resolve, reject) => {\n id = setTimeout(() => {\n clearTimeout(id);\n reject(\"Timed out in \" + ms + \"ms.\");\n }, ms);\n });\n\n return Promise.race([\n promise,\n timeout\n ]).then((response: unknown) => {\n clearTimeout(id);\n return response as T;\n }).catch(e => {\n clearTimeout(id);\n throw e;\n });\n}\n\nexport class AsyncOrderedQueue {\n private _q: Array<Promise<any>> = [];\n\n private isTop(p: Promise<any>): boolean {\n return this._q[0] === p;\n }\n\n push<T>(p: Promise<T>): Promise<T> {\n const retVal = p.then(response => {\n if (this.isTop(retVal)) {\n this._q.shift();\n return response;\n }\n return new Promise<T>((resolve, reject) => {\n const intervalHandler = setInterval(() => {\n if (this.isTop(retVal)) {\n clearInterval(intervalHandler);\n this._q.shift();\n resolve(response);\n }\n }, 20);\n });\n });\n this._q.push(retVal);\n return retVal;\n }\n}\n\nexport function sleep(ms: number): Promise<void> {\n return new Promise(resolve => {\n setTimeout(() => resolve(), ms);\n });\n}\n", "export type StringAnyMap = { [key: string]: any };\n\nexport class Dictionary<T> {\n private store: { [key: string]: T } = {};\n\n constructor(attrs?: StringAnyMap) {\n if (attrs) {\n for (const key in attrs) {\n this.set(key, attrs[key]);\n }\n }\n }\n\n set(key: string, value: T): T {\n const retVal: T = this.store[key];\n this.store[key] = value;\n return retVal;\n }\n\n get(key: string): T {\n return this.store[key];\n }\n\n has(key: string) {\n return this.store[key] !== undefined;\n }\n\n remove(key: string) {\n delete this.store[key];\n }\n\n keys(): string[] {\n const retVal: string[] = [];\n for (const key in this.store) {\n retVal.push(key);\n }\n return retVal;\n }\n\n values(): T[] {\n const retVal: T[] = [];\n for (const key in this.store) {\n retVal.push(this.store[key]);\n }\n return retVal;\n }\n}\n\nexport class DictionaryNoCase<T> extends Dictionary<T> {\n constructor(attrs?: StringAnyMap) {\n super(attrs);\n }\n\n set(key: string, value: T): T {\n return super.set(key.toLowerCase(), value);\n }\n\n get(key: string): T {\n return super.get(key.toLowerCase());\n }\n\n has(key: string) {\n return super.has(key.toLowerCase());\n }\n\n remove(key: string) {\n return super.remove(key.toLowerCase());\n }\n}\n", "export function espTime2Seconds(duration: string): number {\n if (!duration) {\n return 0;\n } else {\n if (!isNaN(Number(duration))) {\n return Number(duration);\n }\n }\n // GH: <n>ns or <m>ms or <s>s or [<d> days ][<h>:][<m>:]<s>[.<ms>]\n const nsIndex = duration.indexOf(\"ns\");\n if (nsIndex !== -1) {\n return parseFloat(duration.substr(0, nsIndex)) / 1000000000;\n }\n const msIndex = duration.indexOf(\"ms\");\n if (msIndex !== -1) {\n return parseFloat(duration.substr(0, msIndex)) / 1000;\n }\n const sIndex = duration.indexOf(\"s\");\n if (sIndex !== -1 && duration.indexOf(\"days\") === -1) {\n return parseFloat(duration.substr(0, sIndex));\n }\n\n const dayTimeParts = duration.split(\" days \");\n const days: number = dayTimeParts.length > 1 ? parseFloat(dayTimeParts[0]) : 0.0;\n const time: string = dayTimeParts.length > 1 ? dayTimeParts[1] : dayTimeParts[0];\n let secs = 0.0;\n const timeParts = time.split(\":\").reverse();\n for (let j = 0; j < timeParts.length; ++j) {\n secs += parseFloat(timeParts[j]) * Math.pow(60, j);\n }\n return (days * 24 * 60 * 60) + secs;\n}\n", "export class GraphItem<S, V, E> {\n protected _graph: Graph<S, V, E>;\n readonly parent: Subgraph<S, V, E> | null;\n readonly props: { [key: string]: any } = {};\n\n constructor(graph: Graph<S, V, E>, parent: Subgraph<S, V, E> | null) {\n this._graph = graph;\n this.parent = parent;\n }\n}\n\nexport class Subgraph<S, V, E> extends GraphItem<S, V, E> {\n readonly subgraphs: Array<Subgraph<S, V, E>> = [];\n readonly vertices: Array<Vertex<S, V, E>> = [];\n readonly edges: Array<Edge<S, V, E>> = [];\n readonly _?: S;\n\n constructor(graph: Graph<S, V, E>, parent: Subgraph<S, V, E> | null, _?: S) {\n super(graph, parent);\n if (parent) { // Only needed for dummy root\n parent._addSubgraph(this);\n }\n this._ = _;\n }\n\n remove(full: boolean = true): void {\n this._graph.removeSubgraph(this, full);\n }\n\n createSubgraph(_?: S): Subgraph<S, V, E> {\n return this._graph.createSubgraph(this, _);\n }\n\n _addSubgraph(subgraph: Subgraph<S, V, E>) {\n if (this.subgraphs.indexOf(subgraph) >= 0) {\n throw new Error(\"Subgraph already exists\");\n }\n this.subgraphs.push(subgraph);\n }\n\n _removeSubgraph(subgraph: Subgraph<S, V, E>) {\n const idx = this.subgraphs.indexOf(subgraph);\n if (idx < 0) {\n throw new Error(\"Subgraph does not exist\");\n }\n this.subgraphs.splice(idx, 1);\n }\n\n removeAllSubgraphs() {\n for (let i = this.subgraphs.length - 1; i >= 0; --i) {\n this._graph.removeSubgraph(this.subgraphs[i], true);\n }\n }\n\n createVertex(_?: V): Vertex<S, V, E> {\n return this._graph.createVertex(this, _);\n }\n\n _addVertex(vertex: Vertex<S, V, E>) {\n if (this.vertices.indexOf(vertex) >= 0) {\n throw new Error(\"Vertex already exists\");\n }\n this.vertices.push(vertex);\n }\n\n _removeVertex(vertex: Vertex<S, V, E>) {\n const idx = this.vertices.indexOf(vertex);\n if (idx < 0) {\n throw new Error(\"Vertex does not exist\");\n }\n this.vertices.splice(idx, 1);\n }\n\n removeAllVertices() {\n for (let i = this.vertices.length - 1; i >= 0; --i) {\n this._graph.removeVertex(this.vertices[i], true);\n }\n }\n\n createEdge(source: Vertex<S, V, E>, target: Vertex<S, V, E>, _?: E): Edge<S, V, E> {\n return this._graph.createEdge(this, source, target, _);\n }\n\n _addEdge(edge: Edge<S, V, E>) {\n if (this.edges.indexOf(edge) >= 0) {\n throw new Error(\"Edge already exists\");\n }\n this.edges.push(edge);\n }\n\n _removeEdge(edge: Edge<S, V, E>) {\n const idx = this.edges.indexOf(edge);\n if (idx < 0) {\n throw new Error(\"Edge does not exist\");\n }\n this.edges.splice(idx, 1);\n }\n\n _add(item: Subgraph<S, V, E> | Vertex<S, V, E> | Edge<S, V, E>) {\n if (item instanceof Subgraph) {\n this._addSubgraph(item);\n } else if (item instanceof Vertex) {\n this._addVertex(item);\n } else {\n this._addEdge(item);\n }\n }\n}\n\nexport class Vertex<S, V, E> extends GraphItem<S, V, E> {\n readonly inEdges: Array<Edge<S, V, E>> = [];\n readonly outEdges: Array<Edge<S, V, E>> = [];\n get edges(): ReadonlyArray<Edge<S, V, E>> {\n return [...this.inEdges, ...this.outEdges];\n }\n readonly _?: V;\n\n constructor(graph: Graph<S, V, E>, parent: Subgraph<S, V, E>, _?: V) {\n super(graph, parent);\n parent._addVertex(this);\n this._ = _;\n }\n\n remove(full: boolean = true, _?: (source: V, target: V) => E) {\n return this._graph.removeVertex(this, full, _);\n }\n\n addInEdge(edge: Edge<S, V, E>) {\n this.inEdges.push(edge);\n }\n\n removeInEdge(edge: Edge<S, V, E>) {\n const idx = this.inEdges.indexOf(edge);\n if (idx < 0) {\n throw new Error(\"In edge does not exist\");\n }\n this.inEdges.splice(idx, 1);\n }\n\n addOutEdge(edge: Edge<S, V, E>) {\n this.outEdges.push(edge);\n }\n\n removeOutEdge(edge: Edge<S, V, E>) {\n const idx = this.outEdges.indexOf(edge);\n if (idx < 0) {\n throw new Error(\"Out edge does not exist\");\n }\n this.outEdges.splice(idx, 1);\n }\n}\n\nexport class Edge<S, V, E> extends GraphItem<S, V, E> {\n readonly source: Vertex<S, V, E>;\n readonly target: Vertex<S, V, E>;\n readonly _?: E;\n\n constructor(graph: Graph<S, V, E>, parent: Subgraph<S, V, E>, source: Vertex<S, V, E>, target: Vertex<S, V, E>, _?: E) {\n super(graph, parent);\n if (!source) {\n throw new Error(\"Missing source vertex\");\n }\n if (!target) {\n throw new Error(\"Missing target vertex\");\n }\n parent._addEdge(this);\n this.source = source;\n this.source.addOutEdge(this);\n this.target = target;\n this.target.addInEdge(this);\n this._ = _;\n }\n\n remove(): void {\n this._graph.removeEdge(this);\n }\n}\n\nexport class Graph<S = undefined, V = undefined, E = undefined> {\n readonly root: Subgraph<S, V, E>;\n private _allSubgraphs: Array<Subgraph<S, V, E>> = [];\n private _allSubgraphsMap: { [id: string]: Subgraph<S, V, E> } = {};\n private _allVertices: Array<Vertex<S, V, E>> = [];\n private _allVerticesMap: { [id: string]: Vertex<S, V, E> } = {};\n private _allEdges: Array<Edge<S, V, E>> = [];\n private _allEdgesMap: { [id: string]: Edge<S, V, E> } = {};\n\n idOf: (item: Subgraph<S, V, E> | Vertex<S, V, E> | Edge<S, V, E>) => string;\n\n constructor(idOf: (item: Subgraph<S, V, E> | Vertex<S, V, E> | Edge<S, V, E>) => string = item => \"\" + item._, _?: S) {\n this.root = new Subgraph(this, null, _);\n this.idOf = idOf;\n }\n\n createSubgraph(parent?: Subgraph<S, V, E>, _?: S): Subgraph<S, V, E> {\n const retVal = new Subgraph(this, parent || this.root, _);\n this._allSubgraphs.push(retVal);\n this._allSubgraphsMap[this.idOf(retVal)] = retVal;\n return retVal;\n }\n\n removeSubgraph(subgraph: Subgraph<S, V, E>, full: boolean = true) {\n const idx = this._allSubgraphs.indexOf(subgraph);\n if (idx < 0) {\n throw new Error(\"Subgraph does not exist\");\n }\n this._allSubgraphs.splice(idx, 1);\n delete this._allSubgraphsMap[this.idOf(subgraph)];\n if (subgraph.parent) {\n subgraph.parent._removeSubgraph(subgraph);\n }\n subgraph.edges.forEach(edge => full ? this.removeEdge(edge) : subgraph.parent!._addEdge(edge));\n subgraph.vertices.forEach(vertex => full ? this.removeVertex(vertex, full) : subgraph.parent!._addVertex(vertex));\n subgraph.subgraphs.forEach(childSubgraph => full ? this.removeSubgraph(childSubgraph, full) : subgraph.parent!._addSubgraph(childSubgraph)\n );\n }\n\n get subgraphs(): ReadonlyArray<Subgraph<S, V, E>> {\n return this._allSubgraphs;\n }\n\n subgraph(id: string): Subgraph<S, V, E> {\n return this._allSubgraphsMap[id];\n }\n\n createVertex(parent: Subgraph<S, V, E>, _?: V): Vertex<S, V, E> {\n const retVal = new Vertex(this, parent, _);\n this._allVertices.push(retVal);\n this._allVerticesMap[this.idOf(retVal)] = retVal;\n return retVal;\n }\n\n removeVertex(vertex: Vertex<S, V, E>, full: boolean = true, _?: (source: V, target: V) => E) {\n const idx = this._allVertices.indexOf(vertex);\n if (idx < 0) {\n throw new Error(\"Vertex does not exist\");\n }\n this._allVertices.splice(idx, 1);\n delete this._allVerticesMap[this.idOf(vertex)];\n if (vertex.parent) {\n vertex.parent._removeVertex(vertex);\n }\n if (!full) {\n vertex.inEdges.forEach(inEdge => {\n vertex.outEdges.forEach(outEdge => {\n this.createEdge(this.root, inEdge.source, outEdge.target, _ ? _(inEdge.source._!, outEdge.target._!) : undefined);\n });\n });\n }\n vertex.inEdges.forEach(edge => this.removeEdge(edge));\n vertex.outEdges.forEach(edge => this.removeEdge(edge));\n }\n\n get vertices(): ReadonlyArray<Vertex<S, V, E>> {\n return this._allVertices;\n }\n\n vertex(id: string): Vertex<S, V, E> {\n return this._allVerticesMap[id];\n }\n\n createEdge(parent: Subgraph<S, V, E>, source: Vertex<S, V, E>, target: Vertex<S, V, E>, _?: E): Edge<S, V, E> {\n const retVal = new Edge<S, V, E>(this, parent, source, target, _);\n this._allEdges.push(retVal);\n this._allEdgesMap[this.idOf(retVal)] = retVal;\n return retVal;\n }\n\n removeEdge(edge: Edge<S, V, E>) {\n const idx = this._allEdges.indexOf(edge);\n if (idx < 0) {\n throw new Error(\"Edge does not exist\");\n }\n this._allEdges.splice(idx, 1);\n delete this._allEdgesMap[this.idOf(edge)];\n if (edge.parent) {\n edge.parent._removeEdge(edge);\n }\n edge.source.removeOutEdge(edge);\n edge.target.removeInEdge(edge);\n }\n\n get edges(): ReadonlyArray<Edge<S, V, E>> {\n return this._allEdges;\n }\n\n edge(id: string): Edge<S, V, E> {\n return this._allEdgesMap[id];\n }\n\n private _walk(parent: Subgraph<S, V, E>, visitor: (item: GraphItem<S, V, E>) => \"abort\" | \"stepover\" | void): true | false | void {\n for (const subgraph of parent.subgraphs) {\n switch (visitor(subgraph)) {\n case \"abort\":\n return true;\n case \"stepover\":\n break;\n default:\n if (this._walk(subgraph, visitor)) return true;\n }\n }\n for (const vertex of parent.vertices) {\n if (visitor(vertex) === \"abort\") return true;\n }\n }\n\n walk(visitor: (visitor: GraphItem<S, V, E>) => \"abort\" | \"stepover\" | void) {\n this._walk(this.root, visitor);\n for (const edge of this._allEdges) {\n if (visitor(edge) === \"abort\") return true;\n }\n }\n\n clone(): Graph<S, V, E> {\n const ctor: new (idOf: (item: Subgraph<S, V, E> | Vertex<S, V, E> | Edge<S, V, E>) => string, _?: S) => Graph<S, V, E> = this.constructor as any;\n const retVal = new ctor(this.idOf, this.root._);\n const map = ObjMap();\n map.put(this.root, retVal.root);\n this.walk(item => {\n const parent = map.get(item.parent);\n if (item instanceof Subgraph) {\n map.put(item, parent.createSubgraph(item._));\n } else if (item instanceof Vertex) {\n map.put(item, parent.createVertex(item._));\n } else if (item instanceof Edge) {\n const source = map.get(item.source);\n const target = map.get(item.target);\n parent.createEdge(source, target, item._);\n }\n });\n return retVal;\n }\n}\n\nfunction ObjMap() {\n const keys: any[] = [];\n const values: any[] = [];\n\n return {\n put(key: any, value: any) {\n const index = keys.indexOf(key);\n if (index === -1) {\n keys.push(key);\n values.push(value);\n } else {\n values[index] = value;\n }\n },\n get(key: any) {\n return values[keys.indexOf(key)];\n }\n };\n}\n", "import { compare2 } from \"./array.ts\";\n\ntype ID = string | number;\n\nclass GraphItem<T = any> {\n protected _graph: Graph2;\n _: T;\n id(): ID {\n return this._graph.id(this._);\n }\n\n constructor(g: Graph2, _: T) {\n this._graph = g;\n this._ = _;\n }\n}\n\nclass ChildGraphItem<S = any> extends GraphItem<S> {\n\n private _parent: Subgraph | undefined;\n\n constructor(g: Graph2, _: S) {\n super(g, _);\n }\n\n clearParent(): this {\n if (this._parent) {\n this._parent.removeChild(this);\n delete this._parent;\n }\n return this;\n }\n\n parent(): Subgraph | undefined;\n parent(_: Subgraph | undefined): this;\n parent(_?: Subgraph): Subgraph | undefined | this {\n if (arguments.length === 0) return this._parent;\n if (this._parent !== _) {\n if (this._parent) {\n this._parent.removeChild(this);\n }\n this._parent = _;\n if (this._parent) {\n this._parent.addChild(this);\n }\n }\n return this;\n }\n}\n\nclass Subgraph<S = any> extends ChildGraphItem<S> {\n\n private _children: ChildGraphItem[] = [];\n\n constructor(g: Graph2, _: S) {\n super(g, _);\n }\n\n children(): ChildGraphItem[] {\n return this._children;\n }\n\n addChild(_: ChildGraphItem) {\n this._children.push(_);\n }\n\n removeChild(_: ChildGraphItem) {\n this._children = this._children.filter(row => row.id !== _.id);\n }\n}\n\nclass Vertex<V = any> extends ChildGraphItem<V> {\n\n private _inEdges: Edge[] = [];\n private _outEdges: Edge[] = [];\n\n constructor(g: Graph2, _: V) {\n super(g, _);\n }\n\n edges() {\n return [...this._inEdges, ...this._outEdges];\n }\n\n edgeCount() {\n return this._outEdges.length + this._inEdges.length;\n }\n\n inEdges() {\n return this._inEdges;\n }\n\n addInEdge(e: Edge) {\n this._inEdges.push(e);\n }\n\n removeInEdge(id: ID) {\n this._inEdges = this._inEdges.filter(e => e._.id !== id);\n }\n\n outEdges() {\n return this._outEdges;\n }\n\n addOutEdge(e: Edge) {\n this._outEdges.push(e);\n }\n\n removeOutEdge(id: ID) {\n this._outEdges = this._outEdges.filter(e => e._.id !== id);\n }\n}\n\nclass Edge<E = any> extends ChildGraphItem<E> {\n\n _source: Vertex;\n _target: Vertex;\n\n constructor(g: Graph2, _: E, source: Vertex, target: Vertex) {\n super(g, _);\n this._source = source;\n this._target = target;\n }\n}\n\ntype SubgraphMap<T> = { [id: string]: Subgraph<T> };\ntype VertexMap<T> = { [id: string]: Vertex<T> };\ntype EdgeMap<T> = { [id: string]: Edge<T> };\n\nexport type HierarchyFormatter<V, S> = (type: \"subgraph\" | \"vertex\", item: V | S, children?: object[]) => object;\n\nexport class Graph2<V = any, E = any, S = any> {\n\n private _directed: boolean;\n private _subgraphMap: SubgraphMap<S> = {};\n private _vertexMap: VertexMap<V> = {};\n private _edgeMap: EdgeMap<E> = {};\n\n constructor(directed = true) {\n this._directed = directed;\n }\n\n clear(): this {\n this._subgraphMap = {};\n this._vertexMap = {};\n this._edgeMap = {};\n return this;\n }\n\n clearParents(): this {\n for (const key in this._subgraphMap) {\n this._subgraphMap[key].clearParent();\n }\n for (const key in this._vertexMap) {\n this._vertexMap[key].clearParent();\n }\n return this;\n }\n\n isDirected(): boolean {\n return this._directed;\n }\n\n _idFunc = (_: any): ID => typeof _.id === \"function\" ? _.id() : _.id;\n idFunc(_: (_: S | V | E) => ID): this {\n this._idFunc = _;\n return this;\n }\n\n _sourceFunc = (_: any): ID => typeof _.source === \"function\" ? _.source() : _.source;\n sourceFunc(_: (_: E) => ID): this {\n this._sourceFunc = _;\n return this;\n }\n\n _targetFunc = (_: any): ID => typeof _.target === \"function\" ? _.target() : _.target;\n targetFunc(_: (_: E) => ID): this {\n this._targetFunc = _;\n return this;\n }\n\n _updateFunc = (before: S | V | E, after: S | V | E): S | V | E => after;\n updateFunc(_: (before: S | V | E, after: S | V | E) => S | V | E): this {\n this._updateFunc = _;\n return this;\n }\n\n id(_: S | V | E): ID {\n return this._idFunc(_);\n }\n\n type(id: ID): \"S\" | \"V\" | \"E\" | \"\" {\n if (this.subgraphExists(id)) return \"S\";\n if (this.vertexExists(id)) return \"V\";\n if (this.edgeExists(id)) return \"E\";\n return \"\";\n }\n\n isSubgraph(_: S | V | E): _ is S {\n return this.subgraphExists(this.id(_));\n }\n\n isVertex(_: S | V | E): _ is V {\n return this.vertexExists(this.id(_));\n }\n\n isEdge(_: S | V | E): _ is E {\n return this.edgeExists(this.id(_));\n }\n\n allItems(): Array<S | V | E> {\n return [...this.allSubgraphs(), ...this.allVertices(), ...this.allEdges()];\n }\n\n item(id: ID): S | V | E | undefined {\n if (this.subgraphExists(id)) return this.subgraph(id);\n if (this.vertexExists(id)) return this.vertex(id);\n if (this.edgeExists(id)) return this.edge(id);\n return undefined;\n }\n\n itemExists(id: ID): boolean {\n return this.edgeExists(id) || this.vertexExists(id) || this.subgraphExists(id);\n }\n\n // Subgraphs ---\n allSubgraphs(): S[] {\n const retVal: S[] = [];\n for (const key in this._subgraphMap) {\n retVal.push(this._subgraphMap[key]._);\n }\n return retVal;\n }\n\n subgraphs(): S[] {\n const retVal: S[] = [];\n for (const key in this._subgraphMap) {\n if (this._subgraphMap[key].parent() === undefined) {\n retVal.push(this._subgraphMap[key]._);\n }\n }\n return retVal;\n }\n\n subgraphExists(id: ID): boolean {\n return !!this._subgraphMap[id];\n }\n\n subgraph(id: ID): S {\n return this._subgraphMap[id]._;\n }\n\n subgraphSubgraphs(id: ID): S[] {\n return this._subgraphMap[id].children().filter(child => this.isSubgraph(child._)).map(child => child._);\n }\n\n subgraphVertices(id: ID): V[] {\n return this._subgraphMap[id].children().filter(child => this.isVertex(child._)).map(child => child._);\n }\n\n subgraphEdges(id: ID): E[] {\n return this._subgraphMap[id].children().filter(child => this.isEdge(child._)).map(child => child._);\n }\n\n addSubgraph(s: S, parent?: S): this {\n const s_id = this._idFunc(s);\n if (this._subgraphMap[s_id]) throw new Error(`Subgraph '${s_id}' already exists.`);\n const subgraph = new Subgraph(this, s);\n if (parent) {\n const p_id = this._idFunc(parent);\n if (!this._subgraphMap[p_id]) throw new Error(`Subgraph '${p_id}' does not exist.`);\n subgraph.parent(this._subgraphMap[p_id]);\n }\n this._subgraphMap[s_id] = subgraph;\n return this;\n }\n\n mergeSubgraphs(_subgraphs: S[] = []): this {\n const sgDiff = compare2<S>(this.allSubgraphs(), _subgraphs, sg => this._idFunc(sg), this._updateFunc as any);\n sgDiff.exit.forEach(sg => this.removeSubgraph(this._idFunc(sg)));\n sgDiff.enter.forEach(sg => this.addSubgraph(sg));\n sgDiff.update.forEach(sg => this.updateSubgraph(sg));\n return this;\n }\n\n updateSubgraph(sg: S): this {\n const sg_id = this._idFunc(sg);\n const subgraph = this._subgraphMap[sg_id];\n if (!subgraph) throw new Error(`Subgraph '${sg_id}' does not exist.`);\n subgraph._ = sg;\n return this;\n }\n\n removeSubgraph(id: ID, promoteChildren = true): this {\n const sg = this._subgraphMap[id];\n if (!sg) throw new Error(`Subgraph '${id}' does not exist.`);\n sg.children().forEach(child => {\n if (promoteChildren) {\n child.parent(sg.parent());\n } else {\n if (child instanceof Subgraph) {\n this.removeSubgraph(child.id());\n } else {\n this.removeVertex(child.id());\n }\n }\n });\n delete this._subgraphMap[id];\n return this;\n }\n\n subgraphParent(id: ID): S | undefined;\n subgraphParent(id: ID, parentID: ID): this;\n subgraphParent(id: ID, parentID?: ID): S | undefined | this {\n const item = this._subgraphMap[id];\n if (!item) throw new Error(`Subgraph '${id}' does not exist.`);\n if (parentID === void 0) {\n const parent = item.parent();\n return parent ? parent._ as S : undefined;\n }\n const parent = this._subgraphMap[parentID];\n if (!parent) throw new Error(`Vertex parent '${parent}' does not exist.`);\n item.parent(parent);\n return this;\n }\n\n // Vertices ---\n allVertices(): V[] {\n const retVal: V[] = [];\n for (const key in this._vertexMap) {\n retVal.push(this._vertexMap[key]._);\n }\n return retVal;\n }\n\n vertices(): V[] {\n const retVal: V[] = [];\n for (const key in this._vertexMap) {\n if (this._vertexMap[key].parent() === undefined) {\n retVal.push(this._vertexMap[key]._);\n }\n }\n return retVal;\n }\n\n vertexExists(id: ID): boolean {\n return !!this._vertexMap[id];\n }\n\n vertex(id: ID): V {\n return this._vertexMap[id]._;\n }\n\n allEdges(): E[] {\n const retVal: E[] = [];\n for (const key in this._edgeMap) {\n retVal.push(this._edgeMap[key]._);\n }\n return retVal;\n }\n\n edges(): E[] {\n const retVal: E[] = [];\n for (const key in this._edgeMap) {\n if (this._edgeMap[key].parent() === undefined) {\n retVal.push(this._edgeMap[key]._);\n }\n }\n return retVal;\n }\n\n vertexEdges(vertexID: ID): E[] {\n return this._vertexMap[vertexID].edges().map(e => e._);\n }\n\n inEdges(vertexID: ID): E[] {\n return this._vertexMap[vertexID].inEdges().map(e => e._);\n }\n\n outEdges(vertexID: ID): E[] {\n return this._vertexMap[vertexID].outEdges().map(e => e._);\n }\n\n private _neighbors(id: ID): Vertex[] {\n return [...this._vertexMap[id].outEdges().map(e => e._target), ...this._vertexMap[id].inEdges().map(e => e._source)];\n }\n\n neighbors(id: ID): V[] {\n return this._neighbors(id).map(n => n._);\n }\n\n singleNeighbors(id: ID): V[] {\n return this._neighbors(id).filter(n => n.edgeCount() === 1).map(n => n._);\n }\n\n addVertex(v: V, parent?: S): this {\n const v_id = this._idFunc(v);\n if (this._vertexMap[v_id]) throw new Error(`Vertex '${v_id}' already exists.`);\n const vertex = new Vertex(this, v);\n if (parent) {\n const p_id = this._idFunc(parent);\n if (!this.subgraphExists(p_id)) throw new Error(`Subgraph '${p_id}' does not exist.`);\n vertex.parent(this._subgraphMap[p_id]);\n }\n this._vertexMap[v_id] = vertex;\n return this;\n }\n\n mergeVertices(_vertices: V[]): this {\n const vDiff = compare2(this.allVertices(), _vertices, v => this._idFunc(v), this._updateFunc as any);\n vDiff.exit.forEach(v => this.removeVertex(this._idFunc(v)));\n vDiff.enter.forEach(v => this.addVertex(v));\n vDiff.update.forEach(v => this.updateVertex(v));\n return this;\n }\n\n updateVertex(v: V): this {\n const v_id = this._idFunc(v);\n const vertex = this._vertexMap[v_id];\n if (!vertex) throw new Error(`Vertex '${v_id}' does not exist.`);\n vertex._ = v;\n return this;\n }\n\n removeVertex(id: ID): this {\n const v = this._vertexMap[id];\n if (!v) throw new Error(`Vertex '${id}' does not exist.`);\n v.edges().forEach(e => {\n this.removeEdge(e.id());\n });\n delete this._vertexMap[id];\n return this;\n }\n\n vertexParent(id: ID): S | undefined;\n vertexParent(id: ID, parentID: ID): this;\n vertexParent(id: ID, parentID?: ID): S | undefined | this {\n const item = this._vertexMap[id];\n if (!item) throw new Error(`Vertex '${id}' does not exist.`);\n if (parentID === void 0) {\n const parent = item.parent();\n return parent ? parent._ as S : undefined;\n }\n const parent = this._subgraphMap[parentID];\n if (!parent) throw new Error(`Vertex parent '${parent}' does not exist.`);\n item.parent(parent);\n return this;\n }\n\n // Edges ---\n edgeExists(id: ID): boolean {\n return !!this._edgeMap[id];\n }\n\n edge(id: ID): E {\n return this._edgeMap[id]._;\n }\n\n addEdge(e: E, parent?: S): this {\n const e_id = this._idFunc(e);\n const e_source = this._sourceFunc(e);\n const e_target = this._targetFunc(e);\n if (this._edgeMap[e_id]) throw new Error(`Edge '${e_id}' already exists.`);\n if (!this.vertexExists(e_source)) throw new Error(`Edge Source '${e_source}' does not exist.`);\n if (!this.vertexExists(e_target)) throw new Error(`Edge Target '${e_target}' does not exist.`);\n const edge = new Edge(this, e, this._vertexMap[e_source], this._vertexMap[e_target]);\n if (parent) {\n const p_id = this._idFunc(parent);\n if (!this.subgraphExists(p_id)) throw new Error(`Subgraph '${p_id}' does not exist.`);\n edge.parent(this._subgraphMap[p_id]);\n }\n this._edgeMap[e_id] = edge;\n this._vertexMap[e_source].addOutEdge(edge);\n this._vertexMap[e_target].addInEdge(edge);\n return this;\n }\n\n mergeEdges(_edges: E[]): this {\n const eDiff = compare2(this.allEdges(), _edges, e => this._idFunc(e), this._updateFunc as any);\n eDiff.exit.forEach(e => this.removeEdge(this._idFunc(e)));\n eDiff.enter.forEach(e => this.addEdge(e));\n eDiff.update.forEach(e => this.updateEdge(e));\n return this;\n }\n\n updateEdge(e: E): this {\n const e_id = this._idFunc(e);\n const edge = this._edgeMap[e_id];\n if (!edge) throw new Error(`Edge '${e_id}' does not exist.`);\n const old_source = edge._source.id();\n const new_source = this._sourceFunc(e);\n if (old_source !== new_source) {\n this._vertexMap[old_source]?.removeOutEdge(e_id);\n this._vertexMap[new_source]?.addOutEdge(edge);\n }\n const old_target = edge._target.id();\n const new_target = this._targetFunc(e);\n if (old_target !== new_target) {\n this._vertexMap[old_target]?.removeInEdge(e_id);\n this._vertexMap[new_target]?.addInEdge(edge);\n }\n edge._ = e;\n edge._source = this._vertexMap[new_source];\n edge._target = this._vertexMap[new_target];\n return this;\n }\n\n removeEdge(id: ID): this {\n const e: Edge<E> = this._edgeMap[id];\n if (!e) throw new Error(`Edge '${id}' does not exist.`);\n\n const e_sourceID = this._idFunc(e._source._);\n if (!this.vertexExists(e_sourceID)) throw new Error(`Edge Source'${e_sourceID}' does not exist.`);\n this._vertexMap[e_sourceID].removeOutEdge(id);\n\n const e_targetID = this._idFunc(e._target._);\n if (!this.vertexExists(e_targetID)) throw new Error(`Edge Target'${e_targetID}' does not exist.`);\n this._vertexMap[e_targetID].removeInEdge(id);\n\n delete this._edgeMap[id];\n return this;\n }\n\n protected _hwalk(item: Subgraph<S> | Vertex<V>, formatter: HierarchyFormatter<V, S>): object {\n if (item instanceof Subgraph) {\n return formatter(\"subgraph\", item._, item.children().map(child => this._hwalk(child as Subgraph<S> | Vertex<V>, formatter)));\n } else {\n return formatter(\"vertex\", item._);\n }\n }\n\n hierarchy(formatter: HierarchyFormatter<V, S>): object[] {\n const retVal: object[] = [];\n for (const id in this._subgraphMap) {\n const sg = this._subgraphMap[id];\n if (sg.parent() === undefined) {\n retVal.push(this._hwalk(sg, formatter));\n }\n }\n for (const id in this._vertexMap) {\n const v = this._vertexMap[id];\n if (v.parent() === undefined) {\n retVal.push(this._hwalk(v, formatter));\n }\n }\n return retVal;\n }\n\n dijkstra(source: ID, target: ID): { ids: ID[], len: number } {\n const edges = this.allEdges();\n const Q = new Set<string | number>();\n const prev: { [key: string]: string } = {};\n const dist: { [key: string]: number } = {};\n const adj: { [key: string]: { [key: string]: number } } = {};\n\n function vertex_with_min_dist(Q: Set<string | number>, dist: { [key: string]: number }) {\n let min_distance = Infinity;\n let u: string | number | null = null;\n\n Q.forEach(v => {\n if (dist[v] < min_distance) {\n min_distance = dist[v];\n u = v;\n }\n });\n return u;\n }\n\n for (let i = 0; i < edges.length; i++) {\n const v1 = this._sourceFunc(edges[i]);\n const v2 = this._targetFunc(edges[i]);\n const len = 1;\n\n Q.add(v1);\n Q.add(v2);\n\n dist[v1] = Infinity;\n dist[v2] = Infinity;\n\n if (adj[v1] === undefined) adj[v1] = {};\n if (adj[v2] === undefined) adj[v2] = {};\n\n adj[v1][v2] = len;\n adj[v2][v1] = len;\n }\n\n dist[source] = 0;\n\n while (Q.size) {\n const u = vertex_with_min_dist(Q, dist);\n if (u === null) break;\n const neighbors = Object.keys(adj[u]).filter(v => Q.has(v)); // Neighbor still in Q\n\n Q.delete(u);\n\n if (u === target) break; // Break when the target has been found\n\n for (const v of neighbors) {\n const alt = dist[u] + adj[u][v];\n if (alt < dist[v]) {\n dist[v] = alt;\n prev[v] = u;\n }\n }\n }\n\n let u = target;\n const ids = [u];\n let len = 0;\n\n while (prev[u] !== undefined) {\n ids.unshift(prev[u]);\n len += adj[u][prev[u]];\n u = prev[u];\n }\n return { ids, len };\n }\n\n sort(v_id?: string): V[] {\n const retVal: V[] = [];\n const visited: { [id: string]: boolean } = {};\n\n const visit = (vertex: Vertex<V>, ancestors: Vertex<V>[] = []) => {\n const v_id = vertex.id();\n if (visited[v_id]) return;\n visited[v_id] = true;\n ancestors.push(vertex);\n vertex.outEdges().forEach(e => {\n if (ancestors.indexOf(e._target) < 0) {\n visit(e._target, [...ancestors]);\n }\n });\n retVal.unshift(vertex._);\n };\n\n if (v_id) {\n visit(this._vertexMap[v_id]);\n } else {\n for (const key in this._vertexMap) {\n visit(this._vertexMap[key]);\n }\n }\n\n return retVal;\n }\n}\n\nclass Set<T> {\n\n private _content: T[] = [];\n get size(): number {\n return this._content.length;\n }\n\n has(_: T) {\n return this._content.indexOf(_) >= 0;\n }\n\n add(_: T) {\n if (!this.has(_)) {\n this._content.push(_);\n }\n }\n\n delete(_: T) {\n const idx = this._content.indexOf(_);\n if (idx >= 0) {\n this._content.splice(idx, 1);\n }\n }\n\n forEach(_: (value: T, index: number, array: T[]) => void) {\n this._content.forEach(_);\n }\n}\n", "const isArray = Array.isArray;\nconst keyList = Object.keys;\nconst hasProp = Object.prototype.hasOwnProperty;\n\nexport function verboseDeepEquals(a: any, b: any, functionRefCompare: boolean = false) {\n if (a === b) return true;\n\n if (a && b) {\n if (typeof a === \"object\" && typeof b === \"object\") {\n const arrA = isArray(a);\n const arrB = isArray(b);\n let i;\n let length;\n let key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length !== b.length) {\n console.warn(`lengths not equal: ${length} !== ${b.length}`);\n return false;\n }\n for (i = length; i-- !== 0;)\n if (!verboseDeepEquals(a[i], b[i], functionRefCompare)) {\n return false;\n }\n return true;\n }\n\n if (arrA !== arrB) {\n console.warn(`arrays not equal: ${arrA} !== ${arrB}`);\n return false;\n }\n\n const dateA = a instanceof Date;\n const dateB = b instanceof Date;\n if (dateA !== dateB) {\n console.warn(`dates not equal: ${dateA} !== ${dateB}`);\n return false;\n }\n if (dateA && dateB) {\n const retVal = a.getTime() === b.getTime();\n if (!retVal) {\n console.warn(`dates not equal: ${a.getTime()} !== ${b.getTime()}`);\n }\n return retVal;\n }\n\n const regexpA = a instanceof RegExp;\n const regexpB = b instanceof RegExp;\n if (regexpA !== regexpB) {\n console.warn(`regexps not equal: ${regexpA} !== ${regexpB}`);\n return false;\n }\n if (regexpA && regexpB) {\n const retVal = a.toString() === b.toString();\n if (!retVal) {\n console.warn(`regexps not equal: ${a.toString()} !== ${b.toString()}`);\n }\n return retVal;\n }\n\n const keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length) {\n console.warn(`key lengths not equal: ${length} !== ${keyList(b).length}`);\n return false;\n }\n\n for (i = length; i-- !== 0;)\n if (!hasProp.call(b, keys[i])) {\n console.warn(`${keys[i]} in a but not b`);\n return false;\n }\n\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!verboseDeepEquals(a[key], b[key], functionRefCompare)) {\n return false;\n }\n }\n\n return true;\n } else if (!functionRefCompare && typeof a === \"function\" && typeof b === \"function\") {\n const retVal = a.toString() === b.toString();\n if (!retVal) {\n console.warn(`functions not equal: ${a.toString()} !== ${b.toString()}`);\n }\n return retVal;\n }\n }\n\n const retVal = a !== a && b !== b;\n if (!retVal) {\n console.warn(`values not equal: ${a} !== ${b}`);\n }\n return retVal;\n}\n\nexport function deepEquals(a: any, b: any, functionRefCompare: boolean = false) {\n if (a === b) return true;\n\n if (a && b) {\n if (typeof a === \"object\" && typeof b === \"object\") {\n const arrA = isArray(a);\n const arrB = isArray(b);\n let i;\n let length;\n let key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;)\n if (!deepEquals(a[i], b[i], functionRefCompare)) return false;\n return true;\n }\n\n if (arrA !== arrB) return false;\n\n const dateA = a instanceof Date;\n const dateB = b instanceof Date;\n if (dateA !== dateB) return false;\n if (dateA && dateB) return a.getTime() === b.getTime();\n\n const regexpA = a instanceof RegExp;\n const regexpB = b instanceof RegExp;\n if (regexpA !== regexpB) return false;\n if (regexpA && regexpB) return a.toString() === b.toString();\n\n const keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length)\n return false;\n\n for (i = length; i-- !== 0;)\n if (!hasProp.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!deepEquals(a[key], b[key], functionRefCompare)) return false;\n }\n\n return true;\n } else if (!functionRefCompare && typeof a === \"function\" && typeof b === \"function\") {\n return a.toString() === b.toString();\n }\n }\n\n return a !== a && b !== b;\n}\n\nexport function update<T>(origItem: T, newItem: T, functionRefCompare: boolean = false): T {\n return deepEquals(origItem, newItem, functionRefCompare) ? origItem : newItem;\n}\n", "declare const process: any;\n\nexport const root: any = typeof globalThis !== \"undefined\" ? globalThis : window;\nexport const isBrowser: boolean = typeof window !== \"undefined\" && root === window;\nexport const isNode: boolean = typeof process !== \"undefined\" && process.versions != null && process.versions.node != null;\nexport const isCI: boolean = isNode && process.env != null && (process.env.TRAVIS != null || process.env.GITHUB_ACTIONS != null);\n\nexport function getScriptSrc(partial: string) {\n const scripts = document.scripts || [];\n for (let i = document.scripts.length - 1; i >= 0; --i) {\n const script = scripts[i];\n if (script.src) {\n const idx = script.src.indexOf(partial);\n if (idx >= 0) {\n return script.src.substring(0, idx);\n }\n }\n }\n return \"\";\n}\n", "/**\n * A generic Stack\n */\nexport class Stack<T> {\n private stack: T[] = [];\n\n /**\n * Push element onto the stack\n *\n * @param e - element to push\n */\n push(e: T) {\n this.stack.push(e);\n return e;\n }\n\n /**\n * Pop element off the stack\n */\n pop(): T | undefined {\n return this.stack.pop();\n }\n\n /**\n * Top item on the stack\n *\n * @returns Top element on the stack\n */\n top(): T | undefined {\n return this.stack.length ? this.stack[this.stack.length - 1] : undefined;\n }\n\n /**\n * Depth of stack\n *\n * @returns Depth\n */\n depth(): number {\n return this.stack.length;\n }\n}\n", "/* eslint-disable no-console */\nimport { isNode } from \"./platform.ts\";\nimport { Stack } from \"./stack.ts\";\n\nexport enum Level {\n debug,\n info,\n notice,\n warning,\n error,\n critical,\n alert,\n emergency\n}\n\nconst colours: { [key: string]: string } = {\n debug: \"cyan\",\n info: \"green\",\n notice: \"grey\",\n warning: \"blue\",\n error: \"red\",\n critical: \"magenta\",\n alert: \"magenta\",\n emergency: \"magenta\"\n};\n\nexport interface Writer {\n write?(dateTime: string, level: Level, id: string, msg: string): void;\n rawWrite?(dateTime: string, level: Level, id: string, msg: string | object): void;\n}\n\nclass ConsoleWriter implements Writer {\n write(dateTime: string, level: Level, id: string, msg: string) {\n if (isNode) {\n console.log(`[${dateTime}] ${Level[level].toUpperCase()} ${id}: ${msg}`);\n } else {\n console.log(`[${dateTime}] %c${Level[level].toUpperCase()}%c ${id}: ${msg}`, `color:${colours[Level[level]]}`, \"\");\n }\n }\n}\n\nexport class Logging {\n private static _instance: Logging;\n private _levelStack = new Stack<Level>();\n private _level = Level.info;\n private _filter: string = \"\";\n private _writer: Writer = new ConsoleWriter();\n\n public static Instance() {\n return this._instance || (this._instance = new this());\n }\n\n private constructor() {\n }\n\n private stringify(obj: object): string {\n const cache: any[] = [];\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 cache.push(value);\n }\n return value;\n }, 2);\n }\n\n writer(): Writer;\n writer(_: Writer): Logging;\n writer(_?: Writer): Writer | Logging {\n if (_ === void 0) return this._writer;\n this._writer = _;\n return this;\n }\n\n log(level: Level, id: string, msg: string | object) {\n if (level < this._level) return;\n if (this._filter && this._filter !== id) return;\n\n const dateTime = new Date().toISOString();\n\n if (this._writer.rawWrite) {\n this._writer.rawWrite(dateTime, level, id, msg);\n } else {\n if (typeof msg !== \"string\") {\n msg = this.stringify(msg);\n }\n\n if (this._writer.write) {\n this._writer.write(dateTime, level, id, msg);\n }\n }\n }\n\n debug(id: string, msg: string | object) {\n this.log(Level.debug, id, msg);\n }\n\n info(id: string, msg: string | object) {\n this.log(Level.info, id, msg);\n }\n\n notice(id: string, msg: string | object) {\n this.log(Level.notice, id, msg);\n }\n\n warning(id: string, msg: string | object) {\n this.log(Level.warning, id, msg);\n }\n\n error(id: string, msg: string | object) {\n this.log(Level.error, id, msg);\n }\n\n critical(id: string, msg: string | object) {\n this.log(Level.critical, id, msg);\n }\n\n alert(id: string, msg: string | object) {\n this.log(Level.alert, id, msg);\n }\n\n emergency(id: string, msg: string | object) {\n this.log(Level.emergency, id, msg);\n }\n\n level(): Level;\n level(_: Level): this;\n level(_?: Level): Level | this {\n if (_ === void 0) return this._level;\n this._level = _;\n return this;\n }\n\n pushLevel(_: Level): this {\n this._levelStack.push(this._level);\n this._level = _;\n return this;\n }\n\n popLevel(): this {\n this._level = this._levelStack.pop()!;\n return this;\n }\n\n filter(): string;\n filter(_: string): this;\n filter(_?: string): string | this {\n if (_ === void 0) return this._filter;\n this._filter = _;\n return this;\n }\n}\nexport const logger = Logging.Instance();\n\nexport class ScopedLogging {\n protected _scopeID: string;\n\n constructor(scopeID: string) {\n this._scopeID = scopeID;\n }\n\n debug(msg: string | object) {\n logger.debug(this._scopeID, msg);\n }\n\n info(msg: string | object) {\n logger.info(this._scopeID, msg);\n }\n\n notice(msg: string | object) {\n logger.notice(this._scopeID, msg);\n }\n\n warning(msg: string | object) {\n logger.warning(this._scopeID, msg);\n }\n\n error(msg: string | object) {\n logger.error(this._scopeID, msg);\n }\n\n critical(msg: string | object) {\n logger.critical(this._scopeID, msg);\n }\n\n alert(msg: string | object) {\n logger.alert(this._scopeID, msg);\n }\n\n emergency(msg: string | object) {\n logger.emergency(this._scopeID, msg);\n }\n\n pushLevel(_: Level): this {\n logger.pushLevel(_);\n return this;\n }\n\n popLevel(): this {\n logger.popLevel();\n return this;\n }\n}\n\nexport function scopedLogger(scopeID: string, filter: boolean = false) {\n if (filter) {\n logger.filter(scopeID);\n }\n return new ScopedLogging(scopeID);\n}\n", "/**\n * degreesToRadians - converts degrees to radians\n * Usage: degreesToRadians(1080);\n *\n * @param degrees\n * @returns Number radians\n */\nexport function degreesToRadians(degrees: number): number {\n return degrees * (Math.PI / 180);\n}\n\n/**\n * radiansToDegrees - converts radians to degrees\n * Usage: radiansToDegrees(7);\n *\n * @param radians\n * @returns Number degreees\n */\nexport function radiansToDegrees(radians: number): number {\n return radians * (180 / Math.PI);\n}\n\n/**\n * polarToCartesian - converts (r, theta) to {x, y}\n * Usage: polarToCartesian(5, Math.PI);\n *\n * @param r radius\n * @param theta angle in radians\n * @returns { x: number, y: number }\n */\nexport function polarToCartesian(r: number, theta: number): { x:number, y:number } {\n return {\n x: r * Math.cos(theta),\n y: r * Math.sin(theta)\n };\n}\n\n/**\n * cartesianToPolar - converts (x, y) to {r, theta}\n * Usage: cartesianToPolar(100, 200);\n *\n * @param x\n * @param y\n * @returns { r: number, theta: number }\n */\nexport function cartesianToPolar(x: number, y: number): { r: number, theta: number } {\n return {\n r: Math.sqrt(x * x + y * y),\n theta: Math.atan2(y, x)\n };\n}\n\n/**\n * normalizeRadians - normalizes a radian value to within the provided range\n * Usage: normalizeRadians(7);\n *\n * @param radians value to be normalized\n * @param min lower limit\n * @param max upper limit\n * @returns Number normalized to within the provided range\n */\nexport function normalizeRadians(radians: number, min: number = -Math.PI, max: number = Math.PI): number {\n return normalize(radians, min, max);\n}\n\n/**\n * normalizeDegrees - normalizes a degree value to within the provided range\n * Usage: normalizeDegrees(1080);\n *\n * @param degrees value to be normalized\n * @param min lower limit\n * @param max upper limit\n * @returns Number normalized to within the provided range\n */\nexport function normalizeDegrees(degrees: number, min: number = -180, max: number = 180): number {\n return normalize(degrees, min, max);\n}\n\n/**\n * normalize - normalizes a value to within the provided range\n * Usage: normalize(1000, 0, 365);\n *\n * @param value value to be normalized\n * @param min lower limit\n * @param max upper limit\n * @returns Number normalized to within the provided range\n */\nexport function normalize(value: number, min: number, max: number): number {\n const spread = max - min;\n const offsetValue = value - min;\n return (offsetValue - (Math.floor(offsetValue / spread) * spread)) + min;\n}\n", "export type RecursivePartial<T> = {\n [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] :\n T[P] extends object | undefined ? RecursivePartial<T[P]> : T[P];\n};\n\n/**\n * inner - return inner property of Object\n * Usage: inner(\"some.prop.to.locate\", obj);\n *\n * @param prop - property to locate\n * @param obj - object to locate property in\n */\nexport function inner(prop: string, obj: any): any {\n if (prop === void 0 || obj === void 0) return void 0;\n for (const item of prop.split(\".\")) {\n if (!obj.hasOwnProperty(item)) {\n return undefined;\n }\n obj = obj[item];\n }\n return obj;\n}\n\n/**\n * exists - return true if inner property of Object exists\n * Usage: exists(\"some.prop.to.locate\", obj);\n *\n * @param prop - property to locate\n * @param obj - object to locate property in\n */\nexport function exists(prop: string, obj: any): boolean {\n return inner(prop, obj) !== undefined;\n}\n\nfunction _mixin(dest: any, source: any): any {\n const empty: any = {};\n for (const key in source) {\n if (!source.hasOwnProperty(key)) continue;\n if (key === \"__proto__\" || key === \"constructor\") continue;\n let s: any = source[key];\n if (s instanceof Array) {\n // TODO: Do we need to support arrays?\n } else if (typeof s === \"object\") {\n s = deepMixin(dest[key], s);\n }\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\n/**\n * deepMixin - combine several objects from right to left\n * Usage: deepMixin({a: \"a\"}, {b: \"b\"});\n *\n * @param dest - target object to mix into.\n * @param sources - objects to mix in\n */\nexport function deepMixin(dest: any = {}, ...sources: any[]): any {\n if (typeof dest !== \"object\") throw new Error(`Destination \"${dest}\" must be an object.`);\n for (const source of sources) {\n _mixin(dest, source);\n }\n return dest;\n}\n\n/**\n * deepMixinT - combine several objects of Partial<T> from right to left\n * Usage: deepMixinT<MyInterface>({a: \"a\"}, {b: \"b\"});\n *\n * Note: Only provided as a convenience, so user gets auto completion based on destination type.\n *\n * @param dest - target object to mix into.\n * @param sources - objects to mix in\n */\nexport function deepMixinT<T>(dest: RecursivePartial<T> = {}, ...sources: Array<RecursivePartial<T>>): T {\n return deepMixin(dest, ...sources);\n}\n\n/**\n * safeStingify - JSONsimilar to .stringify, except ignores circular references.\n * Usage: safeStingify(object);\n *\n * @param obj - any object.\n */\nexport function safeStringify(obj: object) {\n const cache: any[] = [];\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 isArray(arg: any): arg is any[] {\n if (Array.isArray !== undefined) {\n return Array.isArray(arg);\n }\n return Object.prototype.toString.call(arg) === \"[object Array]\";\n}\n\nexport interface ClassMeta {\n module: string;\n file: string;\n class: string;\n}\n\nexport function classID2Meta(classID: string): ClassMeta {\n const info = classID.split(\"_\");\n const classInfo = info[1].split(\".\");\n return {\n module: `@hpcc-js/${info[0]}`,\n file: classInfo[0],\n class: classInfo[1] || classInfo[0]\n };\n}\n", "/**\n * IObserverHandle - Reference to an observing instance\n */\nexport interface IObserverHandle {\n release(): void;\n unwatch(): void;\n}\n\nexport type CallbackFunction = (...args: any[]) => void;\n\nclass ObserverHandle<T extends string> implements IObserverHandle {\n private eventTarget: Observable<T>;\n private eventID: T;\n private callback: CallbackFunction;\n\n constructor(eventTarget: Observable<T>, eventID: T, callback: CallbackFunction) {\n this.eventTarget = eventTarget;\n this.eventID = eventID;\n this.callback = callback;\n }\n\n release() {\n this.eventTarget.removeObserver(this.eventID, this.callback);\n }\n\n unwatch() {\n this.release();\n }\n}\n\nexport type EventID = string;\nexport class Observable<T extends EventID> {\n private _eventObservers: { [eventID: string]: CallbackFunction[] } = {};\n\n constructor(...events: T[]) {\n }\n\n addObserver(eventID: T, callback: CallbackFunction): IObserverHandle {\n let eventObservers: CallbackFunction[] = this._eventObservers[eventID];\n if (!eventObservers) {\n eventObservers = [];\n this._eventObservers[eventID] = eventObservers;\n }\n eventObservers.push(callback);\n return new ObserverHandle<T>(this, eventID, callback);\n }\n\n removeObserver(eventID: T, callback: CallbackFunction): this {\n const eventObservers = this._eventObservers[eventID];\n if (eventObservers) {\n for (let i = eventObservers.length - 1; i >= 0; --i) {\n if (eventObservers[i] === callback) {\n eventObservers.splice(i, 1);\n }\n }\n }\n return this;\n }\n\n dispatchEvent(eventID: T, ...args: any[]): this {\n const eventObservers = this._eventObservers[eventID];\n if (eventObservers) {\n for (const observer of eventObservers) {\n observer(...args);\n }\n }\n return this;\n }\n\n private _hasObserver(eventID: string): boolean {\n const eventObservers = this._eventObservers[eventID];\n for (const observer in eventObservers) {\n if (eventObservers[observer]) {\n return true;\n }\n }\n return false;\n }\n\n hasObserver(_eventID?: T): boolean {\n if (_eventID !== void 0) {\n return this._hasObserver(_eventID);\n }\n for (const eventID in this._eventObservers) {\n if (this._hasObserver(eventID)) {\n return true;\n }\n }\n return false;\n }\n}\n", "import type { IObserverHandle } from \"./observer.ts\";\nimport { root } from \"./platform.ts\";\n\nexport type RquestAnimationFrame = (callback: FrameRequestCallback) => number | undefined;\nexport type CancelAnimationFrame = (handle: number) => void | undefined;\n\nlet requestAnimationFrame: RquestAnimationFrame;\n// let cancelAnimationFrame: CancelAnimationFrame;\n\n(function () {\n if (root.requestAnimationFrame) {\n requestAnimationFrame = root.requestAnimationFrame;\n // cancelAnimationFrame = root.cancelAnimationFrame;\n } else {\n let lastTime = 0;\n requestAnimationFrame = function (callback: FrameRequestCallback): any {\n const currTime = new Date().getTime();\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\n const id = setTimeout(() => callback(currTime + timeToCall), timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n // cancelAnimationFrame = function (handle: number): void {\n // clearTimeout(handle);\n // };\n }\n})();\n\nexport class Message {\n\n get canConflate(): boolean { return false; }\n conflate(other: Message): boolean {\n return false;\n }\n\n void(): boolean {\n return false;\n }\n}\ntype MessageConstructor<T extends Message> = new (...args: any[]) => T;\n\nexport type Callback<T extends Message> = (messages: T[]) => void;\nexport { IObserverHandle };\n\ntype ObserverAdapter<T extends Message = Message> = {\n id: number;\n type?: MessageConstructor<T>;\n callback: Callback<T>;\n};\n\nexport class Dispatch<T extends Message = Message> {\n\n private _observerID: number = 0;\n private _observers: ObserverAdapter<T>[] = [];\n private _messageBuffer: T[] = [];\n\n constructor() {\n }\n\n private observers(): ObserverAdapter<T>[] {\n return this._observers;\n }\n\n private messages(): T[] {\n const retVal: T[] = [];\n this._messageBuffer.forEach(msg => {\n if (!retVal.some(msg2 => msg2.canConflate && msg2.conflate(msg))) {\n retVal.push(msg);\n }\n });\n return retVal;\n }\n\n private dispatchAll() {\n this.dispatch(this.messages());\n this.flush();\n }\n\n private dispatch(messages: T[]) {\n if (messages.length === 0) return;\n this.observers().forEach(o => {\n const msgs = messages.filter(m => !m.void() && (o.type === undefined || m instanceof o.type));\n if (msgs.length) {\n o.callback(msgs);\n }\n });\n }\n\n hasObserver(): boolean {\n return this._observers.length > 0;\n }\n\n flush() {\n this._messageBuffer = [];\n }\n\n send(msg: T) {\n this.dispatch([msg]);\n }\n\n post(msg: T) {\n this._messageBuffer.push(msg);\n requestAnimationFrame(() => this.dispatchAll());\n }\n\n attach(callback: Callback<T>, type?: MessageConstructor<T>): IObserverHandle {\n const context = this;\n const id = ++this._observerID;\n this._observers.push({ id, type, callback });\n return {\n release() {\n context._observers = context._observers.filter(o => o.id !== id);\n },\n unwatch() {\n this.release();\n }\n };\n }\n}\n", "import { StringAnyMap } from \"./dictionary.ts\";\nimport { Stack } from \"./stack.ts\";\n\nexport class XMLNode {\n name: string = \"\";\n $: StringAnyMap = {};\n protected _children: XMLNode[] = [];\n content: string = \"\";\n\n constructor(name: string) {\n this.name = name;\n }\n\n appendAttribute(key: string, val: string) {\n this.$[key] = val;\n }\n\n appendContent(content: string) {\n this.content += content;\n }\n\n appendChild(child: XMLNode) {\n this._children.push(child);\n }\n\n children(tag?: string): XMLNode[] {\n if (tag === undefined) {\n return this._children;\n }\n return this._children.filter((xmlNode) => {\n return xmlNode.name === tag;\n });\n }\n}\n\nexport class SAXStackParser {\n root?: XMLNode;\n stack: Stack<XMLNode> = new Stack<XMLNode>();\n\n constructor() {\n }\n\n private walkDoc(node: any) {\n const xmlNode = this._startXMLNode(node);\n if (node.attributes) {\n for (let i = 0; i < node.attributes.length; ++i) {\n const attribute = node.attributes.item(i);\n this.attributes(attribute.nodeName, attribute.nodeValue);\n }\n }\n this.startXMLNode(xmlNode);\n if (node.childNodes) {\n for (let i = 0; i < node.childNodes.length; ++i) {\n const childNode = node.childNodes.item(i);\n if (childNode.nodeType === childNode.TEXT_NODE) {\n this.characters(childNode.nodeValue!);\n } else {\n this.walkDoc(childNode);\n }\n }\n }\n this.endXMLNode(this.stack.pop()!);\n }\n\n private _startXMLNode(node: Node): XMLNode {\n const newNode = new XMLNode(node.nodeName);\n if (!this.stack.depth()) {\n this.root = newNode;\n } else {\n this.stack.top()!.appendChild(newNode);\n }\n return this.stack.push(newNode);\n }\n\n parse(xml: string) {\n const domParser = new DOMParser();\n const doc = domParser.parseFromString(xml, \"application/xml\");\n this.startDocument();\n this.walkDoc(doc);\n this.endDocument();\n }\n\n // Callbacks ---\n startDocument() {\n }\n\n endDocument() {\n }\n\n startXMLNode(node: XMLNode) {\n }\n\n endXMLNode(node: XMLNode) {\n }\n\n attributes(key: string, val: any) {\n this.stack.top()!.appendAttribute(key, val);\n }\n\n characters(text: string) {\n this.stack.top()!.appendContent(text);\n }\n}\n\nclass XML2JSONParser extends SAXStackParser {\n startXMLNode(node: XMLNode) {\n super.startXMLNode(node);\n switch (node.name) {\n case \"xs:element\":\n break;\n case \"xs:simpleType\":\n break;\n default:\n break;\n }\n }\n\n endXMLNode(node: XMLNode) {\n switch (node.name) {\n case \"xs:element\":\n break;\n case \"xs:simpleType\":\n break;\n default:\n break;\n }\n super.endXMLNode(node);\n }\n}\n\nexport function xml2json(xml: string): XMLNode | undefined {\n const saxParser = new XML2JSONParser();\n saxParser.parse(xml);\n return saxParser.root;\n}\n", "import { Dispatch, IObserverHandle, Message } from \"./dispatch.ts\";\nimport { deepEquals } from \"./immutable.ts\";\n\nclass PropChangedMessage extends Message {\n\n constructor(readonly property: string, public newValue: any, public oldValue?: any) {\n super();\n }\n\n get canConflate(): boolean { return true; }\n conflate(other: PropChangedMessage) {\n if (this.property === other.property) {\n this.newValue = other.newValue;\n return true;\n }\n return false;\n }\n\n void(): boolean {\n return deepEquals(this.newValue, this.oldValue);\n }\n}\n\nexport interface IEvent {\n id: string;\n oldValue: any;\n newValue: any;\n}\n\nexport type StatePropCallback = (changes: IEvent) => void;\nexport type StateCallback = (changes: IEvent[]) => void;\nexport type StateEvents = \"propChanged\" | \"changed\";\nexport class StateObject<U, I> {\n private _espState: Partial<U> = {} as U;\n private _dispatch = new Dispatch<PropChangedMessage>();\n private _monitorHandle?: any;\n protected _monitorTickCount: number = 0;\n\n protected clear(newVals?: Partial<I>) {\n this._espState = {} as U;\n if (newVals !== void 0) {\n this.set(newVals as I);\n }\n this._monitorTickCount = 0;\n }\n\n protected get(): U;\n protected get<K extends keyof U>(key: K, defValue?: U[K]): U[K];\n protected get<K extends keyof U>(key?: K, defValue?: U[K]): Partial<U> | U[K] | undefined {\n if (key === void 0) {\n return this._espState;\n }\n return this.has(key) ? this._espState[key] : defValue;\n }\n\n protected set(newVals: I): void;\n protected set<K extends keyof U>(key: K, newVal: U[K], batchMode?: boolean): void;\n protected set<K extends keyof U>(keyOrNewVals: K | U, newVal?: U[K]): void {\n if (typeof keyOrNewVals === \"string\") {\n return this.setSingle(keyOrNewVals as any, newVal as U[K]); // TODO: \"as any\" should not be needed (TS >= 3.1.x)\n }\n this.setAll(keyOrNewVals as Partial<U>);\n }\n\n private setSingle<K extends keyof U>(key: K, newVal: U[K] | undefined): void {\n const oldVal = this._espState[key];\n this._espState[key] = newVal;\n this._dispatch.post(new PropChangedMessage(key as string, newVal, oldVal));\n }\n\n private setAll(_: Partial<U>): void {\n for (const key in _) {\n if (_.hasOwnProperty(key)) {\n this.setSingle(key, _[key]);\n }\n }\n }\n\n protected has<K extends keyof U>(key: K): boolean {\n return this._espState[key] !== void 0;\n }\n\n addObserver(eventID: StateEvents, callback: StateCallback): IObserverHandle;\n addObserver(eventID: StateEvents, propID: keyof U, callback: StatePropCallback): IObserverHandle;\n addObserver(eventID: StateEvents, propIDOrCallback: StateCallback | keyof U, callback?: StatePropCallback): IObserverHandle {\n if (this.isCallback(propIDOrCallback)) {\n if (eventID !== \"changed\") throw new Error(\"Invalid eventID: \" + eventID);\n return this._dispatch.attach((messages: PropChangedMessage[]) => {\n propIDOrCallback(messages.map(m => ({\n id: m.property,\n oldValue: m.oldValue,\n newValue: m.newValue\n })));\n });\n } else {\n if (eventID !== \"propChanged\") throw new Error(\"Invalid eventID: \" + eventID);\n return this._dispatch.attach((messages: PropChangedMessage[]) => {\n const filteredMessages = messages.filter(m => m.property === propIDOrCallback);\n if (filteredMessages.length) {\n if (filteredMessages.length > 1) {\n console.warn(\"Should only be 1 message?\");\n }\n const event = filteredMessages[filteredMessages.length - 1];\n callback!({\n id: event.property,\n oldValue: event.oldValue,\n newValue: event.newValue\n });\n }\n });\n }\n }\n\n on(eventID: StateEvents, callback: StateCallback): this;\n on(eventID: StateEvents, propID: keyof U, callback: StatePropCallback): this;\n on(eventID: StateEvents, propIDOrCallback: StateCallback | keyof U, callback?: StatePropCallback): this {\n this.addObserver(eventID, propIDOrCallback as any, callback as any);\n return this;\n }\n\n protected isCallback(propIDOrCallback: StateCallback | keyof U): propIDOrCallback is StateCallback {\n return (typeof propIDOrCallback === \"function\");\n }\n\n protected hasEventListener(): boolean {\n return this._dispatch.hasObserver();\n }\n\n // Monitoring ---\n protected async refresh(full: boolean = false): Promise<this> {\n await Promise.resolve();\n return this;\n }\n\n protected _monitor(): void {\n if (this._monitorHandle) {\n this._monitorTickCount = 0;\n return;\n }\n\n this._monitorHandle = setTimeout(() => {\n const refreshPromise: Promise<any> = this.hasEventListener() ? this.refresh() : Promise.resolve();\n refreshPromise.then(() => {\n this._monitor();\n });\n delete this._monitorHandle;\n }, this._monitorTimeoutDuration());\n }\n\n protected _monitorTimeoutDuration(): number {\n ++this._monitorTickCount;\n if (this._monitorTickCount <= 1) { // Once\n return 0;\n }\n return 30000;\n }\n\n watch(callback: StateCallback, triggerChange: boolean = true): IObserverHandle {\n if (typeof callback !== \"function\") {\n throw new Error(\"Invalid Callback\");\n }\n if (triggerChange) {\n setTimeout(() => {\n const props: any = this.get();\n const changes: IEvent[] = [];\n for (const key in props) {\n if (props.hasOwnProperty(props)) {\n changes.push({ id: key, newValue: props[key], oldValue: undefined });\n }\n }\n callback(changes);\n }, 0);\n }\n const retVal = this.addObserver(\"changed\", callback);\n this._monitor();\n return retVal;\n }\n}\n", "export function trim(str: string, char: string): string {\n if (typeof char !== \"string\") return str;\n if (char.length === 0) return str;\n while (str.indexOf(char) === 0) {\n str = str.substring(1);\n }\n while (endsWith(str, char)) {\n str = str.substring(0, str.length - 1);\n }\n return str;\n}\n\nexport function endsWith(origString: string, searchString: string, position?: number) {\n const subjectString = origString.toString();\n if (typeof position !== \"number\" || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n const lastIndex = subjectString.lastIndexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n", "export function join(...segments: string[]) {\n const parts: string[] = segments.reduce((parts: string[], segment) => {\n // Remove leading slashes from non-first part.\n if (parts.length > 0) {\n segment = segment.replace(/^\\//, \"\");\n }\n // Remove trailing slashes.\n segment = segment.replace(/\\/$/, \"\");\n return [...parts, ...segment.split(\"/\")];\n }, []);\n const resultParts = [];\n for (const part of parts) {\n if (part === \".\") {\n continue;\n }\n if (part === \"..\") {\n resultParts.pop();\n continue;\n }\n resultParts.push(part);\n }\n return resultParts.join(\"/\");\n}\n\nexport function dirname(path: string) {\n return join(path, \"..\");\n}\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];\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\": \"\uF26E\", \"fa-address-book\": \"\uF2B9\", \"fa-address-book-o\": \"\uF2BA\", \"fa-address-card\": \"\uF2BB\", \"fa-address-card-o\": \"\uF2BC\", \"fa-adjust\": \"\uF042\", \"fa-adn\": \"\uF170\", \"fa-align-center\": \"\uF037\", \"fa-align-justify\": \"\uF039\", \"fa-align-left\": \"\uF036\", \"fa-align-right\": \"\uF038\", \"fa-amazon\": \"\uF270\", \"fa-ambulance\": \"\uF0F9\", \"fa-american-sign-language-interpreting\": \"\uF2A3\", \"fa-anchor\": \"\uF13D\", \"fa-android\": \"\uF17B\", \"fa-angellist\": \"\uF209\", \"fa-angle-double-down\": \"\uF103\", \"fa-angle-double-left\": \"\uF100\", \"fa-angle-double-right\": \"\uF101\", \"fa-angle-double-up\": \"\uF102\", \"fa-angle-down\": \"\uF107\", \"fa-angle-left\": \"\uF104\", \"fa-angle-right\": \"\uF105\", \"fa-angle-up\": \"\uF106\", \"fa-apple\": \"\uF179\", \"fa-archive\": \"\uF187\", \"fa-area-chart\": \"\uF1FE\", \"fa-arrow-circle-down\": \"\uF0AB\", \"fa-arrow-circle-left\": \"\uF0A8\", \"fa-arrow-circle-o-down\": \"\uF01A\", \"fa-arrow-circle-o-left\": \"\uF190\", \"fa-arrow-circle-o-right\": \"\uF18E\", \"fa-arrow-circle-o-up\": \"\uF01B\", \"fa-arrow-circle-right\": \"\uF0A9\", \"fa-arrow-circle-up\": \"\uF0AA\", \"fa-arrow-down\": \"\uF063\", \"fa-arrow-left\": \"\uF060\", \"fa-arrow-right\": \"\uF061\", \"fa-arrow-up\": \"\uF062\", \"fa-arrows\": \"\uF047\", \"fa-arrows-alt\": \"\uF0B2\", \"fa-arrows-h\": \"\uF07E\", \"fa-arrows-v\": \"\uF07D\", \"fa-asl-interpreting\": \"\uF2A3\", \"fa-assistive-listening-systems\": \"\uF2A2\", \"fa-asterisk\": \"\uF069\", \"fa-at\": \"\uF1FA\", \"fa-audio-description\": \"\uF29E\", \"fa-automobile\": \"\uF1B9\", \"fa-backward\": \"\uF04A\", \"fa-balance-scale\": \"\uF24E\", \"fa-ban\": \"\uF05E\", \"fa-bandcamp\": \"\uF2D5\", \"fa-bank\": \"\uF19C\", \"fa-bar-chart\": \"\uF080\", \"fa-bar-chart-o\": \"\uF080\", \"fa-barcode\": \"\uF02A\", \"fa-bars\": \"\uF0C9\", \"fa-bath\": \"\uF2CD\", \"fa-bathtub\": \"\uF2CD\", \"fa-battery\": \"\uF240\", \"fa-battery-0\": \"\uF244\", \"fa-battery-1\": \"\uF243\", \"fa-battery-2\": \"\uF242\", \"fa-battery-3\": \"\uF241\", \"fa-battery-4\": \"\uF240\", \"fa-battery-empty\": \"\uF244\", \"fa-battery-full\": \"\uF240\", \"fa-battery-half\": \"\uF242\", \"fa-battery-quarter\": \"\uF243\", \"fa-battery-three-quarters\": \"\uF241\", \"fa-bed\": \"\uF236\", \"fa-beer\": \"\uF0FC\", \"fa-behance\": \"\uF1B4\", \"fa-behance-square\": \"\uF1B5\", \"fa-bell\": \"\uF0F3\", \"fa-bell-o\": \"\uF0A2\", \"fa-bell-slash\": \"\uF1F6\", \"fa-bell-slash-o\": \"\uF1F7\", \"fa-bicycle\": \"\uF206\", \"fa-binoculars\": \"\uF1E5\", \"fa-birthday-cake\": \"\uF1FD\", \"fa-bitbucket\": \"\uF171\", \"fa-bitbucket-square\": \"\uF172\", \"fa-bitcoin\": \"\uF15A\", \"fa-black-tie\": \"\uF27E\", \"fa-blind\": \"\uF29D\", \"fa-bluetooth\": \"\uF293\", \"fa-bluetooth-b\": \"\uF294\", \"fa-bold\": \"\uF032\", \"fa-bolt\": \"\uF0E7\", \"fa-bomb\": \"\uF1E2\", \"fa-book\": \"\uF02D\", \"fa-bookmark\": \"\uF02E\", \"fa-bookmark-o\": \"\uF097\", \"fa-braille\": \"\uF2A1\", \"fa-briefcase\": \"\uF0B1\", \"fa-btc\": \"\uF15A\", \"fa-bug\": \"\uF188\", \"fa-building\": \"\uF1AD\", \"fa-building-o\": \"\uF0F7\", \"fa-bullhorn\": \"\uF0A1\", \"fa-bullseye\": \"\uF140\", \"fa-bus\": \"\uF207\", \"fa-buysellads\": \"\uF20D\", \"fa-cab\": \"\uF1BA\", \"fa-calculator\": \"\uF1EC\", \"fa-calendar\": \"\uF073\", \"fa-calendar-check-o\": \"\uF274\", \"fa-calendar-minus-o\": \"\uF272\", \"fa-calendar-o\": \"\uF133\", \"fa-calendar-plus-o\": \"\uF271\", \"fa-calendar-times-o\": \"\uF273\", \"fa-camera\": \"\uF030\", \"fa-camera-retro\": \"\uF083\", \"fa-car\": \"\uF1B9\", \"fa-caret-down\": \"\uF0D7\", \"fa-caret-left\": \"\uF0D9\", \"fa-caret-right\": \"\uF0DA\", \"fa-caret-square-o-down\": \"\uF150\", \"fa-caret-square-o-left\": \"\uF191\", \"fa-caret-square-o-right\": \"\uF152\", \"fa-caret-square-o-up\": \"\uF151\", \"fa-caret-up\": \"\uF0D8\", \"fa-cart-arrow-down\": \"\uF218\", \"fa-cart-plus\": \"\uF217\", \"fa-cc\": \"\uF20A\", \"fa-cc-amex\": \"\uF1F3\", \"fa-cc-diners-club\": \"\uF24C\", \"fa-cc-discover\": \"\uF1F2\", \"fa-cc-jcb\": \"\uF24B\", \"fa-cc-mastercard\": \"\uF1F1\", \"fa-cc-paypal\": \"\uF1F4\", \"fa-cc-stripe\": \"\uF1F5\", \"fa-cc-visa\": \"\uF1F0\", \"fa-certificate\": \"\uF0A3\", \"fa-chain\": \"\uF0C1\", \"fa-chain-broken\": \"\uF127\", \"fa-check\": \"\uF00C\", \"fa-check-circle\": \"\uF058\", \"fa-check-circle-o\": \"\uF05D\", \"fa-check-square\": \"\uF14A\", \"fa-check-square-o\": \"\uF046\", \"fa-chevron-circle-down\": \"\uF13A\", \"fa-chevron-circle-left\": \"\uF137\", \"fa-chevron-circle-right\": \"\uF138\", \"fa-chevron-circle-up\": \"\uF139\", \"fa-chevron-down\": \"\uF078\", \"fa-chevron-left\": \"\uF053\", \"fa-chevron-right\": \"\uF054\", \"fa-chevron-up\": \"\uF077\", \"fa-child\": \"\uF1AE\", \"fa-chrome\": \"\uF268\", \"fa-circle\": \"\uF111\", \"fa-circle-o\": \"\uF10C\", \"fa-circle-o-notch\": \"\uF1CE\", \"fa-circle-thin\": \"\uF1DB\", \"fa-clipboard\": \"\uF0EA\", \"fa-clock-o\": \"\uF017\", \"fa-clone\": \"\uF24D\", \"fa-close\": \"\uF00D\", \"fa-cloud\": \"\uF0C2\", \"fa-cloud-download\": \"\uF0ED\", \"fa-cloud-upload\": \"\uF0EE\", \"fa-cny\": \"\uF157\", \"fa-code\": \"\uF121\", \"fa-code-fork\": \"\uF126\", \"fa-codepen\": \"\uF1CB\", \"fa-codiepie\": \"\uF284\", \"fa-coffee\": \"\uF0F4\", \"fa-cog\": \"\uF013\", \"fa-cogs\": \"\uF085\", \"fa-columns\": \"\uF0DB\", \"fa-comment\": \"\uF075\", \"fa-comment-o\": \"\uF0E5\", \"fa-commenting\": \"\uF27A\", \"fa-commenting-o\": \"\uF27B\", \"fa-comments\": \"\uF086\", \"fa-comments-o\": \"\uF0E6\", \"fa-compass\": \"\uF14E\", \"fa-compress\": \"\uF066\", \"fa-connectdevelop\": \"\uF20E\", \"fa-contao\": \"\uF26D\", \"fa-copy\": \"\uF0C5\", \"fa-copyright\": \"\uF1F9\", \"fa-creative-commons\": \"\uF25E\", \"fa-credit-card\": \"\uF09D\", \"fa-credit-card-alt\": \"\uF283\", \"fa-crop\": \"\uF125\", \"fa-crosshairs\": \"\uF05B\", \"fa-css3\": \"\uF13C\", \"fa-cube\": \"\uF1B2\", \"fa-cubes\": \"\uF1B3\", \"fa-cut\": \"\uF0C4\", \"fa-cutlery\": \"\uF0F5\", \"fa-dashboard\": \"\uF0E4\", \"fa-dashcube\": \"\uF210\", \"fa-database\": \"\uF1C0\", \"fa-deaf\": \"\uF2A4\", \"fa-deafness\": \"\uF2A4\", \"fa-dedent\": \"\uF03B\", \"fa-delicious\": \"\uF1A5\", \"fa-desktop\": \"\uF108\", \"fa-deviantart\": \"\uF1BD\", \"fa-diamond\": \"\uF219\", \"fa-digg\": \"\uF1A6\", \"fa-dollar\": \"\uF155\", \"fa-dot-circle-o\": \"\uF192\", \"fa-download\": \"\uF019\", \"fa-dribbble\": \"\uF17D\", \"fa-drivers-license\": \"\uF2C2\", \"fa-drivers-license-o\": \"\uF2C3\", \"fa-dropbox\": \"\uF16B\", \"fa-drupal\": \"\uF1A9\", \"fa-edge\": \"\uF282\", \"fa-edit\": \"\uF044\", \"fa-eercast\": \"\uF2DA\", \"fa-eject\": \"\uF052\", \"fa-ellipsis-h\": \"\uF141\", \"fa-ellipsis-v\": \"\uF142\", \"fa-empire\": \"\uF1D1\", \"fa-envelope\": \"\uF0E0\", \"fa-envelope-o\": \"\uF003\", \"fa-envelope-open\": \"\uF2B6\", \"fa-envelope-open-o\": \"\uF2B7\", \"fa-envelope-square\": \"\uF199\", \"fa-envira\": \"\uF299\", \"fa-eraser\": \"\uF12D\", \"fa-etsy\": \"\uF2D7\", \"fa-eur\": \"\uF153\", \"fa-euro\": \"\uF153\", \"fa-exchange\": \"\uF0EC\", \"fa-exclamation\": \"\uF12A\", \"fa-exclamation-circle\": \"\uF06A\", \"fa-exclamation-triangle\": \"\uF071\", \"fa-expand\": \"\uF065\", \"fa-expeditedssl\": \"\uF23E\", \"fa-external-link\": \"\uF08E\", \"fa-external-link-square\": \"\uF14C\", \"fa-eye\": \"\uF06E\", \"fa-eye-slash\": \"\uF070\", \"fa-eyedropper\": \"\uF1FB\", \"fa-fa\": \"\uF2B4\", \"fa-facebook\": \"\uF09A\", \"fa-facebook-f\": \"\uF09A\", \"fa-facebook-official\": \"\uF230\", \"fa-facebook-square\": \"\uF082\", \"fa-fast-backward\": \"\uF049\", \"fa-fast-forward\": \"\uF050\", \"fa-fax\": \"\uF1AC\", \"fa-feed\": \"\uF09E\", \"fa-female\": \"\uF182\", \"fa-fighter-jet\": \"\uF0FB\", \"fa-file\": \"\uF15B\", \"fa-file-archive-o\": \"\uF1C6\", \"fa-file-audio-o\": \"\uF1C7\", \"fa-file-code-o\": \"\uF1C9\", \"fa-file-excel-o\": \"\uF1C3\", \"fa-file-image-o\": \"\uF1C5\", \"fa-file-movie-o\": \"\uF1C8\", \"fa-file-o\": \"\uF016\", \"fa-file-pdf-o\": \"\uF1C1\", \"fa-file-photo-o\": \"\uF1C5\", \"fa-file-picture-o\": \"\uF1C5\", \"fa-file-powerpoint-o\": \"\uF1C4\", \"fa-file-sound-o\": \"\uF1C7\", \"fa-file-text\": \"\uF15C\", \"fa-file-text-o\": \"\uF0F6\", \"fa-file-video-o\": \"\uF1C8\", \"fa-file-word-o\": \"\uF1C2\", \"fa-file-zip-o\": \"\uF1C6\", \"fa-files-o\": \"\uF0C5\", \"fa-film\": \"\uF008\", \"fa-filter\": \"\uF0B0\", \"fa-fire\": \"\uF06D\", \"fa-fire-extinguisher\": \"\uF134\", \"fa-firefox\": \"\uF269\", \"fa-first-order\": \"\uF2B0\", \"fa-flag\": \"\uF024\", \"fa-flag-checkered\": \"\uF11E\", \"fa-flag-o\": \"\uF11D\", \"fa-flash\": \"\uF0E7\", \"fa-flask\": \"\uF0C3\", \"fa-flickr\": \"\uF16E\", \"fa-floppy-o\": \"\uF0C7\", \"fa-folder\": \"\uF07B\", \"fa-folder-o\": \"\uF114\", \"fa-folder-open\": \"\uF07C\", \"fa-folder-open-o\": \"\uF115\", \"fa-font\": \"\uF031\", \"fa-font-awesome\": \"\uF2B4\", \"fa-fonticons\": \"\uF280\", \"fa-fort-awesome\": \"\uF286\", \"fa-forumbee\": \"\uF211\", \"fa-forward\": \"\uF04E\", \"fa-foursquare\": \"\uF180\", \"fa-free-code-camp\": \"\uF2C5\", \"fa-frown-o\": \"\uF119\", \"fa-futbol-o\": \"\uF1E3\", \"fa-gamepad\": \"\uF11B\", \"fa-gavel\": \"\uF0E3\", \"fa-gbp\": \"\uF154\", \"fa-ge\": \"\uF1D1\", \"fa-gear\": \"\uF013\", \"fa-gears\": \"\uF085\", \"fa-genderless\": \"\uF22D\", \"fa-get-pocket\": \"\uF265\", \"fa-gg\": \"\uF260\", \"fa-gg-circle\": \"\uF261\", \"fa-gift\": \"\uF06B\", \"fa-git\": \"\uF1D3\", \"fa-git-square\": \"\uF1D2\", \"fa-github\": \"\uF09B\", \"fa-github-alt\": \"\uF113\", \"fa-github-square\": \"\uF092\", \"fa-gitlab\": \"\uF296\", \"fa-gittip\": \"\uF184\", \"fa-glass\": \"\uF000\", \"fa-glide\": \"\uF2A5\", \"fa-glide-g\": \"\uF2A6\", \"fa-globe\": \"\uF0AC\", \"fa-google\": \"\uF1A0\", \"fa-google-plus\": \"\uF0D5\", \"fa-google-plus-circle\": \"\uF2B3\", \"fa-google-plus-official\": \"\uF2B3\", \"fa-google-plus-square\": \"\uF0D4\", \"fa-google-wallet\": \"\uF1EE\", \"fa-graduation-cap\": \"\uF19D\", \"fa-gratipay\": \"\uF184\", \"fa-grav\": \"\uF2D6\", \"fa-group\": \"\uF0C0\", \"fa-h-square\": \"\uF0FD\", \"fa-hacker-news\": \"\uF1D4\", \"fa-hand-grab-o\": \"\uF255\", \"fa-hand-lizard-o\": \"\uF258\", \"fa-hand-o-down\": \"\uF0A7\", \"fa-hand-o-left\": \"\uF0A5\", \"fa-hand-o-right\": \"\uF0A4\", \"fa-hand-o-up\": \"\uF0A6\", \"fa-hand-paper-o\": \"\uF256\", \"fa-hand-peace-o\": \"\uF25B\", \"fa-hand-pointer-o\": \"\uF25A\", \"fa-hand-rock-o\": \"\uF255\", \"fa-hand-scissors-o\": \"\uF257\", \"fa-hand-spock-o\": \"\uF259\", \"fa-hand-stop-o\": \"\uF256\", \"fa-handshake-o\": \"\uF2B5\", \"fa-hard-of-hearing\": \"\uF2A4\", \"fa-hashtag\": \"\uF292\", \"fa-hdd-o\": \"\uF0A0\", \"fa-header\": \"\uF1DC\", \"fa-headphones\": \"\uF025\", \"fa-heart\": \"\uF004\", \"fa-heart-o\": \"\uF08A\", \"fa-heartbeat\": \"\uF21E\", \"fa-history\": \"\uF1DA\", \"fa-home\": \"\uF015\", \"fa-hospital-o\": \"\uF0F8\", \"fa-hotel\": \"\uF236\", \"fa-hourglass\": \"\uF254\", \"fa-hourglass-1\": \"\uF251\", \"fa-hourglass-2\": \"\uF252\", \"fa-hourglass-3\": \"\uF253\", \"fa-hourglass-end\": \"\uF253\", \"fa-hourglass-half\": \"\uF252\", \"fa-hourglass-o\": \"\uF250\", \"fa-hourglass-start\": \"\uF251\", \"fa-houzz\": \"\uF27C\", \"fa-html5\": \"\uF13B\", \"fa-i-cursor\": \"\uF246\", \"fa-id-badge\": \"\uF2C1\", \"fa-id-card\": \"\uF2C2\", \"fa-id-card-o\": \"\uF2C3\", \"fa-ils\": \"\uF20B\", \"fa-image\": \"\uF03E\", \"fa-imdb\": \"\uF2D8\", \"fa-inbox\": \"\uF01C\", \"fa-indent\": \"\uF03C\", \"fa-industry\": \"\uF275\", \"fa-info\": \"\uF129\", \"fa-info-circle\": \"\uF05A\", \"fa-inr\": \"\uF156\", \"fa-instagram\": \"\uF16D\", \"fa-institution\": \"\uF19C\", \"fa-internet-explorer\": \"\uF26B\", \"fa-intersex\": \"\uF224\", \"fa-ioxhost\": \"\uF208\", \"fa-italic\": \"\uF033\", \"fa-joomla\": \"\uF1AA\", \"fa-jpy\": \"\uF157\", \"fa-jsfiddle\": \"\uF1CC\", \"fa-key\": \"\uF084\", \"fa-keyboard-o\": \"\uF11C\", \"fa-krw\": \"\uF159\", \"fa-language\": \"\uF1AB\", \"fa-laptop\": \"\uF109\", \"fa-lastfm\": \"\uF202\", \"fa-lastfm-square\": \"\uF203\", \"fa-leaf\": \"\uF06C\", \"fa-leanpub\": \"\uF212\", \"fa-legal\": \"\uF0E3\", \"fa-lemon-o\": \"\uF094\", \"fa-level-down\": \"\uF149\", \"fa-level-up\": \"\uF148\", \"fa-life-bouy\": \"\uF1CD\", \"fa-life-buoy\": \"\uF1CD\", \"fa-life-ring\": \"\uF1CD\", \"fa-life-saver\": \"\uF1CD\", \"fa-lightbulb-o\": \"\uF0EB\", \"fa-line-chart\": \"\uF201\", \"fa-link\": \"\uF0C1\", \"fa-linkedin\": \"\uF0E1\", \"fa-linkedin-square\": \"\uF08C\", \"fa-linode\": \"\uF2B8\", \"fa-linux\": \"\uF17C\", \"fa-list\": \"\uF03A\", \"fa-list-alt\": \"\uF022\", \"fa-list-ol\": \"\uF0CB\", \"fa-list-ul\": \"\uF0CA\", \"fa-location-arrow\": \"\uF124\", \"fa-lock\": \"\uF023\", \"fa-long-arrow-down\": \"\uF175\", \"fa-long-arrow-left\": \"\uF177\", \"fa-long-arrow-right\": \"\uF178\", \"fa-long-arrow-up\": \"\uF176\", \"fa-low-vision\": \"\uF2A8\", \"fa-magic\": \"\uF0D0\", \"fa-magnet\": \"\uF076\", \"fa-mail-forward\": \"\uF064\", \"fa-mail-reply\": \"\uF112\", \"fa-mail-reply-all\": \"\uF122\", \"fa-male\": \"\uF183\", \"fa-map\": \"\uF279\", \"fa-map-marker\": \"\uF041\", \"fa-map-o\": \"\uF278\", \"fa-map-pin\": \"\uF276\", \"fa-map-signs\": \"\uF277\", \"fa-mars\": \"\uF222\", \"fa-mars-double\": \"\uF227\", \"fa-mars-stroke\": \"\uF229\", \"fa-mars-stroke-h\": \"\uF22B\", \"fa-mars-stroke-v\": \"\uF22A\", \"fa-maxcdn\": \"\uF136\", \"fa-meanpath\": \"\uF20C\", \"fa-medium\": \"\uF23A\", \"fa-medkit\": \"\uF0FA\", \"fa-meetup\": \"\uF2E0\", \"fa-meh-o\": \"\uF11A\", \"fa-mercury\": \"\uF223\", \"fa-microchip\": \"\uF2DB\", \"fa-microphone\": \"\uF130\", \"fa-microphone-slash\": \"\uF131\", \"fa-minus\": \"\uF068\", \"fa-minus-circle\": \"\uF056\", \"fa-minus-square\": \"\uF146\", \"fa-minus-square-o\": \"\uF147\", \"fa-mixcloud\": \"\uF289\", \"fa-mobile\": \"\uF10B\", \"fa-mobile-phone\": \"\uF10B\", \"fa-modx\": \"\uF285\", \"fa-money\": \"\uF0D6\", \"fa-moon-o\": \"\uF186\", \"fa-mortar-board\": \"\uF19D\", \"fa-motorcycle\": \"\uF21C\", \"fa-mouse-pointer\": \"\uF245\", \"fa-music\": \"\uF001\", \"fa-navicon\": \"\uF0C9\", \"fa-neuter\": \"\uF22C\", \"fa-newspaper-o\": \"\uF1EA\", \"fa-object-group\": \"\uF247\", \"fa-object-ungroup\": \"\uF248\", \"fa-odnoklassniki\": \"\uF263\", \"fa-odnoklassniki-square\": \"\uF264\", \"fa-opencart\": \"\uF23D\", \"fa-openid\": \"\uF19B\", \"fa-opera\": \"\uF26A\", \"fa-optin-monster\": \"\uF23C\", \"fa-outdent\": \"\uF03B\", \"fa-pagelines\": \"\uF18C\", \"fa-paint-brush\": \"\uF1FC\", \"fa-paper-plane\": \"\uF1D8\", \"fa-paper-plane-o\": \"\uF1D9\", \"fa-paperclip\": \"\uF0C6\", \"fa-paragraph\": \"\uF1DD\", \"fa-paste\": \"\uF0EA\", \"fa-pause\": \"\uF04C\", \"fa-pause-circle\": \"\uF28B\", \"fa-pause-circle-o\": \"\uF28C\", \"fa-paw\": \"\uF1B0\", \"fa-paypal\": \"\uF1ED\", \"fa-pencil\": \"\uF040\", \"fa-pencil-square\": \"\uF14B\", \"fa-pencil-square-o\": \"\uF044\", \"fa-percent\": \"\uF295\", \"fa-phone\": \"\uF095\", \"fa-phone-square\": \"\uF098\", \"fa-photo\": \"\uF03E\", \"fa-picture-o\": \"\uF03E\", \"fa-pie-chart\": \"\uF200\", \"fa-pied-piper\": \"\uF2AE\", \"fa-pied-piper-alt\": \"\uF1A8\", \"fa-pied-piper-pp\": \"\uF1A7\", \"fa-pinterest\": \"\uF0D2\", \"fa-pinterest-p\": \"\uF231\", \"fa-pinterest-square\": \"\uF0D3\", \"fa-plane\": \"\uF072\", \"fa-play\": \"\uF04B\", \"fa-play-circle\": \"\uF144\", \"fa-play-circle-o\": \"\uF01D\", \"fa-plug\": \"\uF1E6\", \"fa-plus\": \"\uF067\", \"fa-plus-circle\": \"\uF055\", \"fa-plus-square\": \"\uF0FE\", \"fa-plus-square-o\": \"\uF196\", \"fa-podcast\": \"\uF2CE\", \"fa-power-off\": \"\uF011\", \"fa-print\": \"\uF02F\", \"fa-product-hunt\": \"\uF288\", \"fa-puzzle-piece\": \"\uF12E\", \"fa-qq\": \"\uF1D6\", \"fa-qrcode\": \"\uF029\", \"fa-question\": \"\uF128\", \"fa-question-circle\": \"\uF059\", \"fa-question-circle-o\": \"\uF29C\", \"fa-quora\": \"\uF2C4\", \"fa-quote-left\": \"\uF10D\", \"fa-quote-right\": \"\uF10E\", \"fa-ra\": \"\uF1D0\", \"fa-random\": \"\uF074\", \"fa-ravelry\": \"\uF2D9\", \"fa-rebel\": \"\uF1D0\", \"fa-recycle\": \"\uF1B8\", \"fa-reddit\": \"\uF1A1\", \"fa-reddit-alien\": \"\uF281\", \"fa-reddit-square\": \"\uF1A2\", \"fa-refresh\": \"\uF021\", \"fa-registered\": \"\uF25D\", \"fa-remove\": \"\uF00D\", \"fa-renren\": \"\uF18B\", \"fa-reorder\": \"\uF0C9\", \"fa-repeat\": \"\uF01E\", \"fa-reply\": \"\uF112\", \"fa-reply-all\": \"\uF122\", \"fa-resistance\": \"\uF1D0\", \"fa-retweet\": \"\uF079\", \"fa-rmb\": \"\uF157\", \"fa-road\": \"\uF018\", \"fa-rocket\": \"\uF135\", \"fa-rotate-left\": \"\uF0E2\", \"fa-rotate-right\": \"\uF01E\", \"fa-rouble\": \"\uF158\", \"fa-rss\": \"\uF09E\", \"fa-rss-square\": \"\uF143\", \"fa-rub\": \"\uF158\", \"fa-ruble\": \"\uF158\", \"fa-rupee\": \"\uF156\", \"fa-s15\": \"\uF2CD\", \"fa-safari\": \"\uF267\", \"fa-save\": \"\uF0C7\", \"fa-scissors\": \"\uF0C4\", \"fa-scribd\": \"\uF28A\", \"fa-search\": \"\uF002\", \"fa-search-minus\": \"\uF010\", \"fa-search-plus\": \"\uF00E\", \"fa-sellsy\": \"\uF213\", \"fa-send\": \"\uF1D8\", \"fa-send-o\": \"\uF1D9\", \"fa-server\": \"\uF233\", \"fa-share\": \"\uF064\", \"fa-share-alt\": \"\uF1E0\", \"fa-share-alt-square\": \"\uF1E1\", \"fa-share-square\": \"\uF14D\", \"fa-share-square-o\": \"\uF045\", \"fa-shekel\": \"\uF20B\", \"fa-sheqel\": \"\uF20B\", \"fa-shield\": \"\uF132\", \"fa-ship\": \"\uF21A\", \"fa-shirtsinbulk\": \"\uF214\", \"fa-shopping-bag\": \"\uF290\", \"fa-shopping-basket\": \"\uF291\", \"fa-shopping-cart\": \"\uF07A\", \"fa-shower\": \"\uF2CC\", \"fa-sign-in\": \"\uF090\", \"fa-sign-language\": \"\uF2A7\", \"fa-sign-out\": \"\uF08B\", \"fa-signal\": \"\uF012\", \"fa-signing\": \"\uF2A7\", \"fa-simplybuilt\": \"\uF215\", \"fa-sitemap\": \"\uF0E8\", \"fa-skyatlas\": \"\uF216\", \"fa-skype\": \"\uF17E\", \"fa-slack\": \"\uF198\", \"fa-sliders\": \"\uF1DE\", \"fa-slideshare\": \"\uF1E7\", \"fa-smile-o\": \"\uF118\", \"fa-snapchat\": \"\uF2AB\", \"fa-snapchat-ghost\": \"\uF2AC\", \"fa-snapchat-square\": \"\uF2AD\", \"fa-snowflake-o\": \"\uF2DC\", \"fa-soccer-ball-o\": \"\uF1E3\", \"fa-sort\": \"\uF0DC\", \"fa-sort-alpha-asc\": \"\uF15D\", \"fa-sort-alpha-desc\": \"\uF15E\", \"fa-sort-amount-asc\": \"\uF160\", \"fa-sort-amount-desc\": \"\uF161\", \"fa-sort-asc\": \"\uF0DE\", \"fa-sort-desc\": \"\uF0DD\", \"fa-sort-down\": \"\uF0DD\", \"fa-sort-numeric-asc\": \"\uF162\", \"fa-sort-numeric-desc\": \"\uF163\", \"fa-sort-up\": \"\uF0DE\", \"fa-soundcloud\": \"\uF1BE\", \"fa-space-shuttle\": \"\uF197\", \"fa-spinner\": \"\uF110\", \"fa-spoon\": \"\uF1B1\", \"fa-spotify\": \"\uF1BC\", \"fa-square\": \"\uF0C8\", \"fa-square-o\": \"\uF096\", \"fa-stack-exchange\": \"\uF18D\", \"fa-stack-overflow\": \"\uF16C\", \"fa-star\": \"\uF005\", \"fa-star-half\": \"\uF089\", \"fa-star-half-empty\": \"\uF123\", \"fa-star-half-full\": \"\uF123\", \"fa-star-half-o\": \"\uF123\", \"fa-star-o\": \"\uF006\", \"fa-steam\": \"\uF1B6\", \"fa-steam-square\": \"\uF1B7\", \"fa-step-backward\": \"\uF048\", \"fa-step-forward\": \"\uF051\", \"fa-stethoscope\": \"\uF0F1\", \"fa-sticky-note\": \"\uF249\", \"fa-sticky-note-o\": \"\uF24A\", \"fa-stop\": \"\uF04D\", \"fa-stop-circle\": \"\uF28D\", \"fa-stop-circle-o\": \"\uF28E\", \"fa-street-view\": \"\uF21D\", \"fa-strikethrough\": \"\uF0CC\", \"fa-stumbleupon\": \"\uF1A4\", \"fa-stumbleupon-circle\": \"\uF1A3\", \"fa-subscript\": \"\uF12C\", \"fa-subway\": \"\uF239\", \"fa-suitcase\": \"\uF0F2\", \"fa-sun-o\": \"\uF185\", \"fa-superpowers\": \"\uF2DD\", \"fa-superscript\": \"\uF12B\", \"fa-support\": \"\uF1CD\", \"fa-table\": \"\uF0CE\", \"fa-tablet\": \"\uF10A\", \"fa-tachometer\": \"\uF0E4\", \"fa-tag\": \"\uF02B\", \"fa-tags\": \"\uF02C\", \"fa-tasks\": \"\uF0AE\", \"fa-taxi\": \"\uF1BA\", \"fa-telegram\": \"\uF2C6\", \"fa-television\": \"\uF26C\", \"fa-tencent-weibo\": \"\uF1D5\", \"fa-terminal\": \"\uF120\", \"fa-text-height\": \"\uF034\", \"fa-text-width\": \"\uF035\", \"fa-th\": \"\uF00A\", \"fa-th-large\": \"\uF009\", \"fa-th-list\": \"\uF00B\", \"fa-themeisle\": \"\uF2B2\", \"fa-thermometer\": \"\uF2C7\", \"fa-thermometer-0\": \"\uF2CB\", \"fa-thermometer-1\": \"\uF2CA\", \"fa-thermometer-2\": \"\uF2C9\", \"fa-thermometer-3\": \"\uF2C8\", \"fa-thermometer-4\": \"\uF2C7\", \"fa-thermometer-empty\": \"\uF2CB\", \"fa-thermometer-full\": \"\uF2C7\", \"fa-thermometer-half\": \"\uF2C9\", \"fa-thermometer-quarter\": \"\uF2CA\", \"fa-thermometer-three-quarters\": \"\uF2C8\", \"fa-thumb-tack\": \"\uF08D\", \"fa-thumbs-down\": \"\uF165\", \"fa-thumbs-o-down\": \"\uF088\", \"fa-thumbs-o-up\": \"\uF087\", \"fa-thumbs-up\": \"\uF164\", \"fa-ticket\": \"\uF145\", \"fa-times\": \"\uF00D\", \"fa-times-circle\": \"\uF057\", \"fa-times-circle-o\": \"\uF05C\", \"fa-times-rectangle\": \"\uF2D3\", \"fa-times-rectangle-o\": \"\uF2D4\", \"fa-tint\": \"\uF043\", \"fa-toggle-down\": \"\uF150\", \"fa-toggle-left\": \"\uF191\", \"fa-toggle-off\": \"\uF204\", \"fa-toggle-on\": \"\uF205\", \"fa-toggle-right\": \"\uF152\", \"fa-toggle-up\": \"\uF151\", \"fa-trademark\": \"\uF25C\", \"fa-train\": \"\uF238\", \"fa-transgender\": \"\uF224\", \"fa-transgender-alt\": \"\uF225\", \"fa-trash\": \"\uF1F8\", \"fa-trash-o\": \"\uF014\", \"fa-tree\": \"\uF1BB\", \"fa-trello\": \"\uF181\", \"fa-tripadvisor\": \"\uF262\", \"fa-trophy\": \"\uF091\", \"fa-truck\": \"\uF0D1\", \"fa-try\": \"\uF195\", \"fa-tty\": \"\uF1E4\", \"fa-tumblr\": \"\uF173\", \"fa-tumblr-square\": \"\uF174\", \"fa-turkish-lira\": \"\uF195\", \"fa-tv\": \"\uF26C\", \"fa-twitch\": \"\uF1E8\", \"fa-twitter\": \"\uF099\", \"fa-twitter-square\": \"\uF081\", \"fa-umbrella\": \"\uF0E9\", \"fa-underline\": \"\uF0CD\", \"fa-undo\": \"\uF0E2\", \"fa-universal-access\": \"\uF29A\", \"fa-university\": \"\uF19C\", \"fa-unlink\": \"\uF127\", \"fa-unlock\": \"\uF09C\", \"fa-unlock-alt\": \"\uF13E\", \"fa-unsorted\": \"\uF0DC\", \"fa-upload\": \"\uF093\", \"fa-usb\": \"\uF287\", \"fa-usd\": \"\uF155\", \"fa-user\": \"\uF007\", \"fa-user-circle\": \"\uF2BD\", \"fa-user-circle-o\": \"\uF2BE\", \"fa-user-md\": \"\uF0F0\", \"fa-user-o\": \"\uF2C0\", \"fa-user-plus\": \"\uF234\", \"fa-user-secret\": \"\uF21B\", \"fa-user-times\": \"\uF235\", \"fa-users\": \"\uF0C0\", \"fa-vcard\": \"\uF2BB\", \"fa-vcard-o\": \"\uF2BC\", \"fa-venus\": \"\uF221\", \"fa-venus-double\": \"\uF226\", \"fa-venus-mars\": \"\uF228\", \"fa-viacoin\": \"\uF237\", \"fa-viadeo\": \"\uF2A9\", \"fa-viadeo-square\": \"\uF2AA\", \"fa-video-camera\": \"\uF03D\", \"fa-vimeo\": \"\uF27D\", \"fa-vimeo-square\": \"\uF194\", \"fa-vine\": \"\uF1CA\", \"fa-vk\": \"\uF189\", \"fa-volume-control-phone\": \"\uF2A0\", \"fa-volume-down\": \"\uF027\", \"fa-volume-off\": \"\uF026\", \"fa-volume-up\": \"\uF028\", \"fa-warning\": \"\uF071\", \"fa-wechat\": \"\uF1D7\", \"fa-weibo\": \"\uF18A\", \"fa-weixin\": \"\uF1D7\", \"fa-whatsapp\": \"\uF232\", \"fa-wheelchair\": \"\uF193\", \"fa-wheelchair-alt\": \"\uF29B\", \"fa-wifi\": \"\uF1EB\", \"fa-wikipedia-w\": \"\uF266\", \"fa-window-close\": \"\uF2D3\", \"fa-window-close-o\": \"\uF2D4\", \"fa-window-maximize\": \"\uF2D0\", \"fa-window-minimize\": \"\uF2D1\", \"fa-window-restore\": \"\uF2D2\", \"fa-windows\": \"\uF17A\", \"fa-won\": \"\uF159\", \"fa-wordpress\": \"\uF19A\", \"fa-wpbeginner\": \"\uF297\", \"fa-wpexplorer\": \"\uF2DE\", \"fa-wpforms\": \"\uF298\", \"fa-wrench\": \"\uF0AD\", \"fa-xing\": \"\uF168\", \"fa-xing-square\": \"\uF169\", \"fa-y-combinator\": \"\uF23B\", \"fa-y-combinator-square\": \"\uF1D4\", \"fa-yahoo\": \"\uF19E\", \"fa-yc\": \"\uF23B\", \"fa-yc-square\": \"\uF1D4\", \"fa-yelp\": \"\uF1E9\", \"fa-yen\": \"\uF157\", \"fa-yoast\": \"\uF2B1\", \"fa-youtube\": \"\uF167\", \"fa-youtube-play\": \"\uF16A\", \"fa-youtube-square\": \"\uF166\" };\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 { 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 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(_): Widget;\n scale(_?): number | Widget {\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", "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", "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 { 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\", \"\uF024\", \"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\n // anchor: { (): string; (_: string): List; };\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\u2019t 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", "\uFEFFimport { 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 .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 \u201C__brush\u201D 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", "import { Palette } from \"@hpcc-js/common\";\n\nexport function I1DChart() {\n}\nI1DChart.prototype._dataFamily = \"1D\";\nI1DChart.prototype._palette = Palette.rainbow(\"default\");\n\n// Events ---\nI1DChart.prototype.click = function (row, column, selected) {\n};\n\nI1DChart.prototype.dblclick = function (row, column, selected) {\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", "import { Palette } from \"@hpcc-js/common\";\nimport { hsl as d3Hsl } from \"d3-color\";\n\nexport function I2DChart() {\n}\nI2DChart.prototype._dataFamily = \"2D\";\nI2DChart.prototype._palette = Palette.ordinal(\"default\");\n\nI2DChart.prototype.fillColor = function (row: any[], column, value, origRow): string {\n return this._palette(row[0]);\n};\n\nI2DChart.prototype.strokeColor = function (row: any[], column, value, origRow): string {\n return d3Hsl(this.fillColor(row, column, value, origRow)).darker().toString();\n};\n\nI2DChart.prototype.textColor = function (row: any[], column, value, origRow): string {\n return Palette.textColor(this.fillColor(row, column, value, origRow));\n};\n\n// Events ---\nI2DChart.prototype.click = function (row: object, column, selected) {\n};\n\nI2DChart.prototype.dblclick = function (row: object, column, selected) {\n};\n", "import { Palette } from \"@hpcc-js/common\";\nimport { hsl as d3Hsl } from \"d3-color\";\n\nexport function I2DAggrChart() {\n}\nI2DAggrChart.prototype._palette = Palette.rainbow(\"default\");\n\nI2DAggrChart.prototype.fillColor = function (row: any[][], column, value): string {\n return this._palette(row.length);\n};\n\nI2DAggrChart.prototype.strokeColor = function (row: any[][], column, value): string {\n return d3Hsl(this.fillColor(row, column, value)).darker().toString();\n};\n\nI2DAggrChart.prototype.textColor = function (row: any[][], column, value): string {\n return Palette.textColor(this.fillColor(row, column, value));\n};\n\n// Events ---\nI2DAggrChart.prototype.click = function (row: object[], column, selected) {\n};\n\nI2DAggrChart.prototype.dblclick = function (row: object[], column, selected) {\n};\n", "export function IGraph() {\n}\nIGraph.prototype._dataFamily = \"graph\";\n\n// Events ---\nIGraph.prototype.vertex_click = function (_row, _col, _sel, more) {\n if (more && more.vertex) {\n }\n};\n\nIGraph.prototype.vertex_dblclick = function (_row, _col, _sel, more) {\n if (more && more.vertex) {\n }\n};\n\nIGraph.prototype.edge_click = function (_row, _col, _sel, more) {\n if (more && more.edge) {\n }\n};\n\nIGraph.prototype.edge_dblclick = function (_row, _col, _sel, more) {\n if (more && more.edge) {\n }\n};\n", "export interface IHighlight {\n highlightColumn(column: string): this;\n}\n\nexport function instanceOfIHighlight(w: any): w is IHighlight {\n return typeof (w as any).highlightColumn === \"function\";\n}\n", "import { Widget } from \"@hpcc-js/common\";\n\n// Use old school class declaration as this is a mixin ---\nexport function IInput() {\n}\nIInput.prototype = Object.create(Widget.prototype);\nIInput.prototype.constructor = IInput;\n\n// abstract target(): any;\n// abstract target(_: any): this;\n\n// Implementation ---\nIInput.prototype.isValid = function () {\n if (this.validate()) {\n const re = new RegExp(this.validate());\n if (!re.test(this.value())) {\n return false;\n }\n }\n return true;\n};\n\nIInput.prototype.hasValue = function () {\n if (typeof (this as any).type === \"function\") {\n switch ((this as any).type()) {\n case \"radio\":\n /* falls through */\n case \"checkbox\":\n if (this.value() && this.value() !== \"false\") {\n return true;\n }\n break;\n default:\n if (this.value()) {\n return true;\n }\n break;\n }\n return false;\n }\n return this.value() !== \"\";\n};\n\n// Events ---\nIInput.prototype.blur = function (_w) {\n};\nIInput.prototype.keyup = function (_w) {\n};\nIInput.prototype.focus = function (_w) {\n};\nIInput.prototype.click = function (_w) {\n};\nIInput.prototype.dblclick = function (_w) {\n};\nIInput.prototype.change = function (_w, complete: boolean) {\n};\n\nIInput.prototype.resetValue = function (w) {\n w.value(w._inputElement[0].node().value);\n};\n\nIInput.prototype.disable = function (disable) {\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"disabled\", disable ? \"disabled\" : null);\n });\n};\n\nIInput.prototype.setFocus = function () {\n if (this._inputElement.length) {\n this._inputElement[0].node().focus();\n }\n};\n\nexport interface IInput {\n name: { (): string; (_: string): IInput };\n name_exists: () => boolean;\n label: { (): string; (_: string): IInput };\n label_exists: () => boolean;\n value: { (): any; (_: any): IInput };\n value_exists: () => boolean;\n validate: { (): string; (_: string): IInput };\n validate_exists: () => boolean;\n}\nIInput.prototype.publish(\"name\", \"\", \"string\", \"HTML name for the input\");\nIInput.prototype.publish(\"label\", \"\", \"string\", \"Descriptive label\");\nIInput.prototype.publish(\"value\", \"\", \"string\", \"Input Current Value\");\nIInput.prototype.publish(\"validate\", null, \"string\", \"Input Validation\");\n", "import { Palette } from \"@hpcc-js/common\";\nimport { hsl as d3Hsl } from \"d3-color\";\n\nexport function INDChart() {\n}\nINDChart.prototype._dataFamily = \"ND\";\nINDChart.prototype._palette = Palette.ordinal(\"default\");\n\nINDChart.prototype.fillColor = function (row: any[], column: string, value: number, origRow: any): string {\n return this._palette(column);\n};\n\nINDChart.prototype.strokeColor = function (row: any[], column: string, value: number, origRow: any): string {\n return d3Hsl(this.fillColor(row, column, value, origRow)).darker().toString();\n};\n\nINDChart.prototype.textColor = function (row: any[], column: string, value: number, origRow: any): string {\n return Palette.textColor(this.fillColor(row, column, value, origRow));\n};\n\n// Events ---\nINDChart.prototype.click = function (row, column, selected) {\n};\n\nINDChart.prototype.dblclick = function (row, column, selected) {\n};\n", "export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, \u00B1Infinity\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\",\"\u00B5\",\"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 \u201Cvalue\u201D part that can be\n // grouped, and fractional or exponential \u201Csuffix\u201D 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", "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 {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\u2019s 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 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 \u201C__proto__\u201D.\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\u2019t 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", "// Based on https://github.com/GordonSmith/d3-tip forked from https://github.com/Caged/d3-tip\n\nimport { map } from \"d3-collection\";\nimport { select, selection } from \"d3-selection\";\n\nexport function tip() {\n let direction = d3TipDirection;\n let offset = d3TipOffset;\n let html = d3TipHTML;\n let rootElement = functor(document.body);\n let node = initNode();\n let svg = null;\n let point = null;\n let target = null;\n\n const tip: any = function (vis) {\n svg = getSVGNode(vis);\n if (!svg) return;\n point = svg.createSVGPoint();\n const re = rootElement();\n if (!re) return;\n if (!node) return;\n re.appendChild(node);\n };\n\n // Public - show the tooltip on the screen\n //\n // Returns a tip\n tip.show = function (d, idx, arr) {\n target = arr[idx];\n const args = Array.prototype.slice.call(arguments) as [];\n const content = html.apply(this, args);\n if (content === null) {\n return tip;\n }\n const poffset = offset.apply(this, args);\n const nodel = getNodeEl();\n let i = directions.length;\n let coords;\n const root_bbox = rootElement().getBoundingClientRect();\n nodel.html(content)\n .style(\"opacity\", 1).style(\"pointer-events\", \"all\");\n\n while (i--) nodel.classed(directions[i], false);\n let placement_success = false;\n const placement_overflow = {};\n let least_overflow_direction = directions[0];\n for (let i = 0; i < directions.length; i++) {\n placement_success = _placement_attempt(directions[i]);\n if (placement_success) break;\n }\n if (!placement_success) {\n nodel.classed(\"notick\", true);\n const top_offset = _vertical_adjustment(placement_overflow[least_overflow_direction]);\n const left_offset = _horizontal_adjustment(placement_overflow[least_overflow_direction]);\n _placement_attempt(least_overflow_direction, top_offset, left_offset);\n } else {\n nodel.classed(\"notick\", false);\n }\n return tip;\n\n function _horizontal_adjustment(overflow_obj) {\n if (overflow_obj.left > overflow_obj.right) {\n return overflow_obj.left > 0 ? -overflow_obj.left : 0;\n } else {\n return overflow_obj.right > 0 ? overflow_obj.right : 0;\n }\n }\n function _vertical_adjustment(overflow_obj) {\n if (overflow_obj.top > overflow_obj.bottom) {\n return overflow_obj.top > 0 ? -overflow_obj.top : 0;\n } else {\n return overflow_obj.bottom;\n }\n }\n\n function _placement_attempt(this: any, _dir, _top_offset?, _left_offset?) {\n _top_offset = _top_offset ? _top_offset : 0;\n _left_offset = _left_offset ? _left_offset : 0;\n nodel.style(\"white-space\", \"nowrap\");\n coords = directionCallbacks.get(_dir).apply(this);\n nodel.classed(_dir, true)\n .style(\"top\", (coords.top + poffset[0] - _top_offset) + \"px\")\n .style(\"left\", (coords.left + poffset[1] - _left_offset) + \"px\");\n const nodel_bbox = nodel.node().getBoundingClientRect();\n const ret = nodel_bbox.top > root_bbox.top\n && nodel_bbox.left > root_bbox.left\n && nodel_bbox.bottom < root_bbox.bottom\n && nodel_bbox.right < root_bbox.right\n ;\n placement_overflow[_dir] = {\n top: root_bbox.top - nodel_bbox.top,\n right: nodel_bbox.right - root_bbox.right,\n bottom: nodel_bbox.bottom - root_bbox.bottom,\n left: root_bbox.left - nodel_bbox.left\n };\n nodel.style(\"white-space\", \"normal\");\n placement_overflow[_dir].total_overflow = Object.keys(placement_overflow[_dir])\n .filter(side => placement_overflow[_dir][side] > 0)\n .reduce((sum, side) => {\n const side_overflow = placement_overflow[_dir][side];\n return sum + side_overflow;\n }, 0);\n if (placement_overflow[least_overflow_direction].total_overflow > placement_overflow[_dir].total_overflow) {\n least_overflow_direction = _dir;\n }\n if (!ret) {\n nodel.classed(_dir, false);\n }\n return ret;\n }\n };\n\n // Public - hide the tooltip\n //\n // Returns a tip\n tip.hide = function () {\n const nodel = getNodeEl();\n nodel.style(\"opacity\", 0).style(\"pointer-events\", \"none\");\n return tip;\n };\n\n // Public: Proxy attr calls to the d3 tip container.\n // Sets or gets attribute value.\n //\n // n - name of the attribute\n // v - value of the attribute\n //\n // Returns tip or attribute value\n // eslint-disable-next-line no-unused-vars\n tip.attr = function (n, v) {\n if (arguments.length < 2 && typeof n === \"string\") {\n return getNodeEl().attr(n);\n }\n\n const args = Array.prototype.slice.call(arguments);\n selection.prototype.attr.apply(getNodeEl(), args);\n return tip;\n };\n\n // Public: Proxy style calls to the d3 tip container.\n // Sets or gets a style value.\n //\n // n - name of the property\n // v - value of the property\n //\n // Returns tip or style property value\n // eslint-disable-next-line no-unused-vars\n tip.style = function (n, v) {\n if (arguments.length < 2 && typeof n === \"string\") {\n return getNodeEl().style(n);\n }\n\n const args = Array.prototype.slice.call(arguments);\n selection.prototype.style.apply(getNodeEl(), args);\n return tip;\n };\n\n // Public: Set or get the direction of the tooltip\n //\n // v - One of n(north), s(south), e(east), or w(west), nw(northwest),\n // sw(southwest), ne(northeast) or se(southeast)\n //\n // Returns tip or direction\n tip.direction = function (v) {\n if (!arguments.length) return direction;\n direction = v == null ? v : functor(v);\n\n return tip;\n };\n\n // Public: Sets or gets the offset of the tip\n //\n // v - Array of [x, y] offset\n //\n // Returns offset or\n tip.offset = function (v) {\n if (!arguments.length) return offset;\n offset = v == null ? v : functor(v);\n\n return tip;\n };\n\n // Public: sets or gets the html value of the tooltip\n //\n // v - String value of the tip\n //\n // Returns html value or tip\n tip.html = function (v) {\n if (!arguments.length) return html;\n html = v == null ? v : functor(v);\n\n return tip;\n };\n\n // Public: sets or gets the root element anchor of the tooltip\n //\n // v - root element of the tooltip\n //\n // Returns root node of tip\n tip.rootElement = function (v) {\n if (!arguments.length) return rootElement;\n rootElement = functor(v);\n\n return tip;\n };\n\n // Public: destroys the tooltip and removes it from the DOM\n //\n // Returns a tip\n tip.destroy = function () {\n if (node) {\n getNodeEl().remove();\n node = null;\n }\n return tip;\n };\n\n function d3TipDirection() { return \"n\"; }\n function d3TipOffset() { return [0, 0]; }\n function d3TipHTML() { return \" \"; }\n\n const directionCallbacks = map({\n n: directionNorth,\n s: directionSouth,\n e: directionEast,\n w: directionWest,\n nw: directionNorthWest,\n ne: directionNorthEast,\n sw: directionSouthWest,\n se: directionSouthEast\n });\n const directions = directionCallbacks.keys();\n\n function directionNorth() {\n const bbox = getScreenBBox(window);\n return {\n top: bbox.n.y - node.offsetHeight,\n left: bbox.n.x - node.offsetWidth / 2\n };\n }\n\n function directionSouth() {\n const bbox = getScreenBBox(window);\n return {\n top: bbox.s.y + 8,\n left: bbox.s.x - node.offsetWidth / 2\n };\n }\n\n function directionEast() {\n const bbox = getScreenBBox(window);\n return {\n top: bbox.e.y - node.offsetHeight / 2,\n left: bbox.e.x + 8\n };\n }\n\n function directionWest() {\n const bbox = getScreenBBox(window);\n return {\n top: bbox.w.y - node.offsetHeight / 2,\n left: bbox.w.x - node.offsetWidth - 8\n };\n }\n\n function directionNorthWest() {\n const bbox = getScreenBBox(window);\n return {\n top: bbox.nw.y - node.offsetHeight,\n left: bbox.nw.x - node.offsetWidth\n };\n }\n\n function directionNorthEast() {\n const bbox = getScreenBBox(window);\n return {\n top: bbox.ne.y - node.offsetHeight,\n left: bbox.ne.x\n };\n }\n\n function directionSouthWest() {\n const bbox = getScreenBBox(window);\n return {\n top: bbox.sw.y,\n left: bbox.sw.x - node.offsetWidth\n };\n }\n\n function directionSouthEast() {\n const bbox = getScreenBBox(window);\n return {\n top: bbox.se.y,\n left: bbox.se.x\n };\n }\n\n function initNode() {\n const div = select(document.createElement(\"div\"));\n div\n .attr(\"class\", \"d3-tip\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"opacity\", 0)\n .style(\"pointer-events\", \"none\")\n .style(\"box-sizing\", \"border-box\");\n\n return div.node();\n }\n\n function getSVGNode(element) {\n const svgNode = element.node();\n if (!svgNode) return null;\n if (svgNode.tagName.toLowerCase() === \"svg\") return svgNode;\n return svgNode.ownerSVGElement;\n }\n\n function getNodeEl() {\n if (node == null) {\n node = initNode();\n // re-add node to DOM\n rootElement().appendChild(node);\n }\n return select(node);\n }\n\n // Private - gets the screen coordinates of a shape\n //\n // Given a shape on the screen, will return an SVGPoint for the directions\n // n(north), s(south), e(east), w(west), ne(northeast), se(southeast),\n // nw(northwest), sw(southwest).\n //\n // +-+-+\n // | |\n // + +\n // | |\n // +-+-+\n //\n // Returns an Object {n, s, e, w, nw, sw, ne, se}\n function getScreenBBox(targetShape) {\n let targetel = target || targetShape;\n\n while (targetel.getCTM == null && targetel.parentNode != null) {\n targetel = targetel.parentNode;\n }\n\n const bbox: any = {};\n const matrix = targetel.getCTM();\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\n point.x = x;\n point.y = y;\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 bbox;\n }\n\n // Private - replace D3JS 3.X d3.functor() function\n function functor(v) {\n return typeof v === \"function\" ? v : function () {\n return v;\n };\n }\n\n return tip;\n}\n", "import { Widget } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { tip } from \"./Tooltip.ts\";\n\nimport \"../src/ITooltip.css\";\n\ndeclare const event: object;\n\n// Use old school class declaration as this is a mixin ---\nexport function ITooltip(this: any) {\n this.tooltip = tip();\n\n if (this.tooltipLabelFormat_exists()) {\n this._labelFormatter = d3Format(this.tooltipLabelFormat() as string);\n }\n\n if (this.tooltipValueFormat_exists()) {\n this._valueFormatter = d3Format(this.tooltipValueFormat() as string);\n }\n\n if (this.layerEnter) {\n const layerEnter = this.layerEnter;\n this.layerEnter = function (_base, svgElement, _domElement) {\n if (!this._parentOverlay) {\n this._parentOverlay = _base._parentOverlay;\n }\n this.tooltipEnter(svgElement);\n layerEnter.apply(this, arguments);\n };\n const layerUpdate = this.layerUpdate;\n this.layerUpdate = function (_base) {\n layerUpdate.apply(this, arguments);\n this.tooltipUpdate();\n };\n const layerExit = this.layerExit;\n this.layerExit = function (_base) {\n this.tooltipExit();\n layerExit.apply(this, arguments);\n };\n } else {\n const enter = this.enter;\n this.enter = function (_domNode, element) {\n this.tooltipEnter(element);\n enter.apply(this, arguments);\n };\n const update = this.update;\n this.update = function (_domNode, _element) {\n update.apply(this, arguments);\n this.tooltipUpdate();\n };\n const exit = this.exit;\n this.exit = function (_domNode, _element) {\n this.tooltipExit();\n exit.apply(this, arguments);\n };\n }\n}\nITooltip.prototype = Object.create(Widget.prototype);\nITooltip.prototype.constructor = ITooltip;\n\n// abstract target(): any;\n// abstract target(_: any): this;\n\nITooltip.prototype.tooltipEnter = function (element) {\n const overlayElement = this.parentOverlay();\n if (!overlayElement.empty()) {\n this.tooltip.rootElement(overlayElement.node().parentNode);\n }\n element.call(this.tooltip);\n};\n\nITooltip.prototype.tooltipUpdate = function () {\n this.tooltip.offset(() => {\n if (event && this.tooltipFollowMouse()) {\n const d3tipElement: HTMLDivElement = document.querySelector(\".d3-tip\"); // d3Tip offers no reference to the '.d3-tip' element...?\n d3tipElement.style.display = \"block\";\n d3tipElement.style.left = this.tooltipOffset() + ((event as any).clientX) + \"px\";\n d3tipElement.style.top = (event as any).clientY + \"px\";\n return [];\n }\n switch (this.tooltip.direction()()) {\n case \"e\":\n return [0, this.tooltipOffset()];\n default:\n return [-this.tooltipOffset(), 0];\n }\n });\n\n let classed = this.tooltip.attr(\"class\");\n if (classed) {\n classed = classed.split(\" notick\").join(\"\") + (this.tooltipTick() ? \"\" : \" notick\") + (this.tooltipStyle() === \"none\" ? \" hidden\" : \"\");\n classed = classed.split(\" \")\n .filter(function (_class) {\n return _class.indexOf(\"ITooltip-tooltipStyle-\") !== 0;\n })\n .join(\" \")\n ;\n classed += \" ITooltip-tooltipStyle-\" + this.tooltipStyle();\n this.tooltip\n .attr(\"class\", classed)\n ;\n }\n};\n\nITooltip.prototype.tooltipExit = function () {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n};\n\nITooltip.prototype._tooltipHTML = function (d) {\n return d;\n};\n\nITooltip.prototype.tooltipHTML = function (_) {\n return this.tooltip.html(_);\n};\n\nITooltip.prototype.tooltipFormat = function (opts: { label?: string | number, series?: string | number, value?: Date | string | number, arr?: Array<{ color: string, label: string, value: string }> } = {}) {\n opts.label = opts.label === undefined ? \"\" : opts.label;\n if (this._labelFormatter) {\n opts.label = this._labelFormatter(opts.label) || \"\";\n } else if (this.formatData && this.parseData) {\n opts.label = this.formatData(this.parseData(opts.label));\n }\n opts.series = opts.series || \"\";\n if (opts.value instanceof Date) {\n opts.value = opts.value || \"\";\n } else if (this._valueFormatter) {\n opts.value = this._valueFormatter(opts.value) || \"\";\n } else if (this.formatValue && this.parseValue) {\n opts.value = this.formatValue(this.parseValue(opts.value));\n }\n switch (this.tooltipStyle()) {\n case \"none\":\n break;\n case \"series-table\":\n let html = '<table class=\"ITooltip-series-table\">'\n + \"<thead>\"\n + '<tr><th colspan=\"2\">' + opts.label + \"</th></tr>\"\n + \"</thead>\"\n + \"<tbody>\";\n opts.arr.forEach(function (row) {\n html += \"<tr>\";\n html += \"<td>\";\n html += '<div class=\"series-table-row-color\" style=\"background-color:' + row.color + '\"></div>';\n html += '<div class=\"series-table-row-label\">' + row.label + \"</div>\";\n html += \"</td>\";\n html += '<td><div class=\"series-table-row-value\">' + row.value + \"</div></td>\";\n html += \"</tr>\";\n });\n html += \"</tbody>\";\n html += \"</table>\";\n return html;\n default:\n if (opts.series) {\n return \"<span style='color:\" + this.tooltipSeriesColor() + \"'>\" + opts.series + \"</span> / <span style='color:\" + this.tooltipLabelColor() + \"'>\" + opts.label + \"</span>: <span style='color:\" + this.tooltipValueColor() + \"'>\" + opts.value + \"</span>\";\n }\n if (opts.label !== \"\") {\n return \"<span style='color:\" + this.tooltipLabelColor() + \"'>\" + opts.label + \"</span>: <span style='color:\" + this.tooltipValueColor() + \"'>\" + opts.value + \"</span>\";\n }\n return \"<span style='color:\" + this.tooltipValueColor() + \"'>\" + opts.value + \"</span>\";\n }\n};\n\nITooltip.prototype.tooltipKeyValueFormat = function (titleKey: string, obj: object): string {\n let body = \"\";\n for (const key in obj) {\n if (key !== titleKey) {\n const value = obj && obj[key] ? obj[key] : \"\";\n body += `<tr><td style=\"${this.tooltipLabelColor_exists() ? \"color:\" + this.tooltipLabelColor() : \"\"}\">${key}</td><td style=\"font-weight:normal\">${value}</td></tr>`;\n }\n }\n return `<table>\n <thead>\n <tr><th colspan=\"2\" style=\"font-weight:bold;font-size:16px\">${obj[titleKey]}</th></tr>\n </thead>\n <tbody>\n ${body}\n </tbody>\n </table>`;\n};\n\nexport interface ITooltip {\n tooltipStyle: { (): \"default\" | \"none\" | \"series-table\"; (_: \"default\" | \"none\" | \"series-table\"): ITooltip; };\n tooltipFollowMouse: { (): boolean; (_: boolean): ITooltip; };\n tooltipLabelFormat: (_?) => string | ITooltip;\n tooltipLabelFormat_exists: () => boolean;\n tooltipValueFormat: (_?) => string | ITooltip;\n tooltipValueFormat_exists: () => boolean;\n tooltipSeriesColor: { (): string; (_: string): ITooltip; };\n tooltipLabelColor: { (): string; (_: string): ITooltip; };\n tooltipLabelColor_exists: () => boolean;\n tooltipValueColor: { (): string; (_: string): ITooltip; };\n tooltipTick: { (): boolean; (_: boolean): ITooltip; };\n tooltipOffset: { (): number; (_: number): ITooltip; };\n tooltipOffset_default: { (): number; (_: number): ITooltip; };\n}\nITooltip.prototype.publish(\"tooltipStyle\", \"default\", \"set\", \"Style mode\", [\"default\", \"none\", \"series-table\"], {});\nITooltip.prototype.publish(\"tooltipFollowMouse\", false, \"boolean\", \"If true, the tooltip will follow mouse movement\", null, {});\nITooltip.prototype.publish(\"tooltipLabelFormat\", undefined, \"string\", \"Format of tooltip label(s) (the domain axis)\", null, {});\nITooltip.prototype.publish(\"tooltipValueFormat\", undefined, \"string\", \"Number format of tooltip value(s)\", null, {});\nITooltip.prototype.publish(\"tooltipSeriesColor\", \"#EAFFFF\", \"html-color\", \"Color of tooltip series text\", null, {});\nITooltip.prototype.publish(\"tooltipLabelColor\", \"#CCFFFF\", \"html-color\", \"Color of tooltip label text (the domain axis)\", null, {});\nITooltip.prototype.publish(\"tooltipValueColor\", \"white\", \"html-color\", \"Color of tooltip value(s)\", null, {});\nITooltip.prototype.publish(\"tooltipTick\", true, \"boolean\", \"Show tooltip tick\", null, {});\nITooltip.prototype.publish(\"tooltipOffset\", 8, \"number\", \"Offset from the cursor\", null, {});\n\nconst tooltipLabelFormat = ITooltip.prototype.tooltipLabelFormat;\nITooltip.prototype.tooltipLabelFormat = function (_?): string | ITooltip {\n const retVal = tooltipLabelFormat.apply(this, arguments);\n if (arguments.length) {\n this._labelFormatter = d3Format(_);\n }\n return retVal;\n};\n\nconst tooltipValueFormat = ITooltip.prototype.tooltipValueFormat;\nITooltip.prototype.tooltipValueFormat = function (_?): string | ITooltip {\n const retVal = tooltipValueFormat.apply(this, arguments);\n if (arguments.length) {\n this._valueFormatter = d3Format(_);\n }\n return retVal;\n};\n", "import { Palette } from \"@hpcc-js/common\";\n\n// Use old school class declaration as this is a mixin ---\nexport function ITree() {\n}\nITree.prototype.constructor = ITree;\n\n// Events ---\nITree.prototype.click = function (row, column, selected) {\n};\n\nITree.prototype.dblclick = function (row, column, selected) {\n};\n\nITree.prototype._palette = Palette.ordinal(\"default\");\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["PKG_NAME", "PKG_VERSION", "BUILD_VERSION", "xhtml", "namespaces_default", "namespace_default", "name", "prefix", "i", "__name", "creatorInherit", "document", "uri", "creatorFixed", "fullname", "creator_default", "none", "selector_default", "selector", "select_default", "select", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "subnode", "Selection", "empty", "selectorAll_default", "selectAll_default", "parents", "matcher_default", "filter_default", "match", "sparse_default", "update", "enter_default", "EnterNode", "parent", "datum", "child", "next", "constant_default", "x", "keyPrefix", "bindIndex", "enter", "exit", "data", "groupLength", "dataLength", "bindKey", "key", "nodeByKeyValue", "keyValues", "keyValue", "data_default", "value", "d", "bind", "enterGroup", "updateGroup", "exitGroup", "i0", "i1", "previous", "exit_default", "join_default", "onenter", "onupdate", "onexit", "merge_default", "selection", "groups0", "groups1", "m0", "m1", "merges", "group0", "group1", "merge", "order_default", "sort_default", "compare", "ascending", "compareNode", "a", "b", "sortgroups", "sortgroup", "call_default", "callback", "nodes_default", "nodes", "node_default", "size_default", "size", "empty_default", "each_default", "attrRemove", "attrRemoveNS", "attrConstant", "attrConstantNS", "attrFunction", "v", "attrFunctionNS", "attr_default", "window_default", "styleRemove", "styleConstant", "priority", "styleFunction", "style_default", "styleValue", "propertyRemove", "propertyConstant", "propertyFunction", "property_default", "classArray", "string", "classList", "ClassList", "classedAdd", "names", "list", "classedRemove", "classedTrue", "classedFalse", "classedFunction", "classed_default", "textRemove", "textConstant", "textFunction", "text_default", "htmlRemove", "htmlConstant", "htmlFunction", "html_default", "raise", "raise_default", "lower", "lower_default", "append_default", "create", "constantNull", "insert_default", "before", "remove", "remove_default", "selection_cloneShallow", "clone", "selection_cloneDeep", "clone_default", "deep", "datum_default", "filterEvents", "event", "element", "filterContextListener", "listener", "index", "contextListener", "related", "event1", "event0", "parseTypenames", "typenames", "t", "onRemove", "typename", "on", "o", "onAdd", "capture", "wrap", "on_default", "customEvent", "that", "args", "dispatchEvent", "type", "params", "window", "dispatchConstant", "dispatchFunction", "dispatch_default", "root", "selection_default", "create_default", "nextId", "local", "Local", "id", "sourceEvent_default", "current", "source", "point_default", "svg", "point", "rect", "mouse_default", "touch_default", "touches", "identifier", "touch", "touches_default", "points", "noop", "dispatch", "_", "Dispatch", "types", "T", "get", "set", "copy", "c", "frame", "timeout", "interval", "pokeDelay", "taskHead", "taskTail", "clockLast", "clockNow", "clockSkew", "clock", "setFrame", "f", "now", "clearNow", "Timer", "timer", "delay", "time", "sleep", "timerFlush", "e", "wake", "nap", "poke", "t0", "t1", "t2", "timeout_default", "elapsed", "emptyOn", "emptyTween", "CREATED", "SCHEDULED", "STARTING", "STARTED", "RUNNING", "ENDING", "ENDED", "schedule_default", "timing", "schedules", "init", "schedule", "self", "tween", "start", "stop", "tick", "interrupt_default", "active", "define_default", "constructor", "factory", "prototype", "extend", "definition", "Color", "darker", "brighter", "reI", "reN", "reP", "reHex", "reRgbInteger", "reRgbPercent", "reRgbaInteger", "reRgbaPercent", "reHslPercent", "reHslaPercent", "named", "color", "channels", "color_formatHex", "color_formatHex8", "color_formatHsl", "color_formatRgb", "hslConvert", "format", "l", "rgbn", "Rgb", "rgba", "hsla", "r", "g", "rgbConvert", "rgb", "opacity", "k", "clampi", "clampa", "rgb_formatHex", "rgb_formatHex8", "rgb_formatRgb", "hex", "h", "s", "Hsl", "min", "max", "hsl", "m2", "hsl2rgb", "clamph", "clampt", "radians", "degrees", "K", "Xn", "Yn", "Zn", "t3", "labConvert", "Lab", "Hcl", "hcl2lab", "rgb2lrgb", "y", "xyz2lab", "z", "gray", "lab", "lab2xyz", "lrgb2rgb", "hclConvert", "lch", "hcl", "A", "B", "C", "D", "E", "ED", "EB", "BC_DA", "cubehelixConvert", "Cubehelix", "bl", "cubehelix", "cosh", "sinh", "basis", "v0", "v1", "v2", "v3", "basis_default", "values", "basisClosed_default", "linear", "exponential", "hue", "gamma", "nogamma", "rgb_default", "rgbGamma", "end", "rgbSpline", "spline", "colors", "rgbBasis", "rgbBasisClosed", "numberArray_default", "isNumberArray", "array_default", "genericArray", "nb", "na", "value_default", "date_default", "number_default", "object_default", "reA", "reB", "zero", "one", "string_default", "bi", "am", "bm", "bs", "q", "discrete_default", "range", "hue_default", "round_default", "identity", "decompose_default", "scaleX", "scaleY", "skewX", "cssNode", "cssRoot", "cssView", "svgNode", "parseCss", "parseSvg", "interpolateTransform", "parse", "pxComma", "pxParen", "degParen", "pop", "translate", "xa", "ya", "xb", "yb", "rotate", "scale", "interpolateTransformCss", "interpolateTransformSvg", "rho", "rho2", "rho4", "epsilon2", "tanh", "zoom_default", "p0", "p1", "ux0", "uy0", "w0", "ux1", "uy1", "w1", "dx", "dy", "d2", "S", "d1", "b0", "b1", "r0", "r1", "coshr0", "u", "hsl_default", "hslLong", "hcl_default", "hclLong", "cubehelixGamma", "cubehelix_default", "cubehelixLong", "piecewise", "interpolate", "I", "quantize_default", "interpolator", "samples", "tweenRemove", "tween0", "tween1", "tweenFunction", "tween_default", "tweenValue", "transition", "interpolate_default", "value1", "string00", "string1", "interpolate0", "string0", "string10", "attrInterpolate", "attrInterpolateNS", "attrTweenNS", "attrTween", "attrTween_default", "delayFunction", "delayConstant", "delay_default", "durationFunction", "durationConstant", "duration_default", "easeConstant", "ease_default", "Transition", "onFunction", "on0", "on1", "sit", "removeFunction", "children", "inherit", "styleNull", "styleMaybeRemove", "listener0", "styleInterpolate", "styleTween", "styleTween_default", "textInterpolate", "textTween", "textTween_default", "transition_default", "id0", "id1", "newId", "end_default", "resolve", "reject", "cancel", "selection_prototype", "quadIn", "quadOut", "quadInOut", "cubicIn", "cubicOut", "cubicInOut", "exponent", "polyIn", "custom", "polyOut", "polyInOut", "pi", "halfPi", "sinIn", "sinOut", "sinInOut", "tpmt", "expIn", "expOut", "expInOut", "circleIn", "circleOut", "circleInOut", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "bounceIn", "bounceOut", "bounceInOut", "overshoot", "backIn", "backOut", "backInOut", "tau", "amplitude", "period", "elasticIn", "p", "elasticOut", "elasticInOut", "defaultTiming", "active_default", "Database_exports", "__export", "Field", "Grid", "LegacyView", "RollupView", "ascending_default", "bisector_default", "ascendingComparator", "lo", "hi", "mid", "ascendingBisect", "bisectRight", "bisectLeft", "bisect_default", "pairs_default", "array", "pair", "pairs", "cross_default", "values0", "values1", "reduce", "n0", "n1", "value0", "descending_default", "variance_default", "valueof", "mean", "delta", "sum", "deviation_default", "extent_default", "slice", "map", "identity_default", "range_default", "step", "e10", "e5", "e2", "ticks_default", "count", "reverse", "ticks", "tickIncrement", "power", "error", "tickStep", "step0", "step1", "sturges_default", "histogram_default", "domain", "threshold", "histogram", "xz", "x0", "x1", "tz", "bins", "bin", "quantile_default", "freedmanDiaconis_default", "scott_default", "max_default", "mean_default", "median_default", "numbers", "arrays", "merged", "min_default", "permute_default", "indexes", "permutes", "scan_default", "xi", "xj", "shuffle_default", "sum_default", "transpose_default", "matrix", "length", "transpose", "row", "zip_default", "Map", "property", "keys", "entries", "object", "map_default", "nest_default", "sortKeys", "sortValues", "rollup", "nest", "apply", "depth", "createResult", "setResult", "valuesByKey", "result", "sortKey", "createObject", "setObject", "createMap", "setMap", "order", "Set", "proto", "keys_default", "map", "keys", "key", "__name", "values_default", "values", "entries_default", "entries", "EOL", "EOF", "QUOTE", "NEWLINE", "RETURN", "objectConverter", "columns", "name", "i", "customConverter", "f", "object", "row", "inferColumns", "rows", "columnSet", "column", "pad", "value", "width", "s", "length", "formatYear", "year", "formatDate", "date", "hours", "minutes", "seconds", "milliseconds", "dsv_default", "delimiter", "reFormat", "DELIMITER", "parse", "text", "convert", "parseRows", "N", "I", "n", "t", "eof", "eol", "token", "j", "c", "preformatBody", "formatValue", "format", "formatBody", "formatRows", "formatRow", "csv", "csvParse", "csvParseRows", "csvFormat", "csvFormatBody", "csvFormatRows", "csvFormatRow", "csvFormatValue", "tsv", "tsvParse", "tsvParseRows", "tsvFormat", "tsvFormatBody", "tsvFormatRows", "tsvFormatRow", "tsvFormatValue", "autoType", "number", "m", "fixtz", "formatDecimal_default", "x", "formatDecimalParts", "p", "coefficient", "exponent_default", "formatGroup_default", "grouping", "thousands", "g", "formatNumerals_default", "numerals", "re", "formatSpecifier", "specifier", "match", "FormatSpecifier", "formatTrim_default", "out", "i0", "i1", "prefixExponent", "formatPrefixAuto_default", "d", "exponent", "formatRounded_default", "formatTypes_default", "identity_default", "prefixes", "locale_default", "locale", "group", "currencyPrefix", "currencySuffix", "decimal", "percent", "minus", "nan", "newFormat", "fill", "align", "sign", "symbol", "zero", "comma", "precision", "trim", "type", "prefix", "suffix", "formatType", "maybeSuffix", "valuePrefix", "valueSuffix", "valueNegative", "padding", "formatPrefix", "e", "k", "defaultLocale", "definition", "precisionFixed_default", "step", "precisionPrefix_default", "precisionRound_default", "max", "t0", "t1", "newInterval", "floori", "offseti", "count", "field", "interval", "d0", "d1", "start", "stop", "range", "previous", "test", "end", "millisecond", "millisecond_default", "durationSecond", "durationMinute", "durationHour", "durationDay", "durationWeek", "second", "second_default", "minute", "minute_default", "hour", "hour_default", "day", "day_default", "days", "weekday", "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sundays", "mondays", "tuesdays", "wednesdays", "thursdays", "fridays", "saturdays", "month", "month_default", "months", "year_default", "years", "utcMinute", "utcMinute_default", "utcMinutes", "utcHour", "utcHour_default", "utcHours", "utcDay", "utcDay_default", "utcDays", "utcWeekday", "utcSunday", "utcMonday", "utcTuesday", "utcWednesday", "utcThursday", "utcFriday", "utcSaturday", "utcSundays", "utcMondays", "utcTuesdays", "utcWednesdays", "utcThursdays", "utcFridays", "utcSaturdays", "utcMonth", "utcMonth_default", "utcMonths", "utcYear", "utcYear_default", "utcYears", "localDate", "utcDate", "newDate", "y", "formatLocale", "locale_dateTime", "locale_date", "locale_time", "locale_periods", "locale_weekdays", "locale_shortWeekdays", "locale_months", "locale_shortMonths", "periodRe", "formatRe", "periodLookup", "formatLookup", "weekdayRe", "weekdayLookup", "shortWeekdayRe", "shortWeekdayLookup", "monthRe", "monthLookup", "shortMonthRe", "shortMonthLookup", "formats", "formatShortWeekday", "formatWeekday", "formatShortMonth", "formatMonth", "formatDayOfMonth", "formatMicroseconds", "formatYearISO", "formatFullYearISO", "formatHour24", "formatHour12", "formatDayOfYear", "formatMilliseconds", "formatMonthNumber", "formatMinutes", "formatPeriod", "formatQuarter", "formatUnixTimestamp", "formatUnixTimestampSeconds", "formatSeconds", "formatWeekdayNumberMonday", "formatWeekNumberSunday", "formatWeekNumberISO", "formatWeekdayNumberSunday", "formatWeekNumberMonday", "formatFullYear", "formatZone", "formatLiteralPercent", "utcFormats", "formatUTCShortWeekday", "formatUTCWeekday", "formatUTCShortMonth", "formatUTCMonth", "formatUTCDayOfMonth", "formatUTCMicroseconds", "formatUTCYearISO", "formatUTCFullYearISO", "formatUTCHour24", "formatUTCHour12", "formatUTCDayOfYear", "formatUTCMilliseconds", "formatUTCMonthNumber", "formatUTCMinutes", "formatUTCPeriod", "formatUTCQuarter", "formatUTCSeconds", "formatUTCWeekdayNumberMonday", "formatUTCWeekNumberSunday", "formatUTCWeekNumberISO", "formatUTCWeekdayNumberSunday", "formatUTCWeekNumberMonday", "formatUTCYear", "formatUTCFullYear", "formatUTCZone", "parses", "parseShortWeekday", "parseWeekday", "parseShortMonth", "parseMonth", "parseLocaleDateTime", "parseDayOfMonth", "parseMicroseconds", "parseYear", "parseFullYear", "parseHour24", "parseDayOfYear", "parseMilliseconds", "parseMonthNumber", "parseMinutes", "parsePeriod", "parseQuarter", "parseUnixTimestamp", "parseUnixTimestampSeconds", "parseSeconds", "parseWeekdayNumberMonday", "parseWeekNumberSunday", "parseWeekNumberISO", "parseWeekdayNumberSunday", "parseWeekNumberMonday", "parseLocaleDate", "parseLocaleTime", "parseZone", "parseLiteralPercent", "string", "pads", "newParse", "Z", "parseSpecifier", "week", "numberRe", "percentRe", "requoteRe", "requote", "names", "dISO", "z", "dow", "UTCdISO", "timeFormat", "timeParse", "utcFormat", "utcParse", "isoSpecifier", "formatIsoNative", "formatIso", "parseIsoNative", "string", "date", "__name", "parseIso", "utcParse", "isoSpecifier", "pad", "hash", "len", "fold", "text", "i", "chr", "foldObject", "o", "seen", "input", "key", "foldValue", "value", "toString", "hashSum", "isArray", "root", "isNode", "isCI", "Stack", "__name", "e", "Level", "colours", "ConsoleWriter", "dateTime", "level", "id", "msg", "Logging", "obj", "cache", "_key", "_", "logger", "arg", "classID2Meta", "classID", "info", "classInfo", "requestAnimationFrame", "lastTime", "callback", "currTime", "timeToCall", "applyMixins", "derivedCtor", "baseCtors", "baseCtor", "name", "descriptor", "Class", "at", "source", "mixinClass", "methodID", "newMethod", "origMethod", "s", "c", "GEN_PUB_STUBS", "deepEqual", "a", "b", "arrA", "arrB", "keys", "dateA", "dateB", "regexpA", "regexpB", "__meta_", "__private_", "__prop_", "__prop_data_", "__default_", "isMeta", "isPrivate", "Meta", "defaultValue", "type", "description", "set", "ext", "options", "litmus", "d", "row", "MetaProxy", "proxy", "method", "isMetaProxy", "meta", "propExtID", "PropertyExt", "_PropertyExt", "includePrivate", "expandProxies", "protoStack", "__proto__", "item", "selfProp", "visitor", "publishItem", "widget", "widgets", "filter", "context", "retVal", "prop", "val", "serialization", "props", "currVal", "privateArr", "exceptionsArr", "isPrivateItem", "isException", "jsType", "prefix", "WidgetType", "propID", "func", "newVal", "oldVal", "idx", "monitor", "monitor2", "theme", "clsArr", "paramName", "param", "other", "ignore", "E", "v", "properties", "more", "eventID", "stopPropagation", "args", "origFunc", "event", "retVal2", "Utility_exports", "__export", "Selection", "SelectionBag", "SelectionBase", "SimpleSelection", "SimpleSelectionMixin", "checksum", "d3ArrayAdapter", "debounce", "downloadBlob", "downloadString", "endsWith", "exists", "fa5Class", "faChar", "faCode", "faKeys", "getTime", "logStringify", "mixin", "multiSort", "naturalSort", "parseClassID", "parseVersionString", "removeHTMLFromString", "safeRaise", "template", "templateFields", "textRect", "textSize", "timestamp", "urlParams", "widgetPath", "_naturalSort", "order", "sortCaseSensitive", "re", "sre", "dre", "ore", "x", "y", "xN", "yN", "xD", "yD", "oFxNcL", "oFyNcL", "cLoc", "numS", "itemArray", "evt", "widgetElement", "skipBringToTop", "elements", "selected", "select_default", "domNode", "element", "wasSelected", "isSelected", "state", "perf", "now", "faCharMap", "faClassMap", "defChar", "str", "div", "nargs", "nargs2", "tpl", "matches", "tplField", "_args", "ot", "match", "result", "index", "data", "sortBy", "l", "r", "lVal", "rVal", "descending_default", "ascending_default", "url", "paramParts", "searchStr", "pos", "subjectString", "lastIndex", "array", "_tagName", "_ns", "tagName", "selectors", "node", "referenceNode", "refIdx", "blob", "filename", "currentdate", "timeFormat", "format", "mimeType", "parts", "classParts", "chk", "dest", "_sources", "_mixin", "empty", "scope", "propParts", "testScope", "threshold", "execAsap", "_dummyArgs", "delayed", "versionString", "_sp", "g_fontSizeContext", "g_fontSizeContextCache", "_text", "fontName", "fontSize", "bold", "globalCanvasContext", "line", "textMeasurement", "width", "height", "g_fontCanvas", "g_fontRectContextCache", "globalCanvasElement", "font", "m", "w", "h", "canvas", "top", "right", "bottom", "left", "target", "nextSibling", "d3Aggr", "min_default", "max_default", "mean_default", "median_default", "variance_default", "deviation_default", "sum_default", "lastFoundFormat", "Field", "_Field", "cloneProp", "asDefault", "fieldsArr", "field", "Grid", "_Grid", "dataChecksum", "fields", "_clone", "ignoreCase", "clone", "d2", "cell", "_row", "col", "_idx", "_col", "columns", "missingDataString", "mappedColumns", "hasRollup", "mapping", "mappedColumn", "leaves", "param1", "param2", "LegacyView", "columnIndicies", "RollupView", "rollupFunc", "aggrType", "aggrColumn", "aggrDeltaColumn", "values", "colIdx", "deltaIdx", "_rollup", "nest", "nest_default", "rollup", "deep", "filterIdx", "typeTest", "isBoolean", "isNumber", "isString", "isUSState", "isDateTime", "isDate", "isTime", "temp", "csvFormatRows", "csvParse", "tsvParse", "tsvFormatRows", "fieldsOrig", "_LegacyView", "grid", "opts", "column", "map_default", "entries", "prevRow", "entry", "cells", "test", "dateTimeFormats", "dateFormats", "timeFormats", "t", "formatPicker", "formats", "timeParse", "widgetID", "Widget", "_Widget", "newNode", "watchArray", "destructObserver", "mutations", "leaks", "mutation", "pNode", "defValue", "rowIdx", "newItem", "size", "delta", "style", "snapSize", "snap", "gridSize", "snapDelta", "x2", "gridSize2", "dx", "classIDArr", "ctm", "newPos", "xScale", "yScale", "transform", "refresh", "round", "context2", "classed", "renderCount", "resolve", "reject", "debouncedCallback", "_domNode", "_element", "origClassed", "str_obj", "HTMLWidget", "rect", "overlay", "_mutation", "bbox", "CanvasWidget", "Platform_exports", "getScrollbarWidth", "ieVersion", "isIE", "svgMarkerGlitch", "version", "_version", "ua", "tem", "M", "_scrollBarWidth", "outer", "widthNoScroll", "inner", "widthWithScroll", "MutationListener", "callback2", "config", "listener", "Transition", "cubicInOut", "selection", "lerp", "point", "that", "intersectLineLine", "a1", "a2", "b1", "b2", "uaT", "ubT", "uB", "ub", "intersectCircleLine", "cc", "deter", "u1", "u2", "SVGGlowFilter", "color", "rgb", "SVGWidget", "transitionDuration", "_size", "svg", "svgDefs", "transX", "transY", "svgNode", "radius", "center", "pointA", "pointB", "TL", "TR", "BR", "BL", "intersection", "rect1", "rect2", "xLimit", "yLimit", "extraStyles", "fontAwsesomeStyle", "origSvg", "cloneSVG", "origNodes", "compStyles", "styleName", "styleValue", "stylePriority", "defs", "extraStyle", "extraWidgets", "sizes", "prev", "curr", "ctx", "xPos", "image", "Text", "textParts", "lineHeight", "widths", "textLine", "_d", "clipPos", "FAChar", "fontAwesomeOpenType", "Palette_exports", "fetchOrdinalItem", "fetchRainbowItem", "ordinal", "rainbow", "textColor", "index_es_exports", "map", "slice", "implicit", "range", "domain", "unknown", "scale", "n", "band", "ordinalRange", "step", "bandwidth", "paddingInner", "paddingOuter", "align", "rescale", "reverse", "start", "stop", "range_default", "pointish", "copy", "constant_default", "number_default", "unit", "deinterpolateLinear", "deinterpolateClamp", "deinterpolate", "reinterpolateClamp", "reinterpolate", "bimap", "d0", "d1", "r0", "r1", "polymap", "j", "bisect_default", "continuous", "interpolate", "value_default", "clamp", "piecewise", "output", "round_default", "tickFormat_default", "count", "specifier", "tickStep", "precision", "formatSpecifier", "precisionPrefix_default", "formatPrefix", "precisionRound_default", "precisionFixed_default", "linearish", "ticks_default", "i0", "i1", "tickIncrement", "linear", "identity", "nice_default", "interval", "x0", "x1", "pow10", "powp", "base", "logp", "reflect", "f", "log", "logs", "pows", "u", "p", "k", "z", "raise", "exponent", "pow", "sqrt", "quantile", "thresholds", "quantile_default", "quantize", "durationSecond", "durationMinute", "durationHour", "durationDay", "durationWeek", "durationMonth", "durationYear", "date", "number", "calendar", "year", "month", "week", "day", "hour", "minute", "second", "millisecond", "invert", "formatMillisecond", "formatSecond", "formatMinute", "formatHour", "formatDay", "formatWeek", "formatMonth", "formatYear", "tickIntervals", "tickFormat", "tickInterval", "bisector_default", "t0", "t1", "time_default", "year_default", "month_default", "sunday", "day_default", "hour_default", "minute_default", "second_default", "millisecond_default", "utcTime_default", "utcYear_default", "utcMonth_default", "utcSunday", "utcDay_default", "utcHour_default", "utcMinute_default", "utcFormat", "colors_default", "category10_default", "category20b_default", "category20c_default", "category20_default", "cubehelix_default", "cubehelixLong", "cubehelix", "warm", "cool", "rainbow_default", "ts", "ramp", "viridis_default", "magma", "inferno", "plasma", "sequential", "interpolator", "d3Schemes", "m_colorbrewer", "m_d3", "d3Ordinal", "brewerOrdinal", "hpccOrdinal", "flatuiSchemes", "flatuiOrdinal", "ordinalCache", "colors", "palette_ordinal", "newColors", "_item", "largestPalette", "newID", "_id", "_colors", "rainbowCache", "steps", "palette_rainbow", "_steps", "_custom", "subPaletteSize", "prevColor", "lab", "low", "high", "ordinalDivID", "brewerDivID", "customDivID", "customArr", "values_default", "palette", "backgroundColor", "Shape", "shape", "element2", "_shape", "arrow_h", "arrow_w", "arrow_b", "_origRadius", "Icon", "diameter", "el", "Entity", "local", "annoXPos", "annotations", "anno", "annoDiam", "x_offset", "y_offset", "EntityCard", "icon_bbox", "title_bbox", "desc_bbox", "anno_w", "anno_h", "anno_gap", "_background_h", "_background_w", "EntityPin", "is_hovering", "_anno_h", "background_bbox", "icon_y", "title_y", "desc_y", "anno_y", "remove_padding", "EntityRect", "annotations_bbox", "iconWidth", "titleX", "annoWidth", "titleW", "EntityRectList", "idxColumns", "idxs", "idxColumn", "margin", "entityRect", "TextBox", "textBBox", "EntityVertex", "text_bbox", "_icon_x", "_icon_y", "Image", "img", "List", "lineEnter", "newTextBox", "listHeight", "listWidth", "yPos", "Menu", "menuBBox", "ProgressBar", "halflife", "perc", "bar_size", "bar_color", "blur_opacity", "blur_opacity_hex", "blur_color", "blur_size", "blur_fx", "_remaining", "nopropagation", "noevent_default", "nodrag_default", "view", "yesdrag", "noclick", "DragEvent", "subject", "active", "dy", "dispatch", "defaultFilter", "defaultContainer", "defaultSubject", "defaultTouchable", "drag_default", "container", "touchable", "gestures", "listeners", "dispatch_default", "mousedownx", "mousedowny", "mousemoving", "touchending", "clickDistance2", "drag", "mousedowned", "touchstarted", "touchmoved", "touchended", "gesture", "beforestart", "mouse_default", "mousemoved", "mouseupped", "touches", "touch_default", "sublisteners", "customEvent", "p0", "Surface", "surfaceButtons", "button", "buttonClientHeight", "iconClientSize", "textClientSize", "menuClientSize", "_titleRegionHeight", "titleRegionHeight", "yTitle", "titleTextHeight", "titleTextWidth", "topMargin", "leftMargin", "xOffset", "yOffset", "content", "padding", "hits", "i2", "i3", "nearest", "ResizeSurface", "_dx", "_dy", "posSize", "sizeHandles", "sizeHandlesEnter", "ZoomEvent", "Transform", "location", "defaultExtent", "defaultTransform", "defaultWheelDelta", "defaultConstrain", "extent", "translateExtent", "dx0", "dx1", "dy0", "dy1", "zoom_default", "constrain", "wheelDelta", "scaleExtent", "duration", "touchstarting", "touchDelay", "wheelDelay", "zoom", "wheeled", "dblclicked", "collection", "schedule", "k0", "k1", "centroid", "p1", "translate", "transition", "g", "clean", "Gesture", "interrupt_default", "wheelidled", "y0", "started", "l0", "l1", "dp", "dl", "Button", "groups", "StickyButton", "ToggleButton", "Spacer", "SelectDropDown", "optionUpdate", "IconBar", "buttons", "icons", "SelectionButton", "_SelectionButton", "sb", "SelectionBar", "TitleBar", "SVGZoomWidget", "targetel", "matrix", "tbbox", "widthOnly", "newScale", "move", "_origMouseMode", "WidgetArray", "event_default", "MODE_DRAG", "MODE_SPACE", "MODE_HANDLE", "MODE_CENTER", "number1", "number2", "toucher", "identifier", "X", "xy", "Y", "XY", "cursors", "flipX", "flipY", "signsX", "signsY", "brushSelection", "brushX", "brush", "brushY", "brush_default", "dim", "handleSize", "group", "initialize", "handle", "redraw", "emitter", "emit", "selection0", "selection1", "tween", "Emitter", "mode", "signX", "signY", "W", "w0", "w1", "N", "n0", "n1", "e0", "e1", "S", "s0", "s1", "moving", "shifting", "lockX", "lockY", "pointer", "point0", "moved", "ended", "keydowned", "keyupped", "point1", "d3Event", "I1DChart", "vh", "row", "column", "selected", "define_default", "constructor", "factory", "prototype", "extend", "parent", "definition", "key", "Color", "darker", "brighter", "reI", "reN", "reP", "reHex", "reRgbInteger", "reRgbPercent", "reRgbaInteger", "reRgbaPercent", "reHslPercent", "reHslaPercent", "named", "define_default", "color", "channels", "color_formatHex", "color_formatHex8", "color_formatHsl", "color_formatRgb", "hslConvert", "format", "m", "l", "rgbn", "Rgb", "rgba", "hsla", "n", "r", "g", "b", "a", "rgbConvert", "o", "rgb", "opacity", "extend", "k", "clampi", "clampa", "rgb_formatHex", "rgb_formatHex8", "rgb_formatRgb", "hex", "value", "h", "s", "Hsl", "min", "max", "hsl", "m2", "m1", "hsl2rgb", "clamph", "clampt", "I2DChart", "vh", "row", "column", "value", "origRow", "hsl", "selected", "I2DAggrChart", "vh", "row", "column", "value", "hsl", "selected", "IGraph", "_row", "_col", "_sel", "more", "instanceOfIHighlight", "w", "IInput", "FA", "_w", "complete", "w", "disable", "e", "idx", "INDChart", "vh", "row", "column", "value", "origRow", "hsl", "selected", "formatDecimal_default", "x", "formatDecimalParts", "p", "i", "coefficient", "exponent_default", "x", "formatDecimalParts", "formatGroup_default", "grouping", "thousands", "value", "width", "i", "t", "j", "g", "length", "formatNumerals_default", "numerals", "value", "i", "re", "formatSpecifier", "specifier", "match", "FormatSpecifier", "formatTrim_default", "s", "out", "n", "i", "i0", "i1", "prefixExponent", "formatPrefixAuto_default", "x", "p", "d", "formatDecimalParts", "coefficient", "exponent", "i", "n", "formatRounded_default", "x", "p", "d", "formatDecimalParts", "coefficient", "exponent", "formatTypes_default", "x", "p", "formatDecimal_default", "formatRounded_default", "formatPrefixAuto_default", "identity_default", "x", "map", "prefixes", "locale_default", "locale", "group", "identity_default", "formatGroup_default", "currencyPrefix", "currencySuffix", "decimal", "numerals", "formatNumerals_default", "percent", "minus", "nan", "newFormat", "specifier", "formatSpecifier", "fill", "align", "sign", "symbol", "zero", "width", "comma", "precision", "trim", "type", "formatTypes_default", "prefix", "suffix", "formatType", "maybeSuffix", "format", "value", "valuePrefix", "valueSuffix", "i", "n", "c", "valueNegative", "formatTrim_default", "prefixExponent", "length", "padding", "formatPrefix", "f", "e", "exponent_default", "k", "locale", "format", "formatPrefix", "defaultLocale", "definition", "locale_default", "prefix", "Map", "map", "key", "value", "property", "keys", "values", "entries", "size", "f", "object", "o", "map_default", "Set", "proto", "map_default", "set", "value", "prefix", "object", "f", "xhtml", "namespaces_default", "namespace_default", "name", "prefix", "i", "namespaces_default", "creatorInherit", "name", "document", "uri", "xhtml", "creatorFixed", "fullname", "creator_default", "namespace_default", "none", "selector_default", "selector", "select_default", "select", "selector_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "subnode", "i", "Selection", "empty", "selectorAll_default", "selector", "selectAll_default", "select", "selectorAll_default", "groups", "m", "subgroups", "parents", "j", "group", "n", "node", "i", "Selection", "matcher_default", "selector", "filter_default", "match", "matcher_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "i", "Selection", "sparse_default", "update", "enter_default", "Selection", "sparse_default", "EnterNode", "parent", "datum", "child", "next", "selector", "constant_default", "x", "keyPrefix", "bindIndex", "parent", "group", "enter", "update", "exit", "data", "i", "node", "groupLength", "dataLength", "EnterNode", "bindKey", "key", "nodeByKeyValue", "keyValues", "keyValue", "data_default", "value", "j", "d", "bind", "parents", "groups", "constant_default", "m", "enterGroup", "updateGroup", "exitGroup", "i0", "i1", "previous", "next", "Selection", "exit_default", "Selection", "sparse_default", "join_default", "onenter", "onupdate", "onexit", "enter", "update", "exit", "merge_default", "selection", "groups0", "groups1", "m0", "m1", "m", "merges", "j", "group0", "group1", "n", "merge", "node", "i", "Selection", "order_default", "groups", "j", "m", "group", "i", "next", "node", "sort_default", "compare", "ascending", "compareNode", "a", "b", "groups", "m", "sortgroups", "j", "group", "n", "sortgroup", "node", "i", "Selection", "call_default", "callback", "nodes_default", "nodes", "i", "node_default", "groups", "j", "m", "group", "i", "n", "node", "size_default", "size", "empty_default", "each_default", "callback", "groups", "j", "m", "group", "i", "n", "node", "attrRemove", "name", "attrRemoveNS", "fullname", "attrConstant", "value", "attrConstantNS", "attrFunction", "v", "attrFunctionNS", "attr_default", "namespace_default", "node", "window_default", "node", "styleRemove", "name", "styleConstant", "value", "priority", "styleFunction", "v", "style_default", "styleValue", "node", "window_default", "propertyRemove", "name", "propertyConstant", "value", "propertyFunction", "v", "property_default", "classArray", "string", "classList", "node", "ClassList", "name", "i", "classedAdd", "names", "list", "classedRemove", "classedTrue", "classedFalse", "classedFunction", "value", "classed_default", "n", "textRemove", "textConstant", "value", "textFunction", "v", "text_default", "htmlRemove", "htmlConstant", "value", "htmlFunction", "v", "html_default", "raise", "raise_default", "lower", "lower_default", "append_default", "name", "create", "creator_default", "constantNull", "insert_default", "name", "before", "create", "creator_default", "select", "selector_default", "remove", "parent", "remove_default", "selection_cloneShallow", "clone", "parent", "selection_cloneDeep", "clone_default", "deep", "datum_default", "value", "filterEvents", "event", "element", "filterContextListener", "listener", "index", "group", "contextListener", "related", "event1", "event0", "parseTypenames", "typenames", "name", "onRemove", "typename", "on", "j", "m", "o", "onAdd", "value", "capture", "wrap", "d", "i", "on_default", "n", "t", "dispatchEvent", "node", "type", "params", "window", "window_default", "event", "dispatchConstant", "dispatchFunction", "dispatch_default", "root", "Selection", "groups", "parents", "selection", "select_default", "selectAll_default", "filter_default", "data_default", "enter_default", "exit_default", "join_default", "merge_default", "order_default", "sort_default", "call_default", "nodes_default", "node_default", "size_default", "empty_default", "each_default", "attr_default", "style_default", "property_default", "classed_default", "text_default", "html_default", "raise_default", "lower_default", "append_default", "insert_default", "remove_default", "clone_default", "datum_default", "on_default", "dispatch_default", "selection_default", "select_default", "selector", "Selection", "root", "tip", "direction", "d3TipDirection", "offset", "d3TipOffset", "html", "d3TipHTML", "rootElement", "functor", "node", "initNode", "svg", "point", "target", "vis", "getSVGNode", "re", "d", "idx", "arr", "args", "content", "poffset", "nodel", "getNodeEl", "i", "directions", "coords", "root_bbox", "placement_success", "placement_overflow", "least_overflow_direction", "_placement_attempt", "top_offset", "_vertical_adjustment", "left_offset", "_horizontal_adjustment", "overflow_obj", "_dir", "_top_offset", "_left_offset", "directionCallbacks", "nodel_bbox", "ret", "side", "sum", "side_overflow", "n", "v", "selection_default", "map_default", "directionNorth", "directionSouth", "directionEast", "directionWest", "directionNorthWest", "directionNorthEast", "directionSouthWest", "directionSouthEast", "bbox", "getScreenBBox", "div", "select_default", "element", "svgNode", "targetShape", "targetel", "matrix", "tbbox", "width", "height", "x", "y", "ITooltip", "tip", "format", "layerEnter", "_base", "svgElement", "_domElement", "layerUpdate", "layerExit", "enter", "_domNode", "element", "update", "_element", "exit", "FA", "overlayElement", "d3tipElement", "classed", "_class", "d", "_", "opts", "html", "row", "titleKey", "obj", "body", "key", "value", "tooltipLabelFormat", "retVal", "tooltipValueFormat", "ITree", "row", "column", "selected", "vh"]
|
|
3
|
+
"sources": ["../src/__package__.ts", "../src/I1DChart.ts", "../src/I2DChart.ts", "../src/I2DAggrChart.ts", "../src/IGraph.ts", "../src/IHighlight.ts", "../src/IInput.ts", "../src/INDChart.ts", "../src/ITooltip.ts", "../src/Tooltip.ts", "../src/ITooltip.css", "../src/ITree.ts"],
|
|
4
|
+
"sourcesContent": ["export const PKG_NAME = \"@hpcc-js/api\";\nexport const PKG_VERSION = \"3.2.0\";\nexport const BUILD_VERSION = \"3.2.0\";\n", "import { Palette } from \"@hpcc-js/common\";\n\nexport function I1DChart() {\n}\nI1DChart.prototype._dataFamily = \"1D\";\nI1DChart.prototype._palette = Palette.rainbow(\"default\");\n\n// Events ---\nI1DChart.prototype.click = function (row, column, selected) {\n};\n\nI1DChart.prototype.dblclick = function (row, column, selected) {\n};\n", "import { Palette } from \"@hpcc-js/common\";\nimport { hsl as d3Hsl } from \"d3-color\";\n\nexport function I2DChart() {\n}\nI2DChart.prototype._dataFamily = \"2D\";\nI2DChart.prototype._palette = Palette.ordinal(\"default\");\n\nI2DChart.prototype.fillColor = function (row: any[], column, value, origRow): string {\n return this._palette(row[0]);\n};\n\nI2DChart.prototype.strokeColor = function (row: any[], column, value, origRow): string {\n return d3Hsl(this.fillColor(row, column, value, origRow)).darker().toString();\n};\n\nI2DChart.prototype.textColor = function (row: any[], column, value, origRow): string {\n return Palette.textColor(this.fillColor(row, column, value, origRow));\n};\n\n// Events ---\nI2DChart.prototype.click = function (row: object, column, selected) {\n};\n\nI2DChart.prototype.dblclick = function (row: object, column, selected) {\n};\n", "import { Palette } from \"@hpcc-js/common\";\nimport { hsl as d3Hsl } from \"d3-color\";\n\nexport function I2DAggrChart() {\n}\nI2DAggrChart.prototype._palette = Palette.rainbow(\"default\");\n\nI2DAggrChart.prototype.fillColor = function (row: any[][], column, value): string {\n return this._palette(row.length);\n};\n\nI2DAggrChart.prototype.strokeColor = function (row: any[][], column, value): string {\n return d3Hsl(this.fillColor(row, column, value)).darker().toString();\n};\n\nI2DAggrChart.prototype.textColor = function (row: any[][], column, value): string {\n return Palette.textColor(this.fillColor(row, column, value));\n};\n\n// Events ---\nI2DAggrChart.prototype.click = function (row: object[], column, selected) {\n};\n\nI2DAggrChart.prototype.dblclick = function (row: object[], column, selected) {\n};\n", "export function IGraph() {\n}\nIGraph.prototype._dataFamily = \"graph\";\n\n// Events ---\nIGraph.prototype.vertex_click = function (_row, _col, _sel, more) {\n if (more && more.vertex) {\n }\n};\n\nIGraph.prototype.vertex_dblclick = function (_row, _col, _sel, more) {\n if (more && more.vertex) {\n }\n};\n\nIGraph.prototype.edge_click = function (_row, _col, _sel, more) {\n if (more && more.edge) {\n }\n};\n\nIGraph.prototype.edge_dblclick = function (_row, _col, _sel, more) {\n if (more && more.edge) {\n }\n};\n", "export interface IHighlight {\n highlightColumn(column: string): this;\n}\n\nexport function instanceOfIHighlight(w: any): w is IHighlight {\n return typeof (w as any).highlightColumn === \"function\";\n}\n", "import { Widget } from \"@hpcc-js/common\";\n\n// Use old school class declaration as this is a mixin ---\nexport function IInput() {\n}\nIInput.prototype = Object.create(Widget.prototype);\nIInput.prototype.constructor = IInput;\n\n// abstract target(): any;\n// abstract target(_: any): this;\n\n// Implementation ---\nIInput.prototype.isValid = function () {\n if (this.validate()) {\n const re = new RegExp(this.validate());\n if (!re.test(this.value())) {\n return false;\n }\n }\n return true;\n};\n\nIInput.prototype.hasValue = function () {\n if (typeof (this as any).type === \"function\") {\n switch ((this as any).type()) {\n case \"radio\":\n /* falls through */\n case \"checkbox\":\n if (this.value() && this.value() !== \"false\") {\n return true;\n }\n break;\n default:\n if (this.value()) {\n return true;\n }\n break;\n }\n return false;\n }\n return this.value() !== \"\";\n};\n\n// Events ---\nIInput.prototype.blur = function (_w) {\n};\nIInput.prototype.keyup = function (_w) {\n};\nIInput.prototype.focus = function (_w) {\n};\nIInput.prototype.click = function (_w) {\n};\nIInput.prototype.dblclick = function (_w) {\n};\nIInput.prototype.change = function (_w, complete: boolean) {\n};\n\nIInput.prototype.resetValue = function (w) {\n w.value(w._inputElement[0].node().value);\n};\n\nIInput.prototype.disable = function (disable) {\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"disabled\", disable ? \"disabled\" : null);\n });\n};\n\nIInput.prototype.setFocus = function () {\n if (this._inputElement.length) {\n this._inputElement[0].node().focus();\n }\n};\n\nexport interface IInput {\n name: { (): string; (_: string): IInput };\n name_exists: () => boolean;\n label: { (): string; (_: string): IInput };\n label_exists: () => boolean;\n value: { (): any; (_: any): IInput };\n value_exists: () => boolean;\n validate: { (): string; (_: string): IInput };\n validate_exists: () => boolean;\n}\nIInput.prototype.publish(\"name\", \"\", \"string\", \"HTML name for the input\");\nIInput.prototype.publish(\"label\", \"\", \"string\", \"Descriptive label\");\nIInput.prototype.publish(\"value\", \"\", \"string\", \"Input Current Value\");\nIInput.prototype.publish(\"validate\", null, \"string\", \"Input Validation\");\n", "import { Palette } from \"@hpcc-js/common\";\nimport { hsl as d3Hsl } from \"d3-color\";\n\nexport function INDChart() {\n}\nINDChart.prototype._dataFamily = \"ND\";\nINDChart.prototype._palette = Palette.ordinal(\"default\");\n\nINDChart.prototype.fillColor = function (row: any[], column: string, value: number, origRow: any): string {\n return this._palette(column);\n};\n\nINDChart.prototype.strokeColor = function (row: any[], column: string, value: number, origRow: any): string {\n return d3Hsl(this.fillColor(row, column, value, origRow)).darker().toString();\n};\n\nINDChart.prototype.textColor = function (row: any[], column: string, value: number, origRow: any): string {\n return Palette.textColor(this.fillColor(row, column, value, origRow));\n};\n\n// Events ---\nINDChart.prototype.click = function (row, column, selected) {\n};\n\nINDChart.prototype.dblclick = function (row, column, selected) {\n};\n", "import { Widget } from \"@hpcc-js/common\";\nimport { format as d3Format } from \"d3-format\";\nimport { tip } from \"./Tooltip.ts\";\n\nimport \"../src/ITooltip.css\";\n\ndeclare const event: object;\n\n// Use old school class declaration as this is a mixin ---\nexport function ITooltip(this: any) {\n this.tooltip = tip();\n\n if (this.tooltipLabelFormat_exists()) {\n this._labelFormatter = d3Format(this.tooltipLabelFormat() as string);\n }\n\n if (this.tooltipValueFormat_exists()) {\n this._valueFormatter = d3Format(this.tooltipValueFormat() as string);\n }\n\n if (this.layerEnter) {\n const layerEnter = this.layerEnter;\n this.layerEnter = function (_base, svgElement, _domElement) {\n if (!this._parentOverlay) {\n this._parentOverlay = _base._parentOverlay;\n }\n this.tooltipEnter(svgElement);\n layerEnter.apply(this, arguments);\n };\n const layerUpdate = this.layerUpdate;\n this.layerUpdate = function (_base) {\n layerUpdate.apply(this, arguments);\n this.tooltipUpdate();\n };\n const layerExit = this.layerExit;\n this.layerExit = function (_base) {\n this.tooltipExit();\n layerExit.apply(this, arguments);\n };\n } else {\n const enter = this.enter;\n this.enter = function (_domNode, element) {\n this.tooltipEnter(element);\n enter.apply(this, arguments);\n };\n const update = this.update;\n this.update = function (_domNode, _element) {\n update.apply(this, arguments);\n this.tooltipUpdate();\n };\n const exit = this.exit;\n this.exit = function (_domNode, _element) {\n this.tooltipExit();\n exit.apply(this, arguments);\n };\n }\n}\nITooltip.prototype = Object.create(Widget.prototype);\nITooltip.prototype.constructor = ITooltip;\n\n// abstract target(): any;\n// abstract target(_: any): this;\n\nITooltip.prototype.tooltipEnter = function (element) {\n const overlayElement = this.parentOverlay();\n if (!overlayElement.empty()) {\n this.tooltip.rootElement(overlayElement.node().parentNode);\n }\n element.call(this.tooltip);\n};\n\nITooltip.prototype.tooltipUpdate = function () {\n this.tooltip.offset(() => {\n if (event && this.tooltipFollowMouse()) {\n const d3tipElement: HTMLDivElement = document.querySelector(\".d3-tip\"); // d3Tip offers no reference to the '.d3-tip' element...?\n d3tipElement.style.display = \"block\";\n d3tipElement.style.left = this.tooltipOffset() + ((event as any).clientX) + \"px\";\n d3tipElement.style.top = (event as any).clientY + \"px\";\n return [];\n }\n switch (this.tooltip.direction()()) {\n case \"e\":\n return [0, this.tooltipOffset()];\n default:\n return [-this.tooltipOffset(), 0];\n }\n });\n\n let classed = this.tooltip.attr(\"class\");\n if (classed) {\n classed = classed.split(\" notick\").join(\"\") + (this.tooltipTick() ? \"\" : \" notick\") + (this.tooltipStyle() === \"none\" ? \" hidden\" : \"\");\n classed = classed.split(\" \")\n .filter(function (_class) {\n return _class.indexOf(\"ITooltip-tooltipStyle-\") !== 0;\n })\n .join(\" \")\n ;\n classed += \" ITooltip-tooltipStyle-\" + this.tooltipStyle();\n this.tooltip\n .attr(\"class\", classed)\n ;\n }\n};\n\nITooltip.prototype.tooltipExit = function () {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n};\n\nITooltip.prototype._tooltipHTML = function (d) {\n return d;\n};\n\nITooltip.prototype.tooltipHTML = function (_) {\n return this.tooltip.html(_);\n};\n\nITooltip.prototype.tooltipFormat = function (opts: { label?: string | number, series?: string | number, value?: Date | string | number, arr?: Array<{ color: string, label: string, value: string }> } = {}) {\n opts.label = opts.label === undefined ? \"\" : opts.label;\n if (this._labelFormatter) {\n opts.label = this._labelFormatter(opts.label) || \"\";\n } else if (this.formatData && this.parseData) {\n opts.label = this.formatData(this.parseData(opts.label));\n }\n opts.series = opts.series || \"\";\n if (opts.value instanceof Date) {\n opts.value = opts.value || \"\";\n } else if (this._valueFormatter) {\n opts.value = this._valueFormatter(opts.value) || \"\";\n } else if (this.formatValue && this.parseValue) {\n opts.value = this.formatValue(this.parseValue(opts.value));\n }\n switch (this.tooltipStyle()) {\n case \"none\":\n break;\n case \"series-table\":\n let html = '<table class=\"ITooltip-series-table\">'\n + \"<thead>\"\n + '<tr><th colspan=\"2\">' + opts.label + \"</th></tr>\"\n + \"</thead>\"\n + \"<tbody>\";\n opts.arr.forEach(function (row) {\n html += \"<tr>\";\n html += \"<td>\";\n html += '<div class=\"series-table-row-color\" style=\"background-color:' + row.color + '\"></div>';\n html += '<div class=\"series-table-row-label\">' + row.label + \"</div>\";\n html += \"</td>\";\n html += '<td><div class=\"series-table-row-value\">' + row.value + \"</div></td>\";\n html += \"</tr>\";\n });\n html += \"</tbody>\";\n html += \"</table>\";\n return html;\n default:\n if (opts.series) {\n return \"<span style='color:\" + this.tooltipSeriesColor() + \"'>\" + opts.series + \"</span> / <span style='color:\" + this.tooltipLabelColor() + \"'>\" + opts.label + \"</span>: <span style='color:\" + this.tooltipValueColor() + \"'>\" + opts.value + \"</span>\";\n }\n if (opts.label !== \"\") {\n return \"<span style='color:\" + this.tooltipLabelColor() + \"'>\" + opts.label + \"</span>: <span style='color:\" + this.tooltipValueColor() + \"'>\" + opts.value + \"</span>\";\n }\n return \"<span style='color:\" + this.tooltipValueColor() + \"'>\" + opts.value + \"</span>\";\n }\n};\n\nITooltip.prototype.tooltipKeyValueFormat = function (titleKey: string, obj: object): string {\n let body = \"\";\n for (const key in obj) {\n if (key !== titleKey) {\n const value = obj && obj[key] ? obj[key] : \"\";\n body += `<tr><td style=\"${this.tooltipLabelColor_exists() ? \"color:\" + this.tooltipLabelColor() : \"\"}\">${key}</td><td style=\"font-weight:normal\">${value}</td></tr>`;\n }\n }\n return `<table>\n <thead>\n <tr><th colspan=\"2\" style=\"font-weight:bold;font-size:16px\">${obj[titleKey]}</th></tr>\n </thead>\n <tbody>\n ${body}\n </tbody>\n </table>`;\n};\n\nexport interface ITooltip {\n tooltipStyle: { (): \"default\" | \"none\" | \"series-table\"; (_: \"default\" | \"none\" | \"series-table\"): ITooltip; };\n tooltipFollowMouse: { (): boolean; (_: boolean): ITooltip; };\n tooltipLabelFormat: (_?) => string | ITooltip;\n tooltipLabelFormat_exists: () => boolean;\n tooltipValueFormat: (_?) => string | ITooltip;\n tooltipValueFormat_exists: () => boolean;\n tooltipSeriesColor: { (): string; (_: string): ITooltip; };\n tooltipLabelColor: { (): string; (_: string): ITooltip; };\n tooltipLabelColor_exists: () => boolean;\n tooltipValueColor: { (): string; (_: string): ITooltip; };\n tooltipTick: { (): boolean; (_: boolean): ITooltip; };\n tooltipOffset: { (): number; (_: number): ITooltip; };\n tooltipOffset_default: { (): number; (_: number): ITooltip; };\n}\nITooltip.prototype.publish(\"tooltipStyle\", \"default\", \"set\", \"Style mode\", [\"default\", \"none\", \"series-table\"], {});\nITooltip.prototype.publish(\"tooltipFollowMouse\", false, \"boolean\", \"If true, the tooltip will follow mouse movement\", null, {});\nITooltip.prototype.publish(\"tooltipLabelFormat\", undefined, \"string\", \"Format of tooltip label(s) (the domain axis)\", null, {});\nITooltip.prototype.publish(\"tooltipValueFormat\", undefined, \"string\", \"Number format of tooltip value(s)\", null, {});\nITooltip.prototype.publish(\"tooltipSeriesColor\", \"#EAFFFF\", \"html-color\", \"Color of tooltip series text\", null, {});\nITooltip.prototype.publish(\"tooltipLabelColor\", \"#CCFFFF\", \"html-color\", \"Color of tooltip label text (the domain axis)\", null, {});\nITooltip.prototype.publish(\"tooltipValueColor\", \"white\", \"html-color\", \"Color of tooltip value(s)\", null, {});\nITooltip.prototype.publish(\"tooltipTick\", true, \"boolean\", \"Show tooltip tick\", null, {});\nITooltip.prototype.publish(\"tooltipOffset\", 8, \"number\", \"Offset from the cursor\", null, {});\n\nconst tooltipLabelFormat = ITooltip.prototype.tooltipLabelFormat;\nITooltip.prototype.tooltipLabelFormat = function (_?): string | ITooltip {\n const retVal = tooltipLabelFormat.apply(this, arguments);\n if (arguments.length) {\n this._labelFormatter = d3Format(_);\n }\n return retVal;\n};\n\nconst tooltipValueFormat = ITooltip.prototype.tooltipValueFormat;\nITooltip.prototype.tooltipValueFormat = function (_?): string | ITooltip {\n const retVal = tooltipValueFormat.apply(this, arguments);\n if (arguments.length) {\n this._valueFormatter = d3Format(_);\n }\n return retVal;\n};\n", "// Based on https://github.com/GordonSmith/d3-tip forked from https://github.com/Caged/d3-tip\n\nimport { map } from \"d3-collection\";\nimport { select, selection } from \"d3-selection\";\n\nexport function tip() {\n let direction = d3TipDirection;\n let offset = d3TipOffset;\n let html = d3TipHTML;\n let rootElement = functor(document.body);\n let node = initNode();\n let svg = null;\n let point = null;\n let target = null;\n\n const tip: any = function (vis) {\n svg = getSVGNode(vis);\n if (!svg) return;\n point = svg.createSVGPoint();\n const re = rootElement();\n if (!re) return;\n if (!node) return;\n re.appendChild(node);\n };\n\n // Public - show the tooltip on the screen\n //\n // Returns a tip\n tip.show = function (d, idx, arr) {\n target = arr[idx];\n const args = Array.prototype.slice.call(arguments) as [];\n const content = html.apply(this, args);\n if (content === null) {\n return tip;\n }\n const poffset = offset.apply(this, args);\n const nodel = getNodeEl();\n let i = directions.length;\n let coords;\n const root_bbox = rootElement().getBoundingClientRect();\n nodel.html(content)\n .style(\"opacity\", 1).style(\"pointer-events\", \"all\");\n\n while (i--) nodel.classed(directions[i], false);\n let placement_success = false;\n const placement_overflow = {};\n let least_overflow_direction = directions[0];\n for (let i = 0; i < directions.length; i++) {\n placement_success = _placement_attempt(directions[i]);\n if (placement_success) break;\n }\n if (!placement_success) {\n nodel.classed(\"notick\", true);\n const top_offset = _vertical_adjustment(placement_overflow[least_overflow_direction]);\n const left_offset = _horizontal_adjustment(placement_overflow[least_overflow_direction]);\n _placement_attempt(least_overflow_direction, top_offset, left_offset);\n } else {\n nodel.classed(\"notick\", false);\n }\n return tip;\n\n function _horizontal_adjustment(overflow_obj) {\n if (overflow_obj.left > overflow_obj.right) {\n return overflow_obj.left > 0 ? -overflow_obj.left : 0;\n } else {\n return overflow_obj.right > 0 ? overflow_obj.right : 0;\n }\n }\n function _vertical_adjustment(overflow_obj) {\n if (overflow_obj.top > overflow_obj.bottom) {\n return overflow_obj.top > 0 ? -overflow_obj.top : 0;\n } else {\n return overflow_obj.bottom;\n }\n }\n\n function _placement_attempt(this: any, _dir, _top_offset?, _left_offset?) {\n _top_offset = _top_offset ? _top_offset : 0;\n _left_offset = _left_offset ? _left_offset : 0;\n nodel.style(\"white-space\", \"nowrap\");\n coords = directionCallbacks.get(_dir).apply(this);\n nodel.classed(_dir, true)\n .style(\"top\", (coords.top + poffset[0] - _top_offset) + \"px\")\n .style(\"left\", (coords.left + poffset[1] - _left_offset) + \"px\");\n const nodel_bbox = nodel.node().getBoundingClientRect();\n const ret = nodel_bbox.top > root_bbox.top\n && nodel_bbox.left > root_bbox.left\n && nodel_bbox.bottom < root_bbox.bottom\n && nodel_bbox.right < root_bbox.right\n ;\n placement_overflow[_dir] = {\n top: root_bbox.top - nodel_bbox.top,\n right: nodel_bbox.right - root_bbox.right,\n bottom: nodel_bbox.bottom - root_bbox.bottom,\n left: root_bbox.left - nodel_bbox.left\n };\n nodel.style(\"white-space\", \"normal\");\n placement_overflow[_dir].total_overflow = Object.keys(placement_overflow[_dir])\n .filter(side => placement_overflow[_dir][side] > 0)\n .reduce((sum, side) => {\n const side_overflow = placement_overflow[_dir][side];\n return sum + side_overflow;\n }, 0);\n if (placement_overflow[least_overflow_direction].total_overflow > placement_overflow[_dir].total_overflow) {\n least_overflow_direction = _dir;\n }\n if (!ret) {\n nodel.classed(_dir, false);\n }\n return ret;\n }\n };\n\n // Public - hide the tooltip\n //\n // Returns a tip\n tip.hide = function () {\n const nodel = getNodeEl();\n nodel.style(\"opacity\", 0).style(\"pointer-events\", \"none\");\n return tip;\n };\n\n // Public: Proxy attr calls to the d3 tip container.\n // Sets or gets attribute value.\n //\n // n - name of the attribute\n // v - value of the attribute\n //\n // Returns tip or attribute value\n // eslint-disable-next-line no-unused-vars\n tip.attr = function (n, v) {\n if (arguments.length < 2 && typeof n === \"string\") {\n return getNodeEl().attr(n);\n }\n\n const args = Array.prototype.slice.call(arguments);\n selection.prototype.attr.apply(getNodeEl(), args);\n return tip;\n };\n\n // Public: Proxy style calls to the d3 tip container.\n // Sets or gets a style value.\n //\n // n - name of the property\n // v - value of the property\n //\n // Returns tip or style property value\n // eslint-disable-next-line no-unused-vars\n tip.style = function (n, v) {\n if (arguments.length < 2 && typeof n === \"string\") {\n return getNodeEl().style(n);\n }\n\n const args = Array.prototype.slice.call(arguments);\n selection.prototype.style.apply(getNodeEl(), args);\n return tip;\n };\n\n // Public: Set or get the direction of the tooltip\n //\n // v - One of n(north), s(south), e(east), or w(west), nw(northwest),\n // sw(southwest), ne(northeast) or se(southeast)\n //\n // Returns tip or direction\n tip.direction = function (v) {\n if (!arguments.length) return direction;\n direction = v == null ? v : functor(v);\n\n return tip;\n };\n\n // Public: Sets or gets the offset of the tip\n //\n // v - Array of [x, y] offset\n //\n // Returns offset or\n tip.offset = function (v) {\n if (!arguments.length) return offset;\n offset = v == null ? v : functor(v);\n\n return tip;\n };\n\n // Public: sets or gets the html value of the tooltip\n //\n // v - String value of the tip\n //\n // Returns html value or tip\n tip.html = function (v) {\n if (!arguments.length) return html;\n html = v == null ? v : functor(v);\n\n return tip;\n };\n\n // Public: sets or gets the root element anchor of the tooltip\n //\n // v - root element of the tooltip\n //\n // Returns root node of tip\n tip.rootElement = function (v) {\n if (!arguments.length) return rootElement;\n rootElement = functor(v);\n\n return tip;\n };\n\n // Public: destroys the tooltip and removes it from the DOM\n //\n // Returns a tip\n tip.destroy = function () {\n if (node) {\n getNodeEl().remove();\n node = null;\n }\n return tip;\n };\n\n function d3TipDirection() { return \"n\"; }\n function d3TipOffset() { return [0, 0]; }\n function d3TipHTML() { return \" \"; }\n\n const directionCallbacks = map({\n n: directionNorth,\n s: directionSouth,\n e: directionEast,\n w: directionWest,\n nw: directionNorthWest,\n ne: directionNorthEast,\n sw: directionSouthWest,\n se: directionSouthEast\n });\n const directions = directionCallbacks.keys();\n\n function directionNorth() {\n const bbox = getScreenBBox(window);\n return {\n top: bbox.n.y - node.offsetHeight,\n left: bbox.n.x - node.offsetWidth / 2\n };\n }\n\n function directionSouth() {\n const bbox = getScreenBBox(window);\n return {\n top: bbox.s.y + 8,\n left: bbox.s.x - node.offsetWidth / 2\n };\n }\n\n function directionEast() {\n const bbox = getScreenBBox(window);\n return {\n top: bbox.e.y - node.offsetHeight / 2,\n left: bbox.e.x + 8\n };\n }\n\n function directionWest() {\n const bbox = getScreenBBox(window);\n return {\n top: bbox.w.y - node.offsetHeight / 2,\n left: bbox.w.x - node.offsetWidth - 8\n };\n }\n\n function directionNorthWest() {\n const bbox = getScreenBBox(window);\n return {\n top: bbox.nw.y - node.offsetHeight,\n left: bbox.nw.x - node.offsetWidth\n };\n }\n\n function directionNorthEast() {\n const bbox = getScreenBBox(window);\n return {\n top: bbox.ne.y - node.offsetHeight,\n left: bbox.ne.x\n };\n }\n\n function directionSouthWest() {\n const bbox = getScreenBBox(window);\n return {\n top: bbox.sw.y,\n left: bbox.sw.x - node.offsetWidth\n };\n }\n\n function directionSouthEast() {\n const bbox = getScreenBBox(window);\n return {\n top: bbox.se.y,\n left: bbox.se.x\n };\n }\n\n function initNode() {\n const div = select(document.createElement(\"div\"));\n div\n .attr(\"class\", \"d3-tip\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"opacity\", 0)\n .style(\"pointer-events\", \"none\")\n .style(\"box-sizing\", \"border-box\");\n\n return div.node();\n }\n\n function getSVGNode(element) {\n const svgNode = element.node();\n if (!svgNode) return null;\n if (svgNode.tagName.toLowerCase() === \"svg\") return svgNode;\n return svgNode.ownerSVGElement;\n }\n\n function getNodeEl() {\n if (node == null) {\n node = initNode();\n // re-add node to DOM\n rootElement().appendChild(node);\n }\n return select(node);\n }\n\n // Private - gets the screen coordinates of a shape\n //\n // Given a shape on the screen, will return an SVGPoint for the directions\n // n(north), s(south), e(east), w(west), ne(northeast), se(southeast),\n // nw(northwest), sw(southwest).\n //\n // +-+-+\n // | |\n // + +\n // | |\n // +-+-+\n //\n // Returns an Object {n, s, e, w, nw, sw, ne, se}\n function getScreenBBox(targetShape) {\n let targetel = target || targetShape;\n\n while (targetel.getCTM == null && targetel.parentNode != null) {\n targetel = targetel.parentNode;\n }\n\n const bbox: any = {};\n const matrix = targetel.getCTM();\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\n point.x = x;\n point.y = y;\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 bbox;\n }\n\n // Private - replace D3JS 3.X d3.functor() function\n function functor(v) {\n return typeof v === \"function\" ? v : function () {\n return v;\n };\n }\n\n return tip;\n}\n", "(function(){\n if (!document.getElementById('487fd6b2')) {\n var e = document.createElement('style');\n e.id = '487fd6b2';\n e.textContent = `.d3-tip {\n line-height: 1;\n font-weight: bold;\n padding: 12px;\n background: rgba(0, 0, 0, 0.66);\n color: #fff;\n border-radius: 2px;\n pointer-events: none !important;\n z-index:10;\n}\n\n.d3-tip.hidden {\n visibility:hidden;\n}\n\n/* Creates a small triangle extender for the tooltip */\n.d3-tip:after {\n content: \" \";\n box-sizing: border-box;\n display: inline-block;\n border: 4px solid rgba(0, 0, 0, 0.66);\n position: absolute;\n pointer-events: none !important;\n width: 8px;\n height: 8px;\n margin: 0;\n}\n\n/* Northward tooltips */\n.d3-tip.n:after {\n top: 100%;\n left: calc(50% - 4px);\n border-top-width: 8px;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent;\n}\n\n/* Eastward tooltips */\n.d3-tip.e:after {\n top: calc(50% - 4px);\n left: -12px;\n border-top-color: transparent;\n border-right-width: 8px;\n border-bottom-color: transparent;\n border-left-color: transparent;\n}\n\n/* Southward tooltips */\n.d3-tip.s {\n margin-top: 8px;\n}\n.d3-tip.s:after {\n top: -12px;\n left: calc(50% - 4px);\n border-top-color: transparent;\n border-right-color: transparent;\n border-bottom-width: 8px;\n border-left-color: transparent;\n}\n\n/* Westward tooltips */\n.d3-tip.w:after {\n top: calc(50% - 4px);\n left: 100%;\n border-top-color: transparent;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-width: 8px;\n}\n\n.d3-tip.notick:after {\n border-color: transparent !important;\n}\n\n.common_Widget .over {\n stroke: rgba(0, 0, 0, 0.66);\n opacity: 0.66;\n}\n\n.d3-tip.ITooltip-tooltipStyle-series-table{\n padding: 0;\n}\n\n.d3-tip .ITooltip-series-table th,\n.d3-tip .ITooltip-series-table td{\n padding: 6px;\n text-align: left;\n border: 1px solid #D1D1D1;\n}\n\n.d3-tip .ITooltip-series-table .series-table-row-color{\n display: inline-block;\n height: 10px;\n width: 10px;\n margin-right: 10px;\n}\n\n.d3-tip .ITooltip-series-table .series-table-row-label{\n display: inline-block;\n}\n\n.d3-tip .ITooltip-series-table th{\n background-color: #B3B3B3;\n}\n\n.d3-tip .ITooltip-series-table td{\n background-color: #FFF;\n color: #555;\n font-weight: normal;\n}\n\n.d3-tip .ITooltip-series-table td:first-child{\n border-right: 0;\n}\n\ntable.ITooltip-series-table td:last-child{\n border-left: 1px dotted #A3A3A3;\n}\n`;\n document.head.appendChild(e);\n }\n })();", "import { Palette } from \"@hpcc-js/common\";\n\n// Use old school class declaration as this is a mixin ---\nexport function ITree() {\n}\nITree.prototype.constructor = ITree;\n\n// Events ---\nITree.prototype.click = function (row, column, selected) {\n};\n\nITree.prototype.dblclick = function (row, column, selected) {\n};\n\nITree.prototype._palette = Palette.ordinal(\"default\");\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["PKG_NAME", "PKG_VERSION", "BUILD_VERSION", "Palette", "I1DChart", "__name", "Palette", "row", "column", "selected", "Palette", "d3Hsl", "I2DChart", "__name", "Palette", "row", "column", "value", "origRow", "d3Hsl", "selected", "Palette", "d3Hsl", "I2DAggrChart", "__name", "Palette", "row", "column", "value", "d3Hsl", "selected", "IGraph", "__name", "_row", "_col", "_sel", "more", "instanceOfIHighlight", "w", "__name", "Widget", "IInput", "__name", "Widget", "_w", "complete", "w", "disable", "e", "idx", "Palette", "d3Hsl", "INDChart", "__name", "Palette", "row", "column", "value", "origRow", "d3Hsl", "selected", "Widget", "d3Format", "map", "select", "selection", "tip", "direction", "d3TipDirection", "offset", "d3TipOffset", "html", "d3TipHTML", "rootElement", "functor", "node", "initNode", "svg", "point", "target", "__name", "vis", "getSVGNode", "re", "d", "idx", "arr", "args", "content", "poffset", "nodel", "getNodeEl", "i", "directions", "coords", "root_bbox", "placement_success", "placement_overflow", "least_overflow_direction", "_placement_attempt", "top_offset", "_vertical_adjustment", "left_offset", "_horizontal_adjustment", "overflow_obj", "_dir", "_top_offset", "_left_offset", "directionCallbacks", "nodel_bbox", "ret", "side", "sum", "side_overflow", "n", "v", "selection", "map", "directionNorth", "directionSouth", "directionEast", "directionWest", "directionNorthWest", "directionNorthEast", "directionSouthWest", "directionSouthEast", "bbox", "getScreenBBox", "div", "select", "element", "svgNode", "targetShape", "targetel", "matrix", "tbbox", "width", "height", "x", "y", "e", "ITooltip", "tip", "d3Format", "layerEnter", "_base", "svgElement", "_domElement", "layerUpdate", "layerExit", "enter", "_domNode", "element", "update", "_element", "exit", "__name", "Widget", "overlayElement", "d3tipElement", "classed", "_class", "d", "_", "opts", "html", "row", "titleKey", "obj", "body", "key", "value", "tooltipLabelFormat", "retVal", "tooltipValueFormat", "Palette", "ITree", "__name", "row", "column", "selected", "Palette"]
|
|
7
7
|
}
|