StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
StackGenVis/frontend/node_modules/parcoord-es/dist/parcoords.standalone.js.map

1 lines
777 KiB

{"version":3,"file":"parcoords.standalone.js","sources":["../node_modules/requestanimationframe/app/requestAnimationFrame.js","../src/util/renderQueue.js","../src/util/width.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/merge.js","../node_modules/d3-selection/src/selection/order.js","../node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-selection/src/selection/call.js","../node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-selection/src/selection/node.js","../node_modules/d3-selection/src/selection/size.js","../node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-selection/src/selection/each.js","../node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/d3-selection/src/selection/property.js","../node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-selection/src/selection/text.js","../node_modules/d3-selection/src/selection/html.js","../node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-selection/src/selection/append.js","../node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-selection/src/selection/on.js","../node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-selection/src/selection/index.js","../node_modules/d3-selection/src/select.js","../node_modules/d3-selection/src/sourceEvent.js","../node_modules/d3-selection/src/point.js","../node_modules/d3-selection/src/mouse.js","../node_modules/d3-selection/src/selectAll.js","../node_modules/d3-selection/src/touch.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-drag/src/noevent.js","../node_modules/d3-drag/src/nodrag.js","../node_modules/d3-drag/src/constant.js","../node_modules/d3-drag/src/event.js","../node_modules/d3-drag/src/drag.js","../node_modules/d3-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/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/d3-interpolate/src/transform/parse.js","../node_modules/d3-interpolate/src/transform/index.js","../node_modules/d3-interpolate/src/zoom.js","../node_modules/d3-transition/node_modules/d3-timer/src/timer.js","../node_modules/d3-transition/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-transition/src/transition/tween.js","../node_modules/d3-transition/node_modules/d3-color/src/define.js","../node_modules/d3-transition/node_modules/d3-color/src/color.js","../node_modules/d3-transition/node_modules/d3-color/src/math.js","../node_modules/d3-transition/node_modules/d3-color/src/lab.js","../node_modules/d3-transition/node_modules/d3-color/src/cubehelix.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/transition.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-transition/node_modules/d3-ease/src/cubic.js","../node_modules/d3-transition/node_modules/d3-ease/src/sin.js","../node_modules/d3-transition/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-brush/src/constant.js","../node_modules/d3-brush/src/event.js","../node_modules/d3-brush/src/noevent.js","../node_modules/d3-brush/src/brush.js","../src/brush/invertByScale.js","../src/brush/1d/brushExtents.js","../src/brush/1d/brushReset.js","../src/brush/1d/selected.js","../src/brush/1d/brushFor.js","../src/brush/1d/install.js","../src/brush/1d/uninstall.js","../src/brush/1d/index.js","../src/brush/1d-multi/drawBrushes.js","../src/brush/1d-multi/selected.js","../src/brush/1d-multi/newBrush.js","../src/brush/1d-multi/brushExtents.js","../src/brush/1d-multi/brushReset.js","../src/brush/1d-multi/brushFor.js","../src/brush/1d-multi/install.js","../src/brush/1d-multi/uninstall.js","../src/brush/1d-multi/index.js","../src/brush/strums/uninstall.js","../src/brush/strums/selected.js","../src/brush/strums/removeStrum.js","../src/brush/strums/onDragEnd.js","../src/brush/strums/onDrag.js","../src/util/height.js","../src/brush/dimensionsForPoint.js","../src/brush/strums/onDragStart.js","../src/brush/strums/brushReset.js","../src/brush/consecutive.js","../src/brush/strums/install.js","../src/brush/strums/index.js","../src/brush/angular/uninstall.js","../src/brush/angular/util/hypothenuse.js","../src/brush/angular/selected.js","../src/brush/angular/removeStrum.js","../src/brush/angular/onDragEnd.js","../src/brush/angular/onDrag.js","../node_modules/d3-shape/node_modules/d3-path/src/path.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-shape/src/math.js","../node_modules/d3-shape/src/arc.js","../node_modules/d3-shape/src/curve/monotone.js","../src/brush/angular/onDragStart.js","../src/brush/angular/brushReset.js","../src/brush/angular/install.js","../src/brush/angular/index.js","../src/api/intersection.js","../src/api/mergeParcoords.js","../src/api/selected.js","../src/api/brushMode.js","../src/util/dimensionLabels.js","../src/util/flipAxisAndUpdatePCP.js","../src/util/rotateLabels.js","../src/api/updateAxes.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/extent.js","../node_modules/d3-array/src/range.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/min.js","../node_modules/d3-collection/src/map.js","../node_modules/d3-collection/src/set.js","../node_modules/d3-collection/src/keys.js","../node_modules/d3-collection/src/entries.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-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-scale/src/nice.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","../node_modules/d3-scale/src/time.js","../src/util/getRange.js","../src/api/autoscale.js","../src/api/brushable.js","../src/api/commonScale.js","../src/api/computeRealCentroids.js","../src/api/applyDimensionDefaults.js","../src/api/createAxes.js","../src/api/axisDots.js","../node_modules/d3-axis/src/array.js","../node_modules/d3-axis/src/identity.js","../node_modules/d3-axis/src/axis.js","../src/api/applyAxisConfig.js","../src/api/reorderable.js","../src/api/resize.js","../src/api/reorder.js","../src/api/sortDimensions.js","../src/api/sortDimensionsByRowData.js","../src/util/isBrushed.js","../src/api/clear.js","../node_modules/sylvester-es6/src/PRECISION.js","../node_modules/sylvester-es6/src/Matrix.js","../node_modules/sylvester-es6/src/Vector.js","../src/util/computeCentroids.js","../src/util/computeControlPoints.js","../src/util/colorPath.js","../src/util/functor.js","../src/api/renderMarked.js","../src/api/renderBrushed.js","../src/api/brushReset.js","../src/api/toType.js","../src/api/toString.js","../src/api/adjacentPairs.js","../src/api/highlight.js","../src/api/unhighlight.js","../src/api/mark.js","../src/api/unmark.js","../src/api/removeAxes.js","../src/api/render.js","../src/api/renderDefault.js","../src/api/toTypeCoerceNumbers.js","../src/api/detectDimensionTypes.js","../src/api/getOrderedDimensionKeys.js","../src/api/interactive.js","../src/api/shadows.js","../src/api/init.js","../src/api/flip.js","../src/api/detectDimensions.js","../src/api/scale.js","../src/state/defaultConfig.js","../src/state/index.js","../src/util/computeClusterCentroids.js","../src/state/sideEffects.js","../src/util/getset.js","../src/bindEvents.js","../src/index.js"],"sourcesContent":["/**\n * requestAnimationFrame version: \"0.0.23\" Copyright (c) 2011-2012, Cyril Agosta ( cyril.agosta.dev@gmail.com) All Rights Reserved.\n * Available via the MIT license.\n * see: http://github.com/cagosta/requestAnimationFrame for details\n *\n * http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n * http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n * requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel\n * MIT license\n *\n */\n\n\n( function( global ) {\n\n\n ( function() {\n\n\n if ( global.requestAnimationFrame ) {\n\n return;\n\n }\n\n if ( global.webkitRequestAnimationFrame ) { // Chrome <= 23, Safari <= 6.1, Blackberry 10\n\n global.requestAnimationFrame = global[ 'webkitRequestAnimationFrame' ];\n global.cancelAnimationFrame = global[ 'webkitCancelAnimationFrame' ] || global[ 'webkitCancelRequestAnimationFrame' ];\n return;\n\n }\n\n // IE <= 9, Android <= 4.3, very old/rare browsers\n\n var lastTime = 0;\n\n global.requestAnimationFrame = function( callback ) {\n\n var currTime = new Date().getTime();\n\n var timeToCall = Math.max( 0, 16 - ( currTime - lastTime ) );\n\n var id = global.setTimeout( function() {\n\n callback( currTime + timeToCall );\n\n }, timeToCall );\n\n lastTime = currTime + timeToCall;\n\n return id; // return the id for cancellation capabilities\n\n };\n\n global.cancelAnimationFrame = function( id ) {\n\n clearTimeout( id );\n\n };\n\n } )();\n\n if ( typeof define === 'function' ) {\n\n define( function() {\n\n return global.requestAnimationFrame;\n\n } );\n\n }\n\n} )( window );","import 'requestanimationframe';\n\nconst renderQueue = function(func) {\n let _queue = [], // data to be rendered\n _rate = 1000, // number of calls per frame\n _invalidate = function() {}, // invalidate last render queue\n _clear = function() {}; // clearing function\n\n let rq = function(data) {\n if (data) rq.data(data);\n _invalidate();\n _clear();\n rq.render();\n };\n\n rq.render = function() {\n let valid = true;\n _invalidate = rq.invalidate = function() {\n valid = false;\n };\n\n function doFrame() {\n if (!valid) return true;\n let chunk = _queue.splice(0, _rate);\n chunk.map(func);\n requestAnimationFrame(doFrame);\n }\n\n doFrame();\n };\n\n rq.data = function(data) {\n _invalidate();\n _queue = data.slice(0); // creates a copy of the data\n return rq;\n };\n\n rq.add = function(data) {\n _queue = _queue.concat(data);\n };\n\n rq.rate = function(value) {\n if (!arguments.length) return _rate;\n _rate = value;\n return rq;\n };\n\n rq.remaining = function() {\n return _queue.length;\n };\n\n // clear the canvas\n rq.clear = function(func) {\n if (!arguments.length) {\n _clear();\n return rq;\n }\n _clear = func;\n return rq;\n };\n\n rq.invalidate = _invalidate;\n\n return rq;\n};\n\nexport default renderQueue;\n","const w = config => config.width - config.margin.right - config.margin.left;\n\nexport default w;\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","var matcher = function(selector) {\n return function() {\n return this.matches(selector);\n };\n};\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!element.matches) {\n var vendorMatches = element.webkitMatchesSelector\n || element.msMatchesSelector\n || element.mozMatchesSelector\n || element.oMatchesSelector;\n matcher = function(selector) {\n return function() {\n return vendorMatches.call(this, selector);\n };\n };\n }\n}\n\nexport default matcher;\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","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 && next !== node.nextSibling) 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 return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\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_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 merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","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","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 _)) 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","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\";\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\";\nimport noevent, {nopropagation} from \"./noevent\";\nimport constant from \"./constant\";\nimport DragEvent from \"./event\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !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 \"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","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\";\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 reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\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 displayable: function() {\n return this.rgb().displayable();\n },\n hex: function() {\n return this.rgb().hex();\n },\n toString: function() {\n return this.rgb() + \"\";\n }\n});\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\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])\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (0 <= this.r && this.r <= 255)\n && (0 <= this.g && this.g <= 255)\n && (0 <= this.b && this.b <= 255)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: function() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n },\n toString: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n }\n}));\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 var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://beta.observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n }\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: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new 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.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\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\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return labConvert(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\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) * rad2deg - 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: function(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: function(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: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new 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 default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\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\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\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","import value from \"./value\";\n\nexport default function(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 -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import value from \"./value\";\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\";\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\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\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 : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + 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\";\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\";\nimport {parseCss, parseSvg} from \"./parse\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer\";\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\", \"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 > STARTING) throw new Error(\"too late; already started\");\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 // Dispatch the interrupt event.\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. No interrupt event is dispatched\n // because the cancelled transitions never started. Note that this also\n // removes this transition from the pending list!\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\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(null, 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\";\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 if (active) schedule.on.call(\"interrupt\", 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\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {get, set} from \"./schedule\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","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\";\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 reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\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 displayable: function() {\n return this.rgb().displayable();\n },\n toString: function() {\n return this.rgb() + \"\";\n }\n});\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\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])\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (0 <= this.r && this.r <= 255)\n && (0 <= this.g && this.g <= 255)\n && (0 <= this.b && this.b <= 255)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n toString: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n }\n}));\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 var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\nvar Kn = 18,\n Xn = 0.950470, // D65 standard referent\n Yn = 1,\n Zn = 1.088830,\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) {\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n }\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var b = rgb2xyz(o.r),\n a = rgb2xyz(o.g),\n l = rgb2xyz(o.b),\n x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),\n y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),\n z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.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: function(k) {\n return new Lab(this.l + Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n y = Yn * lab2xyz(y);\n x = Xn * lab2xyz(x);\n z = Zn * lab2xyz(z);\n return new Rgb(\n xyz2rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),\n xyz2rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * 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 xyz2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2xyz(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 var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\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\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + Kn * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - Kn * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return labConvert(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\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) * rad2deg - 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: function(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: function(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: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new 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","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\";\nimport interpolate from \"./interpolate\";\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 value00,\n interpolate0;\n return function() {\n var value0 = this.getAttribute(name);\n return value0 === value1 ? null\n : value0 === value00 ? interpolate0\n : interpolate0 = interpolate(value00 = value0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var value00,\n interpolate0;\n return function() {\n var value0 = this.getAttributeNS(fullname.space, fullname.local);\n return value0 === value1 ? null\n : value0 === value00 ? interpolate0\n : interpolate0 = interpolate(value00 = value0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var value00,\n value10,\n interpolate0;\n return function() {\n var value0, value1 = value(this);\n if (value1 == null) return void this.removeAttribute(name);\n value0 = this.getAttribute(name);\n return value0 === value1 ? null\n : value0 === value00 && value1 === value10 ? interpolate0\n : interpolate0 = interpolate(value00 = value0, value10 = value1);\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var value00,\n value10,\n interpolate0;\n return function() {\n var value0, value1 = value(this);\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n value0 = this.getAttributeNS(fullname.space, fullname.local);\n return value0 === value1 ? null\n : value0 === value00 && value1 === value10 ? interpolate0\n : interpolate0 = interpolate(value00 = value0, value10 = 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 attrTweenNS(fullname, value) {\n function tween() {\n var node = this, i = value.apply(node, arguments);\n return i && function(t) {\n node.setAttributeNS(fullname.space, fullname.local, i(t));\n };\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n function tween() {\n var node = this, i = value.apply(node, arguments);\n return i && function(t) {\n node.setAttribute(name, i(t));\n };\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\";\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\";\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\";\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\";\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\";\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\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\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\";\nimport schedule, {get} from \"./schedule\";\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 {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction styleRemove(name, interpolate) {\n var value00,\n value10,\n interpolate0;\n return function() {\n var value0 = style(this, name),\n value1 = (this.style.removeProperty(name), style(this, name));\n return value0 === value1 ? null\n : value0 === value00 && value1 === value10 ? interpolate0\n : interpolate0 = interpolate(value00 = value0, value10 = value1);\n };\n}\n\nfunction styleRemoveEnd(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var value00,\n interpolate0;\n return function() {\n var value0 = style(this, name);\n return value0 === value1 ? null\n : value0 === value00 ? interpolate0\n : interpolate0 = interpolate(value00 = value0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var value00,\n value10,\n interpolate0;\n return function() {\n var value0 = style(this, name),\n value1 = value(this);\n if (value1 == null) value1 = (this.style.removeProperty(name), style(this, name));\n return value0 === value1 ? null\n : value0 === value00 && value1 === value10 ? interpolate0\n : interpolate0 = interpolate(value00 = value0, value10 = value1);\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleRemove(name, i))\n .on(\"end.style.\" + name, styleRemoveEnd(name))\n : this.styleTween(name, typeof value === \"function\"\n ? styleFunction(name, i, tweenValue(this, \"style.\" + name, value))\n : styleConstant(name, i, value + \"\"), priority);\n}\n","function styleTween(name, value, priority) {\n function tween() {\n var node = this, i = value.apply(node, arguments);\n return i && function(t) {\n node.style.setProperty(name, i(t), priority);\n };\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\";\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","import {Transition, newId} from \"./index\";\nimport schedule, {get} from \"./schedule\";\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 {selection} from \"d3-selection\";\nimport transition_attr from \"./attr\";\nimport transition_attrTween from \"./attrTween\";\nimport transition_delay from \"./delay\";\nimport transition_duration from \"./duration\";\nimport transition_ease from \"./ease\";\nimport transition_filter from \"./filter\";\nimport transition_merge from \"./merge\";\nimport transition_on from \"./on\";\nimport transition_remove from \"./remove\";\nimport transition_select from \"./select\";\nimport transition_selectAll from \"./selectAll\";\nimport transition_selection from \"./selection\";\nimport transition_style from \"./style\";\nimport transition_styleTween from \"./styleTween\";\nimport transition_text from \"./text\";\nimport transition_transition from \"./transition\";\nimport transition_tween from \"./tween\";\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 remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease\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 pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return 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","var 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 * Math.pow(2, 10 * --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 * Math.pow(2, -10 * (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 * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n : 2 - a * Math.pow(2, -10 * 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\";\nimport schedule from \"../transition/schedule\";\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\";\nimport selection_transition from \"./transition\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\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, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant\";\nimport BrushEvent from \"./event\";\nimport noevent, {nopropagation} from \"./noevent\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nvar X = {\n name: \"x\",\n handles: [\"e\", \"w\"].map(type),\n input: function(x, e) { return x && [[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 && [[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\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\"].map(type),\n input: function(xy) { return 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.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n listeners = dispatch(brush, \"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 .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\")\n .on(\"mousedown.brush touchstart.brush\", started);\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 && empty(selection1) ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 && selection1 ? 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 || empty(selection1) ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\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) {\n return that.__brush.emitter || new Emitter(that, args);\n }\n\n function Emitter(that, args) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\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 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 (event.touches) { if (event.changedTouches.length < event.touches.length) return noevent(); }\n else if (touchending) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (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,\n dy,\n moving,\n shifting = signX && signY && event.shiftKey,\n lockX,\n lockY,\n point0 = mouse(that),\n point = point0,\n emit = emitter(that, arguments).beforestart();\n\n if (type === \"overlay\") {\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 group\n .on(\"touchmove.brush\", moved, true)\n .on(\"touchend.brush touchcancel.brush\", ended, true);\n } else {\n var view = select(event.view)\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, 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 = mouse(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 group.on(\"touchmove.brush touchend.brush touchcancel.brush\", null);\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 initialize() {\n var state = this.__brush || {selection: null};\n state.extent = 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([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\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","const invertCategorical = (selection, scale) => {\n if (selection.length === 0) {\n return [];\n }\n const domain = scale.domain();\n const range = scale.range();\n const found = [];\n range.forEach((d, i) => {\n if (d >= selection[0] && d <= selection[1]) {\n found.push(domain[i]);\n }\n });\n return found;\n};\n\nconst invertByScale = (selection, scale) => {\n if (scale === null) return [];\n return typeof scale.invert === 'undefined'\n ? invertCategorical(selection, scale)\n : selection.map(d => scale.invert(d));\n};\n\nexport default invertByScale;\nexport { invertByScale };\n","import { select } from 'd3-selection';\nimport { brushSelection } from 'd3-brush';\n\nimport invertByScale from '../invertByScale';\n\nconst brushExtents = (state, config, pc) => extents => {\n const { brushes, brushNodes } = state;\n\n if (typeof extents === 'undefined') {\n return Object.keys(config.dimensions).reduce((acc, cur) => {\n const brush = brushes[cur];\n //todo: brush check\n if (brush !== undefined && brushSelection(brushNodes[cur]) !== null) {\n const raw = brushSelection(brushNodes[cur]);\n const yScale = config.dimensions[cur].yscale;\n const scaled = invertByScale(raw, yScale);\n\n acc[cur] = {\n extent: brush.extent(),\n selection: {\n raw,\n scaled,\n },\n };\n }\n\n return acc;\n }, {});\n } else {\n //first get all the brush selections\n const brushSelections = {};\n pc.g()\n .selectAll('.brush')\n .each(function(d) {\n brushSelections[d] = select(this);\n });\n\n // loop over each dimension and update appropriately (if it was passed in through extents)\n Object.keys(config.dimensions).forEach(d => {\n if (extents[d] === undefined) {\n return;\n }\n\n const brush = brushes[d];\n if (brush !== undefined) {\n const dim = config.dimensions[d];\n const yExtent = extents[d].map(dim.yscale);\n\n //update the extent\n //sets the brushable extent to the specified array of points [[x0, y0], [x1, y1]]\n //we actually don't need this since we are using brush.move below\n //extents set the limits of the brush which means a user will not be able\n //to move or drag the brush beyond the limits set by brush.extent\n //brush.extent([[-15, yExtent[1]], [15, yExtent[0]]]);\n\n //redraw the brush\n //https://github.com/d3/d3-brush#brush_move\n // For an x-brush, it must be defined as [x0, x1]; for a y-brush, it must be defined as [y0, y1].\n brushSelections[d].call(brush).call(brush.move, yExtent.reverse());\n\n //fire some events\n // brush.event(brushSelections[d]);\n }\n });\n\n //redraw the chart\n pc.renderBrushed();\n\n return pc;\n }\n};\n\nexport default brushExtents;\n","import { select } from 'd3-selection';\n\nconst brushReset = (state, config, pc) => dimension => {\n const { brushes } = state;\n\n if (dimension === undefined) {\n config.brushed = false;\n if (pc.g() !== undefined && pc.g() !== null) {\n pc.g()\n .selectAll('.brush')\n .each(function(d) {\n if (brushes[d] !== undefined) {\n select(this).call(brushes[d].move, null);\n }\n });\n pc.renderBrushed();\n }\n } else {\n config.brushed = false;\n if (pc.g() !== undefined && pc.g() !== null) {\n pc.g()\n .selectAll('.brush')\n .each(function(d) {\n if (d !== dimension) return;\n select(this).call(brushes[d].move, null);\n if (typeof brushes[d].type === 'function') {\n brushes[d].event(select(this));\n }\n });\n pc.renderBrushed();\n }\n }\n return this;\n};\n\nexport default brushReset;\n","import { brushSelection } from 'd3-brush';\n//https://github.com/d3/d3-brush/issues/10\n\n// data within extents\nconst selected = (state, config, brushGroup) => () => {\n const { brushNodes } = state;\n const is_brushed = p =>\n brushNodes[p] && brushSelection(brushNodes[p]) !== null;\n\n const actives = Object.keys(config.dimensions).filter(is_brushed);\n const extents = actives.map(p => {\n const _brushRange = brushSelection(brushNodes[p]);\n\n if (typeof config.dimensions[p].yscale.invert === 'function') {\n return [\n config.dimensions[p].yscale.invert(_brushRange[1]),\n config.dimensions[p].yscale.invert(_brushRange[0]),\n ];\n } else {\n return _brushRange;\n }\n });\n // We don't want to return the full data set when there are no axes brushed.\n // Actually, when there are no axes brushed, by definition, no items are\n // selected. So, let's avoid the filtering and just return false.\n //if (actives.length === 0) return false;\n\n // Resolves broken examples for now. They expect to get the full dataset back from empty brushes\n if (actives.length === 0) return config.data;\n\n // test if within range\n const within = {\n date: (d, p, dimension) => {\n if (typeof config.dimensions[p].yscale.bandwidth === 'function') {\n // if it is ordinal\n return (\n extents[dimension][0] <= config.dimensions[p].yscale(d[p]) &&\n config.dimensions[p].yscale(d[p]) <= extents[dimension][1]\n );\n } else {\n return extents[dimension][0] <= d[p] && d[p] <= extents[dimension][1];\n }\n },\n number: (d, p, dimension) => {\n if (typeof config.dimensions[p].yscale.bandwidth === 'function') {\n // if it is ordinal\n return (\n extents[dimension][0] <= config.dimensions[p].yscale(d[p]) &&\n config.dimensions[p].yscale(d[p]) <= extents[dimension][1]\n );\n } else {\n return extents[dimension][0] <= d[p] && d[p] <= extents[dimension][1];\n }\n },\n string: (d, p, dimension) => {\n return (\n extents[dimension][0] <= config.dimensions[p].yscale(d[p]) &&\n config.dimensions[p].yscale(d[p]) <= extents[dimension][1]\n );\n },\n };\n\n return config.data.filter(d => {\n switch (brushGroup.predicate) {\n case 'AND':\n return actives.every(function(p, dimension) {\n return within[config.dimensions[p].type](d, p, dimension);\n });\n case 'OR':\n return actives.some(function(p, dimension) {\n return within[config.dimensions[p].type](d, p, dimension);\n });\n default:\n throw new Error('Unknown brush predicate ' + config.brushPredicate);\n }\n });\n};\n\nexport default selected;\n","import { brushY, brushSelection } from 'd3-brush';\nimport { event } from 'd3-selection';\nimport invertByScale from '../invertByScale';\nimport selected from './selected';\n\nconst brushUpdated = (config, pc, events, args) => newSelection => {\n config.brushed = newSelection;\n events.call('brush', pc, config.brushed, args);\n pc.renderBrushed();\n};\n\nconst brushFor = (state, config, pc, events, brushGroup) => (\n axis,\n _selector\n) => {\n // handle hidden axes which will not be a property of dimensions\n if (!config.dimensions.hasOwnProperty(axis)) {\n return () => {};\n }\n\n const brushRangeMax =\n config.dimensions[axis].type === 'string'\n ? config.dimensions[axis].yscale.range()[\n config.dimensions[axis].yscale.range().length - 1\n ]\n : config.dimensions[axis].yscale.range()[0];\n\n const _brush = brushY(_selector).extent([[-15, 0], [15, brushRangeMax]]);\n\n const convertBrushArguments = args => {\n const args_array = Array.prototype.slice.call(args);\n const axis = args_array[0];\n\n const raw = brushSelection(args_array[2][0]) || [];\n\n // handle hidden axes which will not have a yscale\n let yscale = null;\n if (config.dimensions.hasOwnProperty(axis)) {\n yscale = config.dimensions[axis].yscale;\n }\n\n // ordinal scales do not have invert\n const scaled = invertByScale(raw, yscale);\n\n return {\n axis: args_array[0],\n node: args_array[2][0],\n selection: {\n raw,\n scaled,\n },\n };\n };\n\n _brush\n .on('start', function() {\n if (event.sourceEvent !== null) {\n events.call(\n 'brushstart',\n pc,\n config.brushed,\n convertBrushArguments(arguments)\n );\n if (typeof event.sourceEvent.stopPropagation === 'function') {\n event.sourceEvent.stopPropagation();\n }\n }\n })\n .on('brush', function() {\n brushUpdated(\n config,\n pc,\n events,\n convertBrushArguments(arguments)\n )(selected(state, config, brushGroup)());\n })\n .on('end', function() {\n brushUpdated(config, pc, events)(selected(state, config, brushGroup)());\n events.call(\n 'brushend',\n pc,\n config.brushed,\n convertBrushArguments(arguments)\n );\n });\n\n state.brushes[axis] = _brush;\n state.brushNodes[axis] = _selector.node();\n\n return _brush;\n};\n\nexport default brushFor;\n","import { select } from 'd3-selection';\nimport brushExtents from './brushExtents';\nimport brushReset from './brushReset';\nimport brushFor from './brushFor';\n\nconst install = (state, config, pc, events, brushGroup) => () => {\n if (!pc.g()) {\n pc.createAxes();\n }\n\n // Add and store a brush for each axis.\n const brush = pc\n .g()\n .append('svg:g')\n .attr('class', 'brush')\n .each(function(d) {\n select(this).call(\n brushFor(state, config, pc, events, brushGroup)(d, select(this))\n );\n });\n brush\n .selectAll('rect')\n .style('visibility', null)\n .attr('x', -15)\n .attr('width', 30);\n\n brush.selectAll('rect.background').style('fill', 'transparent');\n\n brush\n .selectAll('rect.extent')\n .style('fill', 'rgba(255,255,255,0.25)')\n .style('stroke', 'rgba(0,0,0,0.6)');\n\n brush.selectAll('.resize rect').style('fill', 'rgba(0,0,0,0.1)');\n\n pc.brushExtents = brushExtents(state, config, pc);\n pc.brushReset = brushReset(state, config, pc);\n return pc;\n};\n\nexport default install;\n","const uninstall = (state, pc) => () => {\n if (pc.g() !== undefined && pc.g() !== null)\n pc.g()\n .selectAll('.brush')\n .remove();\n\n state.brushes = {};\n delete pc.brushExtents;\n delete pc.brushReset;\n};\n\nexport default uninstall;\n","import brushExtents from './brushExtents';\nimport install from './install';\nimport selected from './selected';\nimport uninstall from './uninstall';\n\nconst install1DAxes = (brushGroup, config, pc, events) => {\n const state = {\n brushes: {},\n brushNodes: {},\n };\n\n brushGroup.modes['1D-axes'] = {\n install: install(state, config, pc, events, brushGroup),\n uninstall: uninstall(state, pc),\n selected: selected(state, config, brushGroup),\n brushState: brushExtents(state, config, pc),\n };\n};\n\nexport default install1DAxes;\n","import { select } from 'd3-selection';\n\nconst drawBrushes = (brushes, config, pc, axis, selector) => {\n const brushSelection = selector.selectAll('.brush').data(brushes, d => d.id);\n\n brushSelection\n .enter()\n .insert('g', '.brush')\n .attr('class', 'brush')\n .attr('dimension', axis)\n .attr(\n 'id',\n b => 'brush-' + Object.keys(config.dimensions).indexOf(axis) + '-' + b.id\n )\n .each(function(brushObject) {\n brushObject.brush(select(this));\n });\n\n brushSelection.each(function(brushObject) {\n select(this)\n .attr('class', 'brush')\n .selectAll('.overlay')\n .style('pointer-events', function() {\n const brush = brushObject.brush;\n if (brushObject.id === brushes.length - 1 && brush !== undefined) {\n return 'all';\n } else {\n return 'none';\n }\n });\n });\n\n brushSelection.exit().remove();\n};\n\nexport default drawBrushes;\n","import { brushSelection } from 'd3-brush';\n\n// data within extents\nconst selected = (state, config, pc, events, brushGroup) => {\n const { brushes } = state;\n\n const is_brushed = (p, pos) => {\n const axisBrushes = brushes[p];\n\n for (let i = 0; i < axisBrushes.length; i++) {\n const brush = document.getElementById('brush-' + pos + '-' + i);\n\n if (brush && brushSelection(brush) !== null) {\n return true;\n }\n }\n\n return false;\n };\n\n const actives = Object.keys(config.dimensions).filter(is_brushed);\n const extents = actives.map(p => {\n const axisBrushes = brushes[p];\n\n return axisBrushes\n .filter(d => !pc.hideAxis().includes(d))\n .map((d, i) =>\n brushSelection(\n document.getElementById(\n 'brush-' + Object.keys(config.dimensions).indexOf(p) + '-' + i\n )\n )\n )\n .map((d, i) => {\n if (d === null || d === undefined) {\n return null;\n } else if (typeof config.dimensions[p].yscale.invert === 'function') {\n return [\n config.dimensions[p].yscale.invert(d[1]),\n config.dimensions[p].yscale.invert(d[0]),\n ];\n } else {\n return d;\n }\n });\n });\n\n // We don't want to return the full data set when there are no axes brushed.\n // Actually, when there are no axes brushed, by definition, no items are\n // selected. So, let's avoid the filtering and just return false.\n //if (actives.length === 0) return false;\n\n // Resolves broken examples for now. They expect to get the full dataset back from empty brushes\n if (actives.length === 0) return config.data;\n\n // test if within range\n const within = {\n date: (d, p, i) => {\n const dimExt = extents[i];\n\n if (typeof config.dimensions[p].yscale.bandwidth === 'function') {\n // if it is ordinal\n for (const e of dimExt) {\n if (e === null || e === undefined) {\n continue;\n }\n\n if (\n e[0] <= config.dimensions[p].yscale(d[p]) &&\n config.dimensions[p].yscale(d[p]) <= e[1]\n ) {\n return true;\n }\n }\n\n return false;\n } else {\n for (const e of dimExt) {\n if (e === null || e === undefined) {\n continue;\n }\n\n if (e[0] <= d[p] && d[p] <= e[1]) {\n return true;\n }\n }\n\n return false;\n }\n },\n number: (d, p, i) => {\n const dimExt = extents[i];\n\n if (typeof config.dimensions[p].yscale.bandwidth === 'function') {\n // if it is ordinal\n for (const e of dimExt) {\n if (e === null || e === undefined) {\n continue;\n }\n\n if (\n e[0] <= config.dimensions[p].yscale(d[p]) &&\n config.dimensions[p].yscale(d[p]) <= e[1]\n ) {\n return true;\n }\n }\n\n return false;\n } else {\n for (const e of dimExt) {\n if (e === null || e === undefined) {\n continue;\n }\n\n if (e[0] <= d[p] && d[p] <= e[1]) {\n return true;\n }\n }\n\n return false;\n }\n },\n string: (d, p, i) => {\n const dimExt = extents[i];\n\n for (const e of dimExt) {\n if (e === null || e === undefined) {\n continue;\n }\n\n if (\n e[0] <= config.dimensions[p].yscale(d[p]) &&\n config.dimensions[p].yscale(d[p]) <= e[1]\n ) {\n return true;\n }\n }\n\n return false;\n },\n };\n\n return config.data.filter(d => {\n switch (brushGroup.predicate) {\n case 'AND':\n return actives.every((p, i) =>\n within[config.dimensions[p].type](d, p, i)\n );\n case 'OR':\n return actives.some((p, i) =>\n within[config.dimensions[p].type](d, p, i)\n );\n default:\n throw new Error('Unknown brush predicate ' + config.brushPredicate);\n }\n });\n};\n\nexport default selected;\n","import { brushY, brushSelection } from 'd3-brush';\nimport { event, select } from 'd3-selection';\nimport drawBrushes from './drawBrushes';\nimport selected from './selected';\n\nconst brushUpdated = (config, pc, events) => newSelection => {\n config.brushed = newSelection;\n events.call('brush', pc, config.brushed);\n pc.renderBrushed();\n};\n\nconst newBrush = (state, config, pc, events, brushGroup) => (\n axis,\n _selector\n) => {\n const { brushes, brushNodes } = state;\n\n const brushRangeMax =\n config.dimensions[axis].type === 'string'\n ? config.dimensions[axis].yscale.range()[\n config.dimensions[axis].yscale.range().length - 1\n ]\n : config.dimensions[axis].yscale.range()[0];\n\n const brush = brushY().extent([[-15, 0], [15, brushRangeMax]]);\n const id = brushes[axis] ? brushes[axis].length : 0;\n const node =\n 'brush-' + Object.keys(config.dimensions).indexOf(axis) + '-' + id;\n\n if (brushes[axis]) {\n brushes[axis].push({\n id,\n brush,\n node,\n });\n } else {\n brushes[axis] = [{ id, brush, node }];\n }\n\n if (brushNodes[axis]) {\n brushNodes[axis].push({ id, node });\n } else {\n brushNodes[axis] = [{ id, node }];\n }\n\n brush\n .on('start', function() {\n if (event.sourceEvent !== null) {\n events.call('brushstart', pc, config.brushed);\n if (typeof event.sourceEvent.stopPropagation === 'function') {\n event.sourceEvent.stopPropagation();\n }\n }\n })\n .on('brush', function(e) {\n // record selections\n brushUpdated(\n config,\n pc,\n events\n )(selected(state, config, pc, events, brushGroup));\n })\n .on('end', function() {\n // Figure out if our latest brush has a selection\n const lastBrushID = brushes[axis][brushes[axis].length - 1].id;\n const lastBrush = document.getElementById(\n 'brush-' +\n Object.keys(config.dimensions).indexOf(axis) +\n '-' +\n lastBrushID\n );\n const selection = brushSelection(lastBrush);\n\n if (\n selection !== undefined &&\n selection !== null &&\n selection[0] !== selection[1]\n ) {\n newBrush(state, config, pc, events, brushGroup)(axis, _selector);\n\n drawBrushes(brushes[axis], config, pc, axis, _selector);\n\n brushUpdated(config, pc, events)(\n selected(state, config, pc, events, brushGroup)\n );\n } else {\n if (\n event.sourceEvent &&\n event.sourceEvent.toString() === '[object MouseEvent]' &&\n event.selection === null\n ) {\n pc.brushReset(axis);\n }\n }\n\n events.call('brushend', pc, config.brushed);\n });\n\n return brush;\n};\n\nexport default newBrush;\n","import { select } from 'd3-selection';\nimport { brushSelection } from 'd3-brush';\nimport newBrush from './newBrush';\nimport drawBrushes from './drawBrushes';\nimport invertByScale from '../invertByScale';\n\n/**\n *\n * extents are in format of [[2,6], [3,5]]\n *\n * * @param state\n * @param config\n * @param pc\n * @returns {Function}\n */\nconst brushExtents = (state, config, pc, events, brushGroup) => extents => {\n const { brushes } = state;\n const hiddenAxes = pc.hideAxis();\n\n if (typeof extents === 'undefined') {\n return Object.keys(config.dimensions)\n .filter(d => !hiddenAxes.includes(d))\n .reduce((acc, cur, pos) => {\n const axisBrushes = brushes[cur];\n\n if (axisBrushes === undefined || axisBrushes === null) {\n acc[cur] = [];\n } else {\n acc[cur] = axisBrushes.reduce((d, p, i) => {\n const raw = brushSelection(\n document.getElementById('brush-' + pos + '-' + i)\n );\n\n if (raw) {\n const yScale = config.dimensions[cur].yscale;\n const scaled = invertByScale(raw, yScale);\n\n d.push({\n extent: p.brush.extent(),\n selection: {\n raw,\n scaled,\n },\n });\n }\n return d;\n }, []);\n }\n\n return acc;\n }, {});\n } else {\n // //first get all the brush selections\n // loop over each dimension and update appropriately (if it was passed in through extents)\n Object.keys(config.dimensions).forEach((d, pos) => {\n if (extents[d] === undefined || extents[d] === null) {\n return;\n }\n\n const dim = config.dimensions[d];\n\n const yExtents = extents[d].map(e => e.map(dim.yscale));\n\n const _bs = yExtents.map((e, j) => {\n const _brush = newBrush(state, config, pc, events, brushGroup)(\n d,\n select('#brush-group-' + pos)\n );\n //update the extent\n //sets the brushable extent to the specified array of points [[x0, y0], [x1, y1]]\n _brush.extent([[-15, e[1]], [15, e[0]]]);\n\n return {\n id: j,\n brush: _brush,\n ext: e,\n };\n });\n\n brushes[d] = _bs;\n\n drawBrushes(_bs, config, pc, d, select('#brush-group-' + pos));\n\n //redraw the brush\n //https://github.com/d3/d3-brush#brush_move\n // For an x-brush, it must be defined as [x0, x1]; for a y-brush, it must be defined as [y0, y1].\n _bs.forEach((f, k) => {\n select('#brush-' + pos + '-' + k)\n .call(f.brush)\n .call(f.brush.move, f.ext.reverse());\n });\n });\n\n //redraw the chart\n pc.renderBrushed();\n\n return pc;\n }\n};\n\nexport default brushExtents;\n","import { select } from 'd3-selection';\nimport { brushSelection } from 'd3-brush';\n\nconst brushReset = (state, config, pc) => dimension => {\n const { brushes } = state;\n\n if (dimension === undefined) {\n if (pc.g() !== undefined && pc.g() !== null) {\n Object.keys(config.dimensions).forEach((d, pos) => {\n const axisBrush = brushes[d];\n\n // hidden axes will be undefined\n if (axisBrush) {\n axisBrush.forEach((e, i) => {\n const brush = document.getElementById('brush-' + pos + '-' + i);\n if (brush && brushSelection(brush) !== null) {\n pc.g()\n .select('#brush-' + pos + '-' + i)\n .call(e.brush.move, null);\n }\n });\n }\n });\n\n pc.renderBrushed();\n }\n } else {\n if (pc.g() !== undefined && pc.g() !== null) {\n const axisBrush = brushes[dimension];\n const pos = Object.keys(config.dimensions).indexOf(dimension);\n\n if (axisBrush) {\n axisBrush.forEach((e, i) => {\n const brush = document.getElementById('brush-' + pos + '-' + i);\n if (brushSelection(brush) !== null) {\n pc.g()\n .select('#brush-' + pos + '-' + i)\n .call(e.brush.move, null);\n\n if (typeof e.event === 'function') {\n e.event(select('#brush-' + pos + '-' + i));\n }\n }\n });\n }\n\n pc.renderBrushed();\n }\n }\n return this;\n};\n\nexport default brushReset;\n","import newBrush from './newBrush';\nimport drawBrushes from './drawBrushes';\n\nconst brushFor = (state, config, pc, events, brushGroup) => (\n axis,\n _selector\n) => {\n const { brushes } = state;\n newBrush(state, config, pc, events, brushGroup)(axis, _selector);\n drawBrushes(brushes[axis], config, pc, axis, _selector);\n};\n\nexport default brushFor;\n","import { select } from 'd3-selection';\nimport brushExtents from './brushExtents';\nimport brushReset from './brushReset';\nimport brushFor from './brushFor';\n\nconst install = (state, config, pc, events, brushGroup) => () => {\n if (!pc.g()) {\n pc.createAxes();\n }\n\n const hiddenAxes = pc.hideAxis();\n\n pc.g()\n .append('svg:g')\n .attr('id', (d, i) => 'brush-group-' + i)\n .attr('class', 'brush-group')\n .attr('dimension', d => d)\n .each(function(d) {\n if (!hiddenAxes.includes(d)) {\n brushFor(state, config, pc, events, brushGroup)(d, select(this));\n }\n });\n\n pc.brushExtents = brushExtents(state, config, pc, events, brushGroup);\n pc.brushReset = brushReset(state, config, pc);\n return pc;\n};\n\nexport default install;\n","const uninstall = (state, pc) => () => {\n if (pc.g() !== undefined && pc.g() !== null)\n pc.g()\n .selectAll('.brush-group')\n .remove();\n\n state.brushes = {};\n delete pc.brushExtents;\n delete pc.brushReset;\n};\n\nexport default uninstall;\n","import brushExtents from './brushExtents';\nimport install from './install';\nimport selected from './selected';\nimport uninstall from './uninstall';\n\nconst install1DMultiAxes = (brushGroup, config, pc, events) => {\n const state = {\n brushes: {},\n brushNodes: {},\n };\n\n brushGroup.modes['1D-axes-multi'] = {\n install: install(state, config, pc, events, brushGroup),\n uninstall: uninstall(state, pc),\n selected: selected(state, config, brushGroup),\n brushState: brushExtents(state, config, pc),\n };\n};\n\nexport default install1DMultiAxes;\n","const uninstall = (state, pc) => () => {\n pc.selection\n .select('svg')\n .select('g#strums')\n .remove();\n pc.selection\n .select('svg')\n .select('rect#strum-events')\n .remove();\n pc.on('axesreorder.strums', undefined);\n delete pc.brushReset;\n\n state.strumRect = undefined;\n};\n\nexport default uninstall;\n","// test if point falls between lines\nconst containmentTest = (strum, width) => p => {\n const p1 = [strum.p1[0] - strum.minX, strum.p1[1] - strum.minX],\n p2 = [strum.p2[0] - strum.minX, strum.p2[1] - strum.minX],\n m1 = 1 - width / p1[0],\n b1 = p1[1] * (1 - m1),\n m2 = 1 - width / p2[0],\n b2 = p2[1] * (1 - m2);\n\n const x = p[0],\n y = p[1],\n y1 = m1 * x + b1,\n y2 = m2 * x + b2;\n\n return y > Math.min(y1, y2) && y < Math.max(y1, y2);\n};\n\nconst crossesStrum = (state, config) => (d, id) => {\n let strum = state.strums[id],\n test = containmentTest(strum, state.strums.width(id)),\n d1 = strum.dims.left,\n d2 = strum.dims.right,\n y1 = config.dimensions[d1].yscale,\n y2 = config.dimensions[d2].yscale,\n point = [y1(d[d1]) - strum.minX, y2(d[d2]) - strum.minX];\n return test(point);\n};\n\nconst selected = (brushGroup, state, config) => {\n // Get the ids of the currently active strums.\n const ids = Object.getOwnPropertyNames(state.strums).filter(d => !isNaN(d)),\n brushed = config.data;\n\n if (ids.length === 0) {\n return brushed;\n }\n\n const crossTest = crossesStrum(state, config);\n\n return brushed.filter(d => {\n switch (brushGroup.predicate) {\n case 'AND':\n return ids.every(id => crossTest(d, id));\n case 'OR':\n return ids.some(id => crossTest(d, id));\n default:\n throw new Error('Unknown brush predicate ' + config.brushPredicate);\n }\n });\n};\n\nexport default selected;\n","const removeStrum = (state, pc) => {\n const strum = state.strums[state.strums.active],\n svg = pc.selection.select('svg').select('g#strums');\n\n delete state.strums[state.strums.active];\n svg.selectAll('line#strum-' + strum.dims.i).remove();\n svg.selectAll('circle#strum-' + strum.dims.i).remove();\n};\n\nexport default removeStrum;\n","import selected from './selected';\nimport removeStrum from './removeStrum';\n\nconst onDragEnd = (brushGroup, state, config, pc, events) => () => {\n const strum = state.strums[state.strums.active];\n\n // Okay, somewhat unexpected, but not totally unsurprising, a mousclick is\n // considered a drag without move. So we have to deal with that case\n if (strum && strum.p1[0] === strum.p2[0] && strum.p1[1] === strum.p2[1]) {\n removeStrum(state, pc);\n }\n\n const brushed = selected(brushGroup, state, config);\n state.strums.active = undefined;\n config.brushed = brushed;\n pc.renderBrushed();\n events.call('brushend', pc, config.brushed);\n};\n\nexport default onDragEnd;\n","import { event, select } from 'd3-selection';\nimport { drag } from 'd3-drag';\nimport onDragEnd from './onDragEnd';\n\nconst drawStrum = (\n brushGroup,\n state,\n config,\n pc,\n events,\n strum,\n activePoint\n) => {\n let _svg = pc.selection.select('svg').select('g#strums'),\n id = strum.dims.i,\n points = [strum.p1, strum.p2],\n _line = _svg.selectAll('line#strum-' + id).data([strum]),\n circles = _svg.selectAll('circle#strum-' + id).data(points),\n _drag = drag();\n\n _line\n .enter()\n .append('line')\n .attr('id', 'strum-' + id)\n .attr('class', 'strum');\n\n _line\n .attr('x1', d => d.p1[0])\n .attr('y1', d => d.p1[1])\n .attr('x2', d => d.p2[0])\n .attr('y2', d => d.p2[1])\n .attr('stroke', 'black')\n .attr('stroke-width', 2);\n\n _drag\n .on('drag', function(d, i) {\n const ev = event;\n i = i + 1;\n strum['p' + i][0] = Math.min(Math.max(strum.minX + 1, ev.x), strum.maxX);\n strum['p' + i][1] = Math.min(Math.max(strum.minY, ev.y), strum.maxY);\n drawStrum(brushGroup, state, config, pc, events, strum, i - 1);\n })\n .on('end', onDragEnd(brushGroup, state, config, pc, events));\n\n circles\n .enter()\n .append('circle')\n .attr('id', 'strum-' + id)\n .attr('class', 'strum');\n\n circles\n .attr('cx', d => d[0])\n .attr('cy', d => d[1])\n .attr('r', 5)\n .style(\n 'opacity',\n (d, i) => (activePoint !== undefined && i === activePoint ? 0.8 : 0)\n )\n .on('mouseover', function() {\n select(this).style('opacity', 0.8);\n })\n .on('mouseout', function() {\n select(this).style('opacity', 0);\n })\n .call(_drag);\n};\n\nconst onDrag = (brushGroup, state, config, pc, events) => () => {\n const ev = event,\n strum = state.strums[state.strums.active];\n\n // Make sure that the point is within the bounds\n strum.p2[0] = Math.min(\n Math.max(strum.minX + 1, ev.x - config.margin.left),\n strum.maxX\n );\n strum.p2[1] = Math.min(\n Math.max(strum.minY, ev.y - config.margin.top),\n strum.maxY\n );\n\n drawStrum(brushGroup, state, config, pc, events, strum, 1);\n};\n\nexport default onDrag;\n","const h = config => config.height - config.margin.top - config.margin.bottom;\n\nexport default h;\n","const dimensionsForPoint = (config, pc, xscale, p) => {\n const dims = { i: -1, left: undefined, right: undefined };\n Object.keys(config.dimensions).some((dim, i) => {\n if (xscale(dim) < p[0]) {\n dims.i = i;\n dims.left = dim;\n dims.right = Object.keys(config.dimensions)[\n pc.getOrderedDimensionKeys().indexOf(dim) + 1\n ];\n return false;\n }\n return true;\n });\n\n if (dims.left === undefined) {\n // Event on the left side of the first axis.\n dims.i = 0;\n dims.left = pc.getOrderedDimensionKeys()[0];\n dims.right = pc.getOrderedDimensionKeys()[1];\n } else if (dims.right === undefined) {\n // Event on the right side of the last axis\n dims.i = Object.keys(config.dimensions).length - 1;\n dims.right = dims.left;\n dims.left = pc.getOrderedDimensionKeys()[\n Object.keys(config.dimensions).length - 2\n ];\n }\n\n return dims;\n};\n\nexport default dimensionsForPoint;\n","import { mouse } from 'd3-selection';\nimport h from '../../util/height';\nimport dimensionsForPoint from '../dimensionsForPoint';\n\n// First we need to determine between which two axes the sturm was started.\n// This will determine the freedom of movement, because a strum can\n// logically only happen between two axes, so no movement outside these axes\n// should be allowed.\nconst onDragStart = (state, config, pc, xscale) => () => {\n let p = mouse(state.strumRect.node());\n\n p[0] = p[0] - config.margin.left;\n p[1] = p[1] - config.margin.top;\n\n const dims = dimensionsForPoint(config, pc, xscale, p);\n const strum = {\n p1: p,\n dims: dims,\n minX: xscale(dims.left),\n maxX: xscale(dims.right),\n minY: 0,\n maxY: h(config),\n };\n\n // Make sure that the point is within the bounds\n strum.p1[0] = Math.min(Math.max(strum.minX, p[0]), strum.maxX);\n strum.p2 = strum.p1.slice();\n\n state.strums[dims.i] = strum;\n state.strums.active = dims.i;\n};\n\nexport default onDragStart;\n","import onDragEnd from './onDragEnd';\nimport removeStrum from './removeStrum';\n\nconst brushReset = (brushGroup, state, config, pc, events) => () => {\n const ids = Object.getOwnPropertyNames(state.strums).filter(d => !isNaN(d));\n\n ids.forEach(d => {\n state.strums.active = d;\n removeStrum(state, pc);\n });\n onDragEnd(brushGroup, state, config, pc, events)();\n};\n\nexport default brushReset;\n","// Checks if the first dimension is directly left of the second dimension.\nconst consecutive = dimensions => (first, second) => {\n const keys = Object.keys(dimensions);\n\n return keys.some(\n (d, i) =>\n d === first ? i + i < keys.length && dimensions[i + 1] === second : false\n );\n};\n\nexport default consecutive;\n","import { drag } from 'd3-drag';\nimport onDragEnd from './onDragEnd';\nimport onDrag from './onDrag';\nimport onDragStart from './onDragStart';\nimport removeStrum from './removeStrum';\nimport brushReset from './brushReset';\nimport w from '../../util/width';\nimport h from '../../util/height';\nimport consecutive from '../consecutive';\n\nconst install = (brushGroup, state, config, pc, events, xscale) => () => {\n if (pc.g() === undefined || pc.g() === null) {\n pc.createAxes();\n }\n\n const _drag = drag();\n\n // Map of current strums. Strums are stored per segment of the PC. A segment,\n // being the area between two axes. The left most area is indexed at 0.\n state.strums.active = undefined;\n // Returns the width of the PC segment where currently a strum is being\n // placed. NOTE: even though they are evenly spaced in our current\n // implementation, we keep for when non-even spaced segments are supported as\n // well.\n state.strums.width = id =>\n state.strums[id] === undefined\n ? undefined\n : state.strums[id].maxX - state.strums[id].minX;\n\n pc.on('axesreorder.strums', () => {\n const ids = Object.getOwnPropertyNames(state.strums).filter(d => !isNaN(d));\n\n if (ids.length > 0) {\n // We have some strums, which might need to be removed.\n ids.forEach(d => {\n const dims = state.strums[d].dims;\n state.strums.active = d;\n // If the two dimensions of the current strum are not next to each other\n // any more, than we'll need to remove the strum. Otherwise we keep it.\n if (!consecutive(config.dimensions)(dims.left, dims.right)) {\n removeStrum(state, pc);\n }\n });\n onDragEnd(brushGroup, state, config, pc, events)();\n }\n });\n\n // Add a new svg group in which we draw the strums.\n pc.selection\n .select('svg')\n .append('g')\n .attr('id', 'strums')\n .attr(\n 'transform',\n 'translate(' + config.margin.left + ',' + config.margin.top + ')'\n );\n\n // Install the required brushReset function\n pc.brushReset = brushReset(brushGroup, state, config, pc, events);\n\n _drag\n .on('start', onDragStart(state, config, pc, xscale))\n .on('drag', onDrag(brushGroup, state, config, pc, events))\n .on('end', onDragEnd(brushGroup, state, config, pc, events));\n\n // NOTE: The styling needs to be done here and not in the css. This is because\n // for 1D brushing, the canvas layers should not listen to\n // pointer-events._.\n state.strumRect = pc.selection\n .select('svg')\n .insert('rect', 'g#strums')\n .attr('id', 'strum-events')\n .attr('x', config.margin.left)\n .attr('y', config.margin.top)\n .attr('width', w(config))\n .attr('height', h(config) + 2)\n .style('opacity', 0)\n .call(_drag);\n};\n\nexport default install;\n","import uninstall from './uninstall';\nimport install from './install';\nimport selected from './selected';\n\nconst install2DStrums = (brushGroup, config, pc, events, xscale) => {\n const state = {\n strums: {},\n strumRect: {},\n };\n\n brushGroup.modes['2D-strums'] = {\n install: install(brushGroup, state, config, pc, events, xscale),\n uninstall: uninstall(state, pc),\n selected: selected(brushGroup, state, config),\n brushState: () => state.strums,\n };\n};\n\nexport default install2DStrums;\n","const uninstall = (state, pc) => () => {\n pc.selection\n .select('svg')\n .select('g#arcs')\n .remove();\n pc.selection\n .select('svg')\n .select('rect#arc-events')\n .remove();\n pc.on('axesreorder.arcs', undefined);\n\n delete pc.brushReset;\n\n state.strumRect = undefined;\n};\n\nexport default uninstall;\n","const hypothenuse = (a, b) => Math.sqrt(a * a + b * b);\n\nexport default hypothenuse;\n","import hypothenuse from './util/hypothenuse';\n\n// [0, 2*PI] -> [-PI/2, PI/2]\nconst signedAngle = angle =>\n angle > Math.PI ? 1.5 * Math.PI - angle : 0.5 * Math.PI - angle;\n\n/**\n * angles are stored in radians from in [0, 2*PI], where 0 in 12 o'clock.\n * However, one can only select lines from 0 to PI, so we compute the\n * 'signed' angle, where 0 is the horizontal line (3 o'clock), and +/- PI/2\n * are 12 and 6 o'clock respectively.\n */\nconst containmentTest = arc => a => {\n let startAngle = signedAngle(arc.startAngle);\n let endAngle = signedAngle(arc.endAngle);\n\n if (startAngle > endAngle) {\n const tmp = startAngle;\n startAngle = endAngle;\n endAngle = tmp;\n }\n\n // test if segment angle is contained in angle interval\n return a >= startAngle && a <= endAngle;\n};\n\nconst crossesStrum = (state, config) => (d, id) => {\n const arc = state.arcs[id],\n test = containmentTest(arc),\n d1 = arc.dims.left,\n d2 = arc.dims.right,\n y1 = config.dimensions[d1].yscale,\n y2 = config.dimensions[d2].yscale,\n a = state.arcs.width(id),\n b = y1(d[d1]) - y2(d[d2]),\n c = hypothenuse(a, b),\n angle = Math.asin(b / c); // rad in [-PI/2, PI/2]\n return test(angle);\n};\n\nconst selected = (brushGroup, state, config) => {\n const ids = Object.getOwnPropertyNames(state.arcs).filter(d => !isNaN(d));\n const brushed = config.data;\n\n if (ids.length === 0) {\n return brushed;\n }\n\n const crossTest = crossesStrum(state, config);\n\n return brushed.filter(d => {\n switch (brushGroup.predicate) {\n case 'AND':\n return ids.every(id => crossTest(d, id));\n case 'OR':\n return ids.some(id => crossTest(d, id));\n default:\n throw new Error('Unknown brush predicate ' + config.brushPredicate);\n }\n });\n};\n\nexport default selected;\n","const removeStrum = (state, pc) => {\n const arc = state.arcs[state.arcs.active],\n svg = pc.selection.select('svg').select('g#arcs');\n\n delete state.arcs[state.arcs.active];\n state.arcs.active = undefined;\n svg.selectAll('line#arc-' + arc.dims.i).remove();\n svg.selectAll('circle#arc-' + arc.dims.i).remove();\n svg.selectAll('path#arc-' + arc.dims.i).remove();\n};\n\nexport default removeStrum;\n","import selected from './selected';\nimport removeStrum from './removeStrum';\n\nconst onDragEnd = (brushGroup, state, config, pc, events) => () => {\n const arc = state.arcs[state.arcs.active];\n\n // Okay, somewhat unexpected, but not totally unsurprising, a mousclick is\n // considered a drag without move. So we have to deal with that case\n if (arc && arc.p1[0] === arc.p2[0] && arc.p1[1] === arc.p2[1]) {\n removeStrum(state, pc);\n }\n\n if (arc) {\n const angle = state.arcs.startAngle(state.arcs.active);\n\n arc.startAngle = angle;\n arc.endAngle = angle;\n arc.arc\n .outerRadius(state.arcs.length(state.arcs.active))\n .startAngle(angle)\n .endAngle(angle);\n }\n\n state.arcs.active = undefined;\n config.brushed = selected(brushGroup, state, config);\n pc.renderBrushed();\n events.call('brushend', pc, config.brushed);\n};\n\nexport default onDragEnd;\n","import { event, select } from 'd3-selection';\nimport { drag } from 'd3-drag';\nimport onDragEnd from './onDragEnd';\n\nconst drawStrum = (brushGroup, state, config, pc, events, arc, activePoint) => {\n const svg = pc.selection.select('svg').select('g#arcs'),\n id = arc.dims.i,\n points = [arc.p2, arc.p3],\n _line = svg\n .selectAll('line#arc-' + id)\n .data([{ p1: arc.p1, p2: arc.p2 }, { p1: arc.p1, p2: arc.p3 }]),\n circles = svg.selectAll('circle#arc-' + id).data(points),\n _drag = drag(),\n _path = svg.selectAll('path#arc-' + id).data([arc]);\n\n _path\n .enter()\n .append('path')\n .attr('id', 'arc-' + id)\n .attr('class', 'arc')\n .style('fill', 'orange')\n .style('opacity', 0.5);\n\n _path\n .attr('d', arc.arc)\n .attr('transform', 'translate(' + arc.p1[0] + ',' + arc.p1[1] + ')');\n\n _line\n .enter()\n .append('line')\n .attr('id', 'arc-' + id)\n .attr('class', 'arc');\n\n _line\n .attr('x1', d => d.p1[0])\n .attr('y1', d => d.p1[1])\n .attr('x2', d => d.p2[0])\n .attr('y2', d => d.p2[1])\n .attr('stroke', 'black')\n .attr('stroke-width', 2);\n\n _drag\n .on('drag', (d, i) => {\n const ev = event;\n i = i + 2;\n\n arc['p' + i][0] = Math.min(Math.max(arc.minX + 1, ev.x), arc.maxX);\n arc['p' + i][1] = Math.min(Math.max(arc.minY, ev.y), arc.maxY);\n\n const angle =\n i === 3 ? state.arcs.startAngle(id) : state.arcs.endAngle(id);\n\n if (\n (arc.startAngle < Math.PI &&\n arc.endAngle < Math.PI &&\n angle < Math.PI) ||\n (arc.startAngle >= Math.PI &&\n arc.endAngle >= Math.PI &&\n angle >= Math.PI)\n ) {\n if (i === 2) {\n arc.endAngle = angle;\n arc.arc.endAngle(angle);\n } else if (i === 3) {\n arc.startAngle = angle;\n arc.arc.startAngle(angle);\n }\n }\n\n drawStrum(brushGroup, state, config, pc, events, arc, i - 2);\n })\n .on('end', onDragEnd(brushGroup, state, config, pc, events));\n\n circles\n .enter()\n .append('circle')\n .attr('id', 'arc-' + id)\n .attr('class', 'arc');\n\n circles\n .attr('cx', d => d[0])\n .attr('cy', d => d[1])\n .attr('r', 5)\n .style(\n 'opacity',\n (d, i) => (activePoint !== undefined && i === activePoint ? 0.8 : 0)\n )\n .on('mouseover', function() {\n select(this).style('opacity', 0.8);\n })\n .on('mouseout', function() {\n select(this).style('opacity', 0);\n })\n .call(_drag);\n};\n\nconst onDrag = (brushGroup, state, config, pc, events) => () => {\n const ev = event,\n arc = state.arcs[state.arcs.active];\n\n // Make sure that the point is within the bounds\n arc.p2[0] = Math.min(\n Math.max(arc.minX + 1, ev.x - config.margin.left),\n arc.maxX\n );\n arc.p2[1] = Math.min(Math.max(arc.minY, ev.y - config.margin.top), arc.maxY);\n arc.p3 = arc.p2.slice();\n drawStrum(brushGroup, state, config, pc, events, arc, 1);\n};\n\nexport default onDrag;\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon)) {}\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / (y32 * x10 - x32 * y10);\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00);\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi) {\n var oc = da0 > epsilon ? intersect(x01, y01, x00, y00, x11, y11, x10, y10) : [x10, y10],\n ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","import { mouse } from 'd3-selection';\nimport { arc as d3Arc } from 'd3-shape';\nimport dimensionsForPoint from '../dimensionsForPoint';\nimport h from '../../util/height';\n\n// First we need to determine between which two axes the arc was started.\n// This will determine the freedom of movement, because a arc can\n// logically only happen between two axes, so no movement outside these axes\n// should be allowed.\nconst onDragStart = (state, config, pc, xscale) => () => {\n const p = mouse(state.strumRect.node());\n\n p[0] = p[0] - config.margin.left;\n p[1] = p[1] - config.margin.top;\n\n const dims = dimensionsForPoint(config, pc, xscale, p);\n const arc = {\n p1: p,\n dims: dims,\n minX: xscale(dims.left),\n maxX: xscale(dims.right),\n minY: 0,\n maxY: h(config),\n startAngle: undefined,\n endAngle: undefined,\n arc: d3Arc().innerRadius(0),\n };\n\n // Make sure that the point is within the bounds\n arc.p1[0] = Math.min(Math.max(arc.minX, p[0]), arc.maxX);\n arc.p2 = arc.p1.slice();\n arc.p3 = arc.p1.slice();\n\n state.arcs[dims.i] = arc;\n state.arcs.active = dims.i;\n};\n\nexport default onDragStart;\n","import onDragEnd from './onDragEnd';\nimport removeStrum from './removeStrum';\n\nconst brushReset = (brushGroup, state, config, pc, events) => () => {\n const ids = Object.getOwnPropertyNames(state.arcs).filter(d => !isNaN(d));\n\n ids.forEach(d => {\n state.arcs.active = d;\n removeStrum(state, pc);\n });\n onDragEnd(brushGroup, state, config, pc, events)();\n};\n\nexport default brushReset;\n","import { drag } from 'd3-drag';\nimport onDragEnd from './onDragEnd';\nimport onDrag from './onDrag';\nimport onDragStart from './onDragStart';\nimport removeStrum from './removeStrum';\nimport brushReset from './brushReset';\nimport w from '../../util/width';\nimport h from '../../util/height';\n\nimport hypothenuse from './util/hypothenuse';\nimport consecutive from '../consecutive';\n\n// returns angles in [-PI/2, PI/2]\nconst angle = (p1, p2) => {\n const a = p1[0] - p2[0],\n b = p1[1] - p2[1],\n c = hypothenuse(a, b);\n\n return Math.asin(b / c);\n};\n\nconst endAngle = state => id => {\n const arc = state.arcs[id];\n if (arc === undefined) {\n return undefined;\n }\n let sAngle = angle(arc.p1, arc.p2),\n uAngle = -sAngle + Math.PI / 2;\n\n if (arc.p1[0] > arc.p2[0]) {\n uAngle = 2 * Math.PI - uAngle;\n }\n\n return uAngle;\n};\n\nconst startAngle = state => id => {\n const arc = state.arcs[id];\n if (arc === undefined) {\n return undefined;\n }\n\n let sAngle = angle(arc.p1, arc.p3),\n uAngle = -sAngle + Math.PI / 2;\n\n if (arc.p1[0] > arc.p3[0]) {\n uAngle = 2 * Math.PI - uAngle;\n }\n\n return uAngle;\n};\n\nconst length = state => id => {\n const arc = state.arcs[id];\n\n if (arc === undefined) {\n return undefined;\n }\n\n const a = arc.p1[0] - arc.p2[0],\n b = arc.p1[1] - arc.p2[1];\n\n return hypothenuse(a, b);\n};\n\nconst install = (brushGroup, state, config, pc, events, xscale) => () => {\n if (!pc.g()) {\n pc.createAxes();\n }\n\n const _drag = drag();\n\n // Map of current arcs. arcs are stored per segment of the PC. A segment,\n // being the area between two axes. The left most area is indexed at 0.\n state.arcs.active = undefined;\n // Returns the width of the PC segment where currently a arc is being\n // placed. NOTE: even though they are evenly spaced in our current\n // implementation, we keep for when non-even spaced segments are supported as\n // well.\n state.arcs.width = id => {\n const arc = state.arcs[id];\n return arc === undefined ? undefined : arc.maxX - arc.minX;\n };\n\n // returns angles in [0, 2 * PI]\n state.arcs.endAngle = endAngle(state);\n state.arcs.startAngle = startAngle(state);\n state.arcs.length = length(state);\n\n pc.on('axesreorder.arcs', () => {\n const ids = Object.getOwnPropertyNames(arcs).filter(d => !isNaN(d));\n\n if (ids.length > 0) {\n // We have some arcs, which might need to be removed.\n ids.forEach(d => {\n const dims = arcs[d].dims;\n state.arcs.active = d;\n // If the two dimensions of the current arc are not next to each other\n // any more, than we'll need to remove the arc. Otherwise we keep it.\n if (!consecutive(dims)(dims.left, dims.right)) {\n removeStrum(state, pc);\n }\n });\n onDragEnd(brushGroup, state, config, pc, events)();\n }\n });\n\n // Add a new svg group in which we draw the arcs.\n pc.selection\n .select('svg')\n .append('g')\n .attr('id', 'arcs')\n .attr(\n 'transform',\n 'translate(' + config.margin.left + ',' + config.margin.top + ')'\n );\n\n // Install the required brushReset function\n pc.brushReset = brushReset(brushGroup, state, config, pc, events);\n\n _drag\n .on('start', onDragStart(state, config, pc, xscale))\n .on('drag', onDrag(brushGroup, state, config, pc, events))\n .on('end', onDragEnd(brushGroup, state, config, pc, events));\n\n // NOTE: The styling needs to be done here and not in the css. This is because\n // for 1D brushing, the canvas layers should not listen to\n // pointer-events._.\n state.strumRect = pc.selection\n .select('svg')\n .insert('rect', 'g#arcs')\n .attr('id', 'arc-events')\n .attr('x', config.margin.left)\n .attr('y', config.margin.top)\n .attr('width', w(config))\n .attr('height', h(config) + 2)\n .style('opacity', 0)\n .call(_drag);\n};\n\nexport default install;\n","import uninstall from './uninstall';\nimport install from './install';\nimport selected from './selected';\n\nconst installAngularBrush = (brushGroup, config, pc, events, xscale) => {\n const state = {\n arcs: {},\n strumRect: {},\n };\n\n brushGroup.modes['angular'] = {\n install: install(brushGroup, state, config, pc, events, xscale),\n uninstall: uninstall(state, pc),\n selected: selected(brushGroup, state, config),\n brushState: () => state.arcs,\n };\n};\n\nexport default installAngularBrush;\n","// calculate 2d intersection of line a->b with line c->d\n// points are objects with x and y properties\nconst intersection = (a, b, c, d) => {\n return {\n x:\n ((a.x * b.y - a.y * b.x) * (c.x - d.x) -\n (a.x - b.x) * (c.x * d.y - c.y * d.x)) /\n ((a.x - b.x) * (c.y - d.y) - (a.y - b.y) * (c.x - d.x)),\n y:\n ((a.x * b.y - a.y * b.x) * (c.y - d.y) -\n (a.y - b.y) * (c.x * d.y - c.y * d.x)) /\n ((a.x - b.x) * (c.y - d.y) - (a.y - b.y) * (c.x - d.x)),\n };\n};\n\nexport default intersection;\n","import { select, selectAll } from 'd3-selection';\n\n// Merges the canvases and SVG elements into one canvas element which is then passed into the callback\n// (so you can choose to save it to disk, etc.)\nconst mergeParcoords = pc => callback => {\n // Retina display, etc.\n const devicePixelRatio = window.devicePixelRatio || 1;\n\n // Create a canvas element to store the merged canvases\n const mergedCanvas = document.createElement('canvas');\n\n const foregroundCanvas = pc.canvas.foreground;\n // We will need to adjust for canvas margins to align the svg and canvas\n const canvasMarginLeft = Number(\n foregroundCanvas.style.marginLeft.replace('px', '')\n );\n\n const textTopAdjust = 15;\n const canvasMarginTop =\n Number(foregroundCanvas.style.marginTop.replace('px', '')) + textTopAdjust;\n const width =\n (foregroundCanvas.clientWidth + canvasMarginLeft) * devicePixelRatio;\n const height =\n (foregroundCanvas.clientHeight + canvasMarginTop) * devicePixelRatio;\n mergedCanvas.width = width + 50; // pad so that svg labels at right will not get cut off\n mergedCanvas.height = height + 30; // pad so that svg labels at bottom will not get cut off\n mergedCanvas.style.width = mergedCanvas.width / devicePixelRatio + 'px';\n mergedCanvas.style.height = mergedCanvas.height / devicePixelRatio + 'px';\n\n // Give the canvas a white background\n const context = mergedCanvas.getContext('2d');\n context.fillStyle = '#ffffff';\n context.fillRect(0, 0, mergedCanvas.width, mergedCanvas.height);\n\n // Merge all the canvases\n for (const key in pc.canvas) {\n context.drawImage(\n pc.canvas[key],\n canvasMarginLeft * devicePixelRatio,\n canvasMarginTop * devicePixelRatio,\n width - canvasMarginLeft * devicePixelRatio,\n height - canvasMarginTop * devicePixelRatio\n );\n }\n\n // Add SVG elements to canvas\n const DOMURL = window.URL || window.webkitURL || window;\n const serializer = new XMLSerializer();\n // axis labels are translated (0,-5) so we will clone the svg\n // and translate down so the labels are drawn on the canvas\n const svgNodeCopy = pc.selection\n .select('svg')\n .node()\n .cloneNode(true);\n svgNodeCopy.setAttribute('transform', 'translate(0,' + textTopAdjust + ')');\n svgNodeCopy.setAttribute(\n 'height',\n svgNodeCopy.getAttribute('height') + textTopAdjust\n );\n // text will need fill attribute since css styles will not get picked up\n // this is not sophisticated since it doesn't look up css styles\n // if the user changes\n select(svgNodeCopy)\n .selectAll('text')\n .attr('fill', 'black');\n const svgStr = serializer.serializeToString(svgNodeCopy);\n\n // Create a Data URI.\n const src = 'data:image/svg+xml;base64,' + window.btoa(svgStr);\n const img = new Image();\n img.onload = () => {\n context.drawImage(\n img,\n 0,\n 0,\n img.width * devicePixelRatio,\n img.height * devicePixelRatio\n );\n if (typeof callback === 'function') {\n callback(mergedCanvas);\n }\n };\n img.src = src;\n};\n\nexport default mergeParcoords;\n","import { brushSelection } from 'd3-brush';\n\nconst selected = (config, pc) => () => {\n let actives = [];\n let extents = [];\n let ranges = {};\n //get brush selections from each node, convert to actual values\n //invert order of values in array to comply with the parcoords architecture\n if (config.brushes.length === 0) {\n let nodes = pc\n .g()\n .selectAll('.brush')\n .nodes();\n for (let k = 0; k < nodes.length; k++) {\n if (brushSelection(nodes[k]) !== null) {\n actives.push(nodes[k].__data__);\n let values = [];\n let ranger = brushSelection(nodes[k]);\n if (\n typeof config.dimensions[nodes[k].__data__].yscale.domain()[0] ===\n 'number'\n ) {\n for (let i = 0; i < ranger.length; i++) {\n if (\n actives.includes(nodes[k].__data__) &&\n config.flipAxes.includes(nodes[k].__data__)\n ) {\n values.push(\n config.dimensions[nodes[k].__data__].yscale.invert(ranger[i])\n );\n } else if (config.dimensions[nodes[k].__data__].yscale() !== 1) {\n values.unshift(\n config.dimensions[nodes[k].__data__].yscale.invert(ranger[i])\n );\n }\n }\n extents.push(values);\n for (let ii = 0; ii < extents.length; ii++) {\n if (extents[ii].length === 0) {\n extents[ii] = [1, 1];\n }\n }\n } else {\n ranges[nodes[k].__data__] = brushSelection(nodes[k]);\n let dimRange = config.dimensions[nodes[k].__data__].yscale.range();\n let dimDomain = config.dimensions[nodes[k].__data__].yscale.domain();\n for (let j = 0; j < dimRange.length; j++) {\n if (\n dimRange[j] >= ranger[0] &&\n dimRange[j] <= ranger[1] &&\n actives.includes(nodes[k].__data__) &&\n config.flipAxes.includes(nodes[k].__data__)\n ) {\n values.push(dimRange[j]);\n } else if (dimRange[j] >= ranger[0] && dimRange[j] <= ranger[1]) {\n values.unshift(dimRange[j]);\n }\n }\n extents.push(values);\n for (let ii = 0; ii < extents.length; ii++) {\n if (extents[ii].length === 0) {\n extents[ii] = [1, 1];\n }\n }\n }\n }\n }\n // test if within range\n const within = {\n date: function(d, p, dimension) {\n let category = d[p];\n let categoryIndex = config.dimensions[p].yscale\n .domain()\n .indexOf(category);\n let categoryRangeValue = config.dimensions[p].yscale.range()[\n categoryIndex\n ];\n return (\n categoryRangeValue >= ranges[p][0] &&\n categoryRangeValue <= ranges[p][1]\n );\n },\n number: function(d, p, dimension) {\n return extents[dimension][0] <= d[p] && d[p] <= extents[dimension][1];\n },\n string: function(d, p, dimension) {\n let category = d[p];\n let categoryIndex = config.dimensions[p].yscale\n .domain()\n .indexOf(category);\n let categoryRangeValue = config.dimensions[p].yscale.range()[\n categoryIndex\n ];\n return (\n categoryRangeValue >= ranges[p][0] &&\n categoryRangeValue <= ranges[p][1]\n );\n },\n };\n return config.data.filter(d =>\n actives.every((p, dimension) =>\n within[config.dimensions[p].type](d, p, dimension)\n )\n );\n } else {\n // need to get data from each brush instead of each axis\n // first must find active axes by iterating through all brushes\n // then go through similiar process as above.\n let multiBrushData = [];\n for (let idx = 0; idx < config.brushes.length; idx++) {\n let brush = config.brushes[idx];\n let values = [];\n let ranger = brush.extent;\n let actives = [brush.data];\n if (\n typeof config.dimensions[brush.data].yscale.domain()[0] === 'number'\n ) {\n for (let i = 0; i < ranger.length; i++) {\n if (\n actives.includes(brush.data) &&\n config.flipAxes.includes(brush.data)\n ) {\n values.push(config.dimensions[brush.data].yscale.invert(ranger[i]));\n } else if (config.dimensions[brush.data].yscale() !== 1) {\n values.unshift(\n config.dimensions[brush.data].yscale.invert(ranger[i])\n );\n }\n }\n extents.push(values);\n for (let ii = 0; ii < extents.length; ii++) {\n if (extents[ii].length === 0) {\n extents[ii] = [1, 1];\n }\n }\n } else {\n ranges[brush.data] = brush.extent;\n let dimRange = config.dimensions[brush.data].yscale.range();\n let dimDomain = config.dimensions[brush.data].yscale.domain();\n for (let j = 0; j < dimRange.length; j++) {\n if (\n dimRange[j] >= ranger[0] &&\n dimRange[j] <= ranger[1] &&\n actives.includes(brush.data) &&\n config.flipAxes.includes(brush.data)\n ) {\n values.push(dimRange[j]);\n } else if (dimRange[j] >= ranger[0] && dimRange[j] <= ranger[1]) {\n values.unshift(dimRange[j]);\n }\n }\n extents.push(values);\n for (let ii = 0; ii < extents.length; ii++) {\n if (extents[ii].length === 0) {\n extents[ii] = [1, 1];\n }\n }\n }\n let within = {\n date: function(d, p, dimension) {\n let category = d[p];\n let categoryIndex = config.dimensions[p].yscale\n .domain()\n .indexOf(category);\n let categoryRangeValue = config.dimensions[p].yscale.range()[\n categoryIndex\n ];\n return (\n categoryRangeValue >= ranges[p][0] &&\n categoryRangeValue <= ranges[p][1]\n );\n },\n number: function(d, p, dimension) {\n return extents[idx][0] <= d[p] && d[p] <= extents[idx][1];\n },\n string: function(d, p, dimension) {\n let category = d[p];\n let categoryIndex = config.dimensions[p].yscale\n .domain()\n .indexOf(category);\n let categoryRangeValue = config.dimensions[p].yscale.range()[\n categoryIndex\n ];\n return (\n categoryRangeValue >= ranges[p][0] &&\n categoryRangeValue <= ranges[p][1]\n );\n },\n };\n\n // filter data, but instead of returning it now,\n // put it into multiBrush data which is returned after\n // all brushes are iterated through.\n let filtered = config.data.filter(d =>\n actives.every((p, dimension) =>\n within[config.dimensions[p].type](d, p, dimension)\n )\n );\n for (let z = 0; z < filtered.length; z++) {\n multiBrushData.push(filtered[z]);\n }\n actives = [];\n ranges = {};\n }\n return multiBrushData;\n }\n};\n\nexport default selected;\n","const brushPredicate = (brushGroup, config, pc) => (predicate = null) => {\n if (predicate === null) {\n return brushGroup.predicate;\n }\n\n predicate = String(predicate).toUpperCase();\n if (predicate !== 'AND' && predicate !== 'OR') {\n throw new Error('Invalid predicate ' + predicate);\n }\n\n brushGroup.predicate = predicate;\n config.brushed = brushGroup.currentMode().selected();\n pc.renderBrushed();\n return pc;\n};\n\nconst brushMode = (brushGroup, config, pc) => (mode = null) => {\n if (mode === null) {\n return brushGroup.mode;\n }\n\n if (pc.brushModes().indexOf(mode) === -1) {\n throw new Error('pc.brushmode: Unsupported brush mode: ' + mode);\n }\n\n // Make sure that we don't trigger unnecessary events by checking if the mode\n // actually changes.\n if (mode !== brushGroup.mode) {\n // When changing brush modes, the first thing we need to do is clearing any\n // brushes from the current mode, if any.\n if (brushGroup.mode !== 'None') {\n pc.brushReset();\n }\n\n // Next, we need to 'uninstall' the current brushMode.\n brushGroup.modes[brushGroup.mode].uninstall(pc);\n // Finally, we can install the requested one.\n brushGroup.mode = mode;\n brushGroup.modes[brushGroup.mode].install();\n if (mode === 'None') {\n delete pc.brushPredicate;\n } else {\n pc.brushPredicate = brushPredicate(brushGroup, config, pc);\n }\n }\n\n return pc;\n};\n\nexport default brushMode;\n","/**\n * dimension display names\n *\n * @param config\n * @param d\n * @returns {*}\n */\nconst dimensionLabels = config => d =>\n config.dimensions[d].title ? config.dimensions[d].title : d;\n\nexport default dimensionLabels;\n","import { select, selectAll } from 'd3-selection';\n\nconst flipAxisAndUpdatePCP = (config, pc, axis) =>\n function(dimension) {\n pc.flip(dimension);\n pc.brushReset(dimension);\n\n // select(this.parentElement)\n pc.selection\n .select('svg')\n .selectAll('g.axis')\n .filter(d => d === dimension)\n .transition()\n .duration(config.animationTime)\n .call(axis.scale(config.dimensions[dimension].yscale));\n pc.render();\n };\n\nexport default flipAxisAndUpdatePCP;\n","import { event } from 'd3-selection';\n\nconst rotateLabels = (config, pc) => {\n if (!config.rotateLabels) return;\n\n let delta = event.deltaY;\n delta = delta < 0 ? -5 : delta;\n delta = delta > 0 ? 5 : delta;\n\n config.dimensionTitleRotation += delta;\n pc.svg\n .selectAll('text.label')\n .attr(\n 'transform',\n 'translate(0,-5) rotate(' + config.dimensionTitleRotation + ')'\n );\n event.preventDefault();\n};\n\nexport default rotateLabels;\n","import { select } from 'd3-selection';\n\nimport dimensionLabels from '../util/dimensionLabels';\nimport flipAxisAndUpdatePCP from '../util/flipAxisAndUpdatePCP';\nimport rotateLabels from '../util/rotateLabels';\n\nconst updateAxes = (config, pc, position, axis, flags) => (\n animationTime = null\n) => {\n if (animationTime === null) {\n animationTime = config.animationTime;\n }\n\n const g_data = pc.svg\n .selectAll('.dimension')\n .data(pc.getOrderedDimensionKeys());\n // Enter\n g_data\n .enter()\n .append('svg:g')\n .attr('class', 'dimension')\n .attr('transform', p => 'translate(' + position(p) + ')')\n .style('opacity', 0)\n .append('svg:g')\n .attr('class', 'axis')\n .attr('transform', 'translate(0,0)')\n .each(function(d) {\n const axisElement = select(this).call(\n pc.applyAxisConfig(axis, config.dimensions[d])\n );\n\n axisElement\n .selectAll('path')\n .style('fill', 'none')\n .style('stroke', '#222')\n .style('shape-rendering', 'crispEdges');\n\n axisElement\n .selectAll('line')\n .style('fill', 'none')\n .style('stroke', '#222')\n .style('shape-rendering', 'crispEdges');\n })\n .append('svg:text')\n .attr('text-anchor', 'middle')\n .attr('class', 'label')\n .attr('x', 0)\n .attr('y', 0)\n .attr(\n 'transform',\n 'translate(0,-5) rotate(' + config.dimensionTitleRotation + ')'\n )\n .text(dimensionLabels(config))\n .on('dblclick', flipAxisAndUpdatePCP(config, pc, axis))\n .on('wheel', rotateLabels(config, pc));\n\n // Update\n g_data.attr('opacity', 0);\n g_data\n .select('.axis')\n .transition()\n .duration(animationTime)\n .each(function(d) {\n select(this).call(pc.applyAxisConfig(axis, config.dimensions[d]));\n });\n g_data\n .select('.label')\n .transition()\n .duration(animationTime)\n .text(dimensionLabels(config))\n .attr(\n 'transform',\n 'translate(0,-5) rotate(' + config.dimensionTitleRotation + ')'\n );\n\n // Exit\n g_data.exit().remove();\n\n const g = pc.svg.selectAll('.dimension');\n g.transition()\n .duration(animationTime)\n .attr('transform', p => 'translate(' + position(p) + ')')\n .style('opacity', 1);\n\n pc.svg\n .selectAll('.axis')\n .transition()\n .duration(animationTime)\n .each(function(d) {\n select(this).call(pc.applyAxisConfig(axis, config.dimensions[d]));\n });\n\n if (flags.brushable) pc.brushable();\n if (flags.reorderable) pc.reorderable();\n if (pc.brushMode() !== 'None') {\n const mode = pc.brushMode();\n pc.brushMode('None');\n pc.brushMode(mode);\n }\n return this;\n};\n\nexport default updateAxes;\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(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","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, 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 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’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\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","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(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 return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n this.fill = match[1] || \" \";\n this.align = match[2] || \">\";\n this.sign = match[3] || \"-\";\n this.symbol = match[4] || \"\";\n this.zero = !!match[5];\n this.width = match[6] && +match[6];\n this.comma = !!match[7];\n this.precision = match[8] && +match[8].slice(1);\n this.trim = !!match[9];\n this.type = match[10] || \"\";\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 == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + 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 (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(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\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(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 formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\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\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return 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\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\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 == null && (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 === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%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 == null ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = 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 during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\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\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(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","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","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 = new Date(+date)), date;\n }\n\n interval.floor = interval;\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\";\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\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\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\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\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\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\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\";\nimport {durationDay, durationMinute} from \"./duration\";\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\";\nimport {durationMinute, durationWeek} from \"./duration\";\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\";\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\";\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\";\nimport {durationMinute} from \"./duration\";\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\";\nimport {durationHour} from \"./duration\";\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\";\nimport {durationDay} from \"./duration\";\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\";\nimport {durationWeek} from \"./duration\";\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\";\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\";\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 newYear(y) {\n return {y: y, m: 0, d: 1, 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 \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": 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, newDate) {\n return function(string) {\n var d = newYear(1900),\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\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 // 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(newYear(d.y)), 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 = newDate(newYear(d.y)), 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(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).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 newDate(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 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 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 += \"\", localDate);\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, utcDate);\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 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.Q = (+n[0]) * 1000, 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), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(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), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + 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), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(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), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\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\";\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\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {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","/** adjusts an axis' default range [h()+1, 1] if a NullValueSeparator is set */\nconst getRange = config => {\n const h = config.height - config.margin.top - config.margin.bottom;\n\n if (config.nullValueSeparator == 'bottom') {\n return [\n h +\n 1 -\n config.nullValueSeparatorPadding.bottom -\n config.nullValueSeparatorPadding.top,\n 1,\n ];\n } else if (config.nullValueSeparator == 'top') {\n return [\n h + 1,\n 1 +\n config.nullValueSeparatorPadding.bottom +\n config.nullValueSeparatorPadding.top,\n ];\n }\n return [h + 1, 1];\n};\n\nexport default getRange;\n","import { scaleLinear, scaleOrdinal, scalePoint, scaleTime } from 'd3-scale';\nimport { extent } from 'd3-array';\n\nimport getRange from '../util/getRange';\nimport w from '../util/width';\nimport h from '../util/height';\n\nconst autoscale = (config, pc, xscale, ctx) =>\n function() {\n // yscale\n const defaultScales = {\n date: function(k) {\n let _extent = extent(config.data, d => (d[k] ? d[k].getTime() : null));\n // special case if single value\n if (_extent[0] === _extent[1]) {\n return scalePoint()\n .domain(_extent)\n .range(getRange(config));\n }\n if (config.flipAxes.includes(k)) {\n _extent = _extent.map(val => tempDate.unshift(val));\n }\n return scaleTime()\n .domain(_extent)\n .range(getRange(config));\n },\n number: function(k) {\n let _extent = extent(config.data, d => +d[k]);\n // special case if single value\n if (_extent[0] === _extent[1]) {\n return scalePoint()\n .domain(_extent)\n .range(getRange(config));\n }\n if (config.flipAxes.includes(k)) {\n _extent = _extent.map(val => tempDate.unshift(val));\n }\n return scaleLinear()\n .domain(_extent)\n .range(getRange(config));\n },\n string: function(k) {\n let counts = {},\n domain = [];\n // Let's get the count for each value so that we can sort the domain based\n // on the number of items for each value.\n config.data.map(p => {\n if (p[k] === undefined && config.nullValueSeparator !== 'undefined') {\n return null; // null values will be drawn beyond the horizontal null value separator!\n }\n if (counts[p[k]] === undefined) {\n counts[p[k]] = 1;\n } else {\n counts[p[k]] = counts[p[k]] + 1;\n }\n });\n if (config.flipAxes.includes(k)) {\n domain = Object.getOwnPropertyNames(counts).sort();\n } else {\n let tempArr = Object.getOwnPropertyNames(counts).sort();\n for (let i = 0; i < Object.getOwnPropertyNames(counts).length; i++) {\n domain.push(tempArr.pop());\n }\n }\n\n //need to create an ordinal scale for categorical data\n let categoricalRange = [];\n if (domain.length === 1) {\n //edge case\n domain = [' ', domain[0], ' '];\n }\n let addBy = getRange(config)[0] / (domain.length - 1);\n for (let j = 0; j < domain.length; j++) {\n if (categoricalRange.length === 0) {\n categoricalRange.push(0);\n continue;\n }\n categoricalRange.push(categoricalRange[j - 1] + addBy);\n }\n return scaleOrdinal()\n .domain(domain)\n .range(categoricalRange);\n },\n };\n Object.keys(config.dimensions).forEach(function(k) {\n if (\n config.dimensions[k].yscale === undefined ||\n config.dimensions[k].yscale === null\n ) {\n config.dimensions[k].yscale = defaultScales[config.dimensions[k].type](\n k\n );\n }\n });\n\n // xscale\n // add padding for d3 >= v4 default 0.2\n xscale.range([0, w(config)]).padding(0.2);\n\n // Retina display, etc.\n const devicePixelRatio = window.devicePixelRatio || 1;\n\n // canvas sizes\n pc.selection\n .selectAll('canvas')\n .style('margin-top', config.margin.top + 'px')\n .style('margin-left', config.margin.left + 'px')\n .style('width', w(config) + 2 + 'px')\n .style('height', h(config) + 2 + 'px')\n .attr('width', (w(config) + 2) * devicePixelRatio)\n .attr('height', (h(config) + 2) * devicePixelRatio);\n // default styles, needs to be set when canvas width changes\n ctx.foreground.strokeStyle = config.color;\n ctx.foreground.lineWidth = config.lineWidth;\n ctx.foreground.globalCompositeOperation = config.composite;\n ctx.foreground.globalAlpha = config.alpha;\n ctx.foreground.scale(devicePixelRatio, devicePixelRatio);\n ctx.brushed.strokeStyle = config.brushedColor;\n ctx.brushed.lineWidth = config.lineWidth;\n ctx.brushed.globalCompositeOperation = config.composite;\n ctx.brushed.globalAlpha = config.alpha;\n ctx.brushed.scale(devicePixelRatio, devicePixelRatio);\n ctx.highlight.lineWidth = config.highlightedLineWidth;\n ctx.highlight.scale(devicePixelRatio, devicePixelRatio);\n ctx.marked.lineWidth = config.markedLineWidth;\n ctx.marked.shadowColor = config.markedShadowColor;\n ctx.marked.shadowBlur = config.markedShadowBlur;\n ctx.marked.scale(devicePixelRatio, devicePixelRatio);\n\n return this;\n };\n\nexport default autoscale;\n","import { brushSelection, brushY } from 'd3-brush';\nimport { event, select } from 'd3-selection';\n\nconst brushable = (config, pc, flags) =>\n function() {\n if (!pc.g()) {\n pc.createAxes();\n }\n\n const g = pc.g();\n\n // Add and store a brush for each axis.\n g.append('svg:g')\n .attr('class', 'brush')\n .each(function(d) {\n if (config.dimensions[d] !== undefined) {\n config.dimensions[d]['brush'] = brushY(select(this)).extent([\n [-15, 0],\n [15, config.dimensions[d].yscale.range()[0]],\n ]);\n select(this).call(\n config.dimensions[d]['brush']\n .on('start', function() {\n if (event.sourceEvent !== null && !event.sourceEvent.ctrlKey) {\n pc.brushReset();\n }\n })\n .on('brush', function() {\n if (!event.sourceEvent.ctrlKey) {\n pc.brush();\n }\n })\n .on('end', function() {\n // save brush selection is ctrl key is held\n // store important brush information and\n // the html element of the selection,\n // to make a dummy selection element\n if (event.sourceEvent.ctrlKey) {\n let html = select(this)\n .select('.selection')\n .nodes()[0].outerHTML;\n html = html.replace(\n 'class=\"selection\"',\n 'class=\"selection dummy' +\n ' selection-' +\n config.brushes.length +\n '\"'\n );\n let dat = select(this).nodes()[0].__data__;\n let brush = {\n id: config.brushes.length,\n extent: brushSelection(this),\n html: html,\n data: dat,\n };\n config.brushes.push(brush);\n select(select(this).nodes()[0].parentNode)\n .select('.axis')\n .nodes()[0].outerHTML += html;\n pc.brush();\n config.dimensions[d].brush.move(select(this, null));\n select(this)\n .select('.selection')\n .attr('style', 'display:none');\n pc.brushable();\n } else {\n pc.brush();\n }\n })\n );\n select(this).on('dblclick', function() {\n pc.brushReset(d);\n });\n }\n });\n\n flags.brushable = true;\n return this;\n };\n\nexport default brushable;\n","import { extent } from 'd3-array';\n\nconst commonScale = (config, pc) =>\n function(global, type) {\n const t = type || 'number';\n if (typeof global === 'undefined') {\n global = true;\n }\n\n // try to autodetect dimensions and create scales\n if (!Object.keys(config.dimensions).length) {\n pc.detectDimensions();\n }\n pc.autoscale();\n\n // scales of the same type\n const scales = Object.keys(config.dimensions).filter(\n p => config.dimensions[p].type == t\n );\n\n if (global) {\n let _extent = extent(\n scales\n .map(d => config.dimensions[d].yscale.domain())\n .reduce((cur, acc) => cur.concat(acc))\n );\n\n scales.forEach(d => {\n config.dimensions[d].yscale.domain(_extent);\n });\n } else {\n scales.forEach(d => {\n config.dimensions[d].yscale.domain(extent(config.data, d => +d[k]));\n });\n }\n\n // update centroids\n if (config.bundleDimension !== null) {\n pc.bundleDimension(config.bundleDimension);\n }\n\n return this;\n };\n\nexport default commonScale;\n","const computeRealCentroids = (config, position) => row =>\n Object.keys(config.dimensions).map(d => {\n const x = position(d);\n const y = config.dimensions[d].yscale(row[d]);\n return [x, y];\n });\n\nexport default computeRealCentroids;\n","const isValid = d => d !== null && d !== undefined;\n\nconst applyDimensionDefaults = (config, pc) =>\n function(dims) {\n const types = pc.detectDimensionTypes(config.data);\n dims = dims ? dims : Object.keys(types);\n\n return dims.reduce((acc, cur, i) => {\n const k = config.dimensions[cur] ? config.dimensions[cur] : {};\n acc[cur] = {\n ...k,\n orient: isValid(k.orient) ? k.orient : 'left',\n ticks: isValid(k.ticks) ? k.ticks : 5,\n innerTickSize: isValid(k.innerTickSize) ? k.innerTickSize : 6,\n outerTickSize: isValid(k.outerTickSize) ? k.outerTickSize : 0,\n tickPadding: isValid(k.tickPadding) ? k.tickPadding : 3,\n type: isValid(k.type) ? k.type : types[cur],\n index: isValid(k.index) ? k.index : i,\n };\n\n return acc;\n }, {});\n };\n\nexport default applyDimensionDefaults;\n","import { select } from 'd3-selection';\n\nimport dimensionLabels from '../util/dimensionLabels';\nimport flipAxisAndUpdatePCP from '../util/flipAxisAndUpdatePCP';\nimport rotateLabels from '../util/rotateLabels';\n\nimport w from '../util/width';\nimport h from '../util/height';\n\n/**\n * Create static SVG axes with dimension names, ticks, and labels.\n *\n * @param config\n * @param pc\n * @param xscale\n * @param flags\n * @param axis\n * @returns {Function}\n */\nconst createAxes = (config, pc, xscale, flags, axis) =>\n function() {\n if (pc.g() !== undefined) {\n pc.removeAxes();\n }\n // Add a group element for each dimension.\n pc._g = pc.svg\n .selectAll('.dimension')\n .data(pc.getOrderedDimensionKeys(), function(d) {\n return d;\n })\n .enter()\n .append('svg:g')\n .attr('class', 'dimension')\n .attr('transform', function(d) {\n return 'translate(' + xscale(d) + ')';\n });\n // Add an axis and title.\n pc._g\n .append('svg:g')\n .attr('class', 'axis')\n .attr('transform', 'translate(0,0)')\n .each(function(d) {\n let axisElement = select(this).call(\n pc.applyAxisConfig(axis, config.dimensions[d])\n );\n\n axisElement\n .selectAll('path')\n .style('fill', 'none')\n .style('stroke', '#222')\n .style('shape-rendering', 'crispEdges');\n\n axisElement\n .selectAll('line')\n .style('fill', 'none')\n .style('stroke', '#222')\n .style('shape-rendering', 'crispEdges');\n })\n\n .append('svg:text')\n .attr('text-anchor', 'middle')\n .attr('y', 0)\n .attr(\n 'transform',\n 'translate(0,-5) rotate(' + config.dimensionTitleRotation + ')'\n )\n .attr('x', 0)\n .attr('class', 'label')\n .text(dimensionLabels(config))\n .on('dblclick', flipAxisAndUpdatePCP(config, pc, axis))\n .on('wheel', rotateLabels(config, pc));\n\n if (config.nullValueSeparator === 'top') {\n pc.svg\n .append('line')\n .attr('x1', 0)\n .attr('y1', 1 + config.nullValueSeparatorPadding.top)\n .attr('x2', w(config))\n .attr('y2', 1 + config.nullValueSeparatorPadding.top)\n .attr('stroke-width', 1)\n .attr('stroke', '#777')\n .attr('fill', 'none')\n .attr('shape-rendering', 'crispEdges');\n } else if (config.nullValueSeparator === 'bottom') {\n pc.svg\n .append('line')\n .attr('x1', 0)\n .attr('y1', h(config) + 1 - config.nullValueSeparatorPadding.bottom)\n .attr('x2', w(config))\n .attr('y2', h(config) + 1 - config.nullValueSeparatorPadding.bottom)\n .attr('stroke-width', 1)\n .attr('stroke', '#777')\n .attr('fill', 'none')\n .attr('shape-rendering', 'crispEdges');\n }\n\n flags.axes = true;\n return this;\n };\n\nexport default createAxes;\n","import { entries } from 'd3-collection';\nimport { min } from 'd3-array';\n\n//draw dots with radius r on the axis line where data intersects\nconst axisDots = (config, pc, position) => _r => {\n const r = _r || 0.1;\n const ctx = pc.ctx.dots;\n const startAngle = 0;\n const endAngle = 2 * Math.PI;\n ctx.globalAlpha = min([1 / Math.pow(config.data.length, 1 / 2), 1]);\n config.data.forEach(d => {\n entries(config.dimensions).forEach((p, i) => {\n ctx.beginPath();\n ctx.arc(\n position(p),\n config.dimensions[p.key].yscale(d[p]),\n r,\n startAngle,\n endAngle\n );\n ctx.stroke();\n ctx.fill();\n });\n });\n return this;\n};\n\nexport default axisDots;\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"#000\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"#000\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"#000\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter\n : \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter);\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","import { axisBottom, axisLeft, axisRight, axisTop } from 'd3-axis';\n\nconst applyAxisConfig = (axis, dimension) => {\n let axisCfg;\n\n switch (dimension.orient) {\n case 'left':\n axisCfg = axisLeft(dimension.yscale);\n break;\n case 'right':\n axisCfg = axisRight(dimension.yscale);\n break;\n case 'top':\n axisCfg = axisTop(dimension.yscale);\n break;\n case 'bottom':\n axisCfg = axisBottom(dimension.yscale);\n break;\n default:\n axisCfg = axisLeft(dimension.yscale);\n break;\n }\n\n axisCfg\n .ticks(dimension.ticks)\n .tickValues(dimension.tickValues)\n .tickSizeInner(dimension.innerTickSize)\n .tickSizeOuter(dimension.outerTickSize)\n .tickPadding(dimension.tickPadding)\n .tickFormat(dimension.tickFormat);\n\n return axisCfg;\n};\n\nexport default applyAxisConfig;\n","import { drag } from 'd3-drag';\nimport { event, select } from 'd3-selection';\n\nimport w from '../util/width';\n\n// Jason Davies, http://bl.ocks.org/1341281\nconst reorderable = (config, pc, xscale, position, dragging, flags) =>\n function() {\n if (pc.g() === undefined) pc.createAxes();\n const g = pc.g();\n\n g.style('cursor', 'move').call(\n drag()\n .on('start', function(d) {\n dragging[d] = this.__origin__ = xscale(d);\n })\n .on('drag', function(d) {\n dragging[d] = Math.min(\n w(config),\n Math.max(0, (this.__origin__ += event.dx))\n );\n pc.sortDimensions();\n xscale.domain(pc.getOrderedDimensionKeys());\n pc.render();\n g.attr('transform', d => 'translate(' + position(d) + ')');\n })\n .on('end', function(d) {\n delete this.__origin__;\n delete dragging[d];\n select(this)\n .transition()\n .attr('transform', 'translate(' + xscale(d) + ')');\n pc.render();\n pc.renderMarked();\n })\n );\n flags.reorderable = true;\n return this;\n };\n\nexport default reorderable;\n","// rescale for height, width and margins\n// TODO currently assumes chart is brushable, and destroys old brushes\nconst resize = (config, pc, flags, events) => {\n return function() {\n // selection size\n pc.selection\n .select('svg')\n .attr('width', config.width)\n .attr('height', config.height);\n pc.svg.attr(\n 'transform',\n 'translate(' + config.margin.left + ',' + config.margin.top + ')'\n );\n\n // FIXME: the current brush state should pass through\n if (flags.brushable) pc.brushReset();\n\n // scales\n pc.autoscale();\n\n // axes, destroys old brushes.\n if (pc.g()) pc.createAxes();\n if (flags.brushable) pc.brushable();\n if (flags.reorderable) pc.reorderable();\n\n events.call('resize', this, {\n width: config.width,\n height: config.height,\n margin: config.margin,\n });\n\n return this;\n };\n};\n\nexport default resize;\n","// Reorder dimensions, such that the highest value (visually) is on the left and\n// the lowest on the right. Visual values are determined by the data values in\n// the given row.\nconst reorder = (config, pc, xscale) => rowdata => {\n const firstDim = pc.getOrderedDimensionKeys()[0];\n\n pc.sortDimensionsByRowData(rowdata);\n // NOTE: this is relatively cheap given that:\n // number of dimensions < number of data items\n // Thus we check equality of order to prevent rerendering when this is the case.\n const reordered = firstDim !== pc.getOrderedDimensionKeys()[0];\n\n if (reordered) {\n xscale.domain(pc.getOrderedDimensionKeys());\n const highlighted = config.highlighted.slice(0);\n pc.unhighlight();\n\n const marked = config.marked.slice(0);\n pc.unmark();\n\n const g = pc.g();\n g.transition()\n .duration(1500)\n .attr('transform', d => 'translate(' + xscale(d) + ')');\n pc.render();\n\n // pc.highlight() does not check whether highlighted is length zero, so we do that here.\n if (highlighted.length !== 0) {\n pc.highlight(highlighted);\n }\n if (marked.length !== 0) {\n pc.mark(marked);\n }\n }\n};\n\nexport default reorder;\n","const sortDimensions = (config, position) => () => {\n const copy = Object.assign({}, config.dimensions);\n const positionSortedKeys = Object.keys(config.dimensions).sort(\n (a, b) => (position(a) - position(b) === 0 ? 1 : position(a) - position(b))\n );\n config.dimensions = {};\n positionSortedKeys.forEach((p, i) => {\n config.dimensions[p] = copy[p];\n config.dimensions[p].index = i;\n });\n};\n\nexport default sortDimensions;\n","const sortDimensionsByRowData = config => rowdata => {\n const copy = Object.assign({}, config.dimensions);\n const positionSortedKeys = Object.keys(config.dimensions).sort((a, b) => {\n const pixelDifference =\n config.dimensions[a].yscale(rowdata[a]) -\n config.dimensions[b].yscale(rowdata[b]);\n\n // Array.sort is not necessarily stable, this means that if pixelDifference is zero\n // the ordering of dimensions might change unexpectedly. This is solved by sorting on\n // variable name in that case.\n return pixelDifference === 0 ? a.localeCompare(b) : pixelDifference;\n });\n config.dimensions = {};\n positionSortedKeys.forEach((p, i) => {\n config.dimensions[p] = copy[p];\n config.dimensions[p].index = i;\n });\n};\n\nexport default sortDimensionsByRowData;\n","const isBrushed = (config, brushGroup) => {\n if (config.brushed && config.brushed.length !== config.data.length)\n return true;\n\n const object = brushGroup.currentMode().brushState();\n\n for (let key in object) {\n if (object.hasOwnProperty(key)) {\n return true;\n }\n }\n return false;\n};\n\nexport default isBrushed;\n","import isBrushed from '../util/isBrushed';\nimport w from '../util/width';\nimport h from '../util/height';\n\nconst clear = (config, pc, ctx, brushGroup) =>\n function(layer) {\n ctx[layer].clearRect(0, 0, w(config) + 2, h(config) + 2);\n\n // This will make sure that the foreground items are transparent\n // without the need for changing the opacity style of the foreground canvas\n // as this would stop the css styling from working\n if (layer === 'brushed' && isBrushed(config, brushGroup)) {\n ctx.brushed.fillStyle = pc.selection.style('background-color');\n ctx.brushed.globalAlpha = 1 - config.alphaOnBrushed;\n ctx.brushed.fillRect(0, 0, w(config) + 2, h(config) + 2);\n ctx.brushed.globalAlpha = config.alpha;\n }\n return this;\n };\n\nexport default clear;\n","export const PRECISION = 1e-6;","\"use strict\";\r\n\r\nimport { PRECISION } from \"./PRECISION\";\r\nimport { Vector } from \"./Vector\";\r\n\r\nexport class Matrix\r\n{\r\n constructor (elements)\r\n {\r\n this.setElements(elements);\r\n }\r\n\r\n e (i,j)\r\n {\r\n if (i < 1 || i > this.elements.length || j < 1 || j > this.elements[0].length)\r\n {\r\n return null;\r\n }\r\n return this.elements[i-1][j-1];\r\n }\r\n\r\n row (i)\r\n {\r\n if (i > this.elements.length)\r\n {\r\n return null;\r\n }\r\n return new Vector(this.elements[i-1]);\r\n }\r\n\r\n col (j)\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return null;\r\n }\r\n if (j > this.elements[0].length)\r\n {\r\n return null;\r\n }\r\n var col = [], n = this.elements.length;\r\n for (var i = 0; i < n; i++)\r\n {\r\n col.push(this.elements[i][j-1]);\r\n }\r\n return new Vector(col);\r\n }\r\n\r\n dimensions ()\r\n {\r\n var cols = (this.elements.length === 0) ? 0 : this.elements[0].length;\r\n return {rows: this.elements.length, cols: cols};\r\n }\r\n\r\n rows ()\r\n {\r\n return this.elements.length;\r\n }\r\n\r\n cols ()\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return 0;\r\n }\r\n return this.elements[0].length;\r\n }\r\n\r\n eql (matrix)\r\n {\r\n var M = matrix.elements || matrix;\r\n if (!M[0] || typeof(M[0][0]) === 'undefined')\r\n {\r\n M = new Matrix(M).elements;\r\n }\r\n if (this.elements.length === 0 || M.length === 0)\r\n {\r\n return this.elements.length === M.length;\r\n }\r\n if (this.elements.length !== M.length)\r\n {\r\n return false;\r\n }\r\n if (this.elements[0].length !== M[0].length)\r\n {\r\n return false;\r\n }\r\n var i = this.elements.length, nj = this.elements[0].length, j;\r\n while (i--)\r\n {\r\n j = nj;\r\n while (j--)\r\n {\r\n if (Math.abs(this.elements[i][j] - M[i][j]) > PRECISION)\r\n {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n dup ()\r\n {\r\n return new Matrix(this.elements);\r\n }\r\n\r\n map (fn, context)\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return new Matrix([]);\r\n }\r\n var els = [], i = this.elements.length, nj = this.elements[0].length, j;\r\n while (i--)\r\n {\r\n j = nj;\r\n els[i] = [];\r\n while (j--)\r\n {\r\n els[i][j] = fn.call(context, this.elements[i][j], i + 1, j + 1);\r\n }\r\n }\r\n return new Matrix(els);\r\n }\r\n\r\n isSameSizeAs (matrix)\r\n {\r\n var M = matrix.elements || matrix;\r\n if (typeof(M[0][0]) === 'undefined')\r\n {\r\n M = new Matrix(M).elements;\r\n }\r\n if (this.elements.length === 0)\r\n {\r\n return M.length === 0;\r\n }\r\n return (this.elements.length === M.length && this.elements[0].length === M[0].length);\r\n }\r\n\r\n add (matrix)\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return this.map(function(x)\r\n {\r\n return x\r\n });\r\n }\r\n var M = matrix.elements || matrix;\r\n if (typeof(M[0][0]) === 'undefined')\r\n {\r\n M = new Matrix(M).elements;\r\n }\r\n if (!this.isSameSizeAs(M))\r\n {\r\n return null;\r\n }\r\n return this.map(function(x, i, j)\r\n {\r\n return x + M[i-1][j-1];\r\n });\r\n }\r\n\r\n subtract (matrix)\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return this.map(function(x)\r\n {\r\n return x;\r\n });\r\n }\r\n var M = matrix.elements || matrix;\r\n if (typeof(M[0][0]) === 'undefined')\r\n {\r\n M = new Matrix(M).elements;\r\n }\r\n if (!this.isSameSizeAs(M))\r\n {\r\n return null;\r\n }\r\n return this.map(function(x, i, j)\r\n {\r\n return x - M[i-1][j-1];\r\n });\r\n }\r\n\r\n canMultiplyFromLeft (matrix)\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return false;\r\n }\r\n var M = matrix.elements || matrix;\r\n if (typeof(M[0][0]) === 'undefined')\r\n {\r\n M = new Matrix(M).elements;\r\n }\r\n // this.columns should equal matrix.rows\r\n return (this.elements[0].length === M.length);\r\n }\r\n\r\n multiply (matrix)\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return null;\r\n }\r\n if (!matrix.elements)\r\n {\r\n return this.map(function(x)\r\n {\r\n return x * matrix;\r\n });\r\n }\r\n var returnVector = matrix.modulus ? true : false;\r\n var M = matrix.elements || matrix;\r\n if (typeof(M[0][0]) === 'undefined')\r\n {\r\n M = new Matrix(M).elements;\r\n }\r\n if (!this.canMultiplyFromLeft(M))\r\n {\r\n return null;\r\n }\r\n var i = this.elements.length, nj = M[0].length, j;\r\n var cols = this.elements[0].length, c, elements = [], sum;\r\n while (i--)\r\n {\r\n j = nj;\r\n elements[i] = [];\r\n while (j--)\r\n {\r\n c = cols;\r\n sum = 0;\r\n while (c--)\r\n {\r\n sum += this.elements[i][c] * M[c][j];\r\n }\r\n elements[i][j] = sum;\r\n }\r\n }\r\n var M = new Matrix(elements);\r\n return returnVector ? M.col(1) : M;\r\n }\r\n\r\n minor (a, b, c, d)\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return null;\r\n }\r\n var elements = [], ni = c, i, nj, j;\r\n var rows = this.elements.length, cols = this.elements[0].length;\r\n while (ni--)\r\n {\r\n i = c - ni - 1;\r\n elements[i] = [];\r\n nj = d;\r\n while (nj--)\r\n {\r\n j = d - nj - 1;\r\n elements[i][j] = this.elements[(a+i-1)%rows][(b+j-1)%cols];\r\n }\r\n }\r\n return new Matrix(elements);\r\n }\r\n\r\n transpose ()\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return new Matrix([]);\r\n }\r\n var rows = this.elements.length, i, cols = this.elements[0].length, j;\r\n var elements = [], i = cols;\r\n while (i--)\r\n {\r\n j = rows;\r\n elements[i] = [];\r\n while (j--)\r\n {\r\n elements[i][j] = this.elements[j][i];\r\n }\r\n }\r\n return new Matrix(elements);\r\n }\r\n\r\n isSquare ()\r\n {\r\n var cols = (this.elements.length === 0) ? 0 : this.elements[0].length;\r\n return (this.elements.length === cols);\r\n }\r\n\r\n max ()\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return null;\r\n }\r\n var m = 0, i = this.elements.length, nj = this.elements[0].length, j;\r\n while (i--)\r\n {\r\n j = nj;\r\n while (j--)\r\n {\r\n if (Math.abs(this.elements[i][j]) > Math.abs(m))\r\n {\r\n m = this.elements[i][j];\r\n }\r\n }\r\n }\r\n return m;\r\n }\r\n\r\n indexOf (x)\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return null;\r\n }\r\n var index = null, ni = this.elements.length, i, nj = this.elements[0].length, j;\r\n for (i = 0; i < ni; i++)\r\n {\r\n for (j = 0; j < nj; j++)\r\n {\r\n if (this.elements[i][j] === x)\r\n {\r\n return {\r\n i: i+1,\r\n j: j+1\r\n };\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n diagonal ()\r\n {\r\n if (!this.isSquare)\r\n {\r\n return null;\r\n }\r\n var els = [], n = this.elements.length;\r\n for (var i = 0; i < n; i++)\r\n {\r\n els.push(this.elements[i][i]);\r\n }\r\n return new Vector(els);\r\n }\r\n\r\n toRightTriangular ()\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return new Matrix([]);\r\n }\r\n var M = this.dup(), els;\r\n var n = this.elements.length, i, j, np = this.elements[0].length, p;\r\n for (i = 0; i < n; i++)\r\n {\r\n if (M.elements[i][i] === 0)\r\n {\r\n for (j = i + 1; j < n; j++)\r\n {\r\n if (M.elements[j][i] !== 0)\r\n {\r\n els = [];\r\n for (p = 0; p < np; p++)\r\n {\r\n els.push(M.elements[i][p] + M.elements[j][p]);\r\n }\r\n M.elements[i] = els;\r\n break;\r\n }\r\n }\r\n }\r\n if (M.elements[i][i] !== 0)\r\n {\r\n for (j = i + 1; j < n; j++)\r\n {\r\n var multiplier = M.elements[j][i] / M.elements[i][i];\r\n els = [];\r\n for (p = 0; p < np; p++)\r\n {\r\n // Elements with column numbers up to an including the number of the\r\n // row that we're subtracting can safely be set straight to zero,\r\n // since that's the point of this routine and it avoids having to\r\n // loop over and correct rounding errors later\r\n els.push(p <= i ? 0 : M.elements[j][p] - M.elements[i][p] * multiplier);\r\n }\r\n M.elements[j] = els;\r\n }\r\n }\r\n }\r\n return M;\r\n }\r\n\r\n determinant ()\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return 1;\r\n }\r\n if (!this.isSquare())\r\n {\r\n return null;\r\n }\r\n var M = this.toRightTriangular();\r\n var det = M.elements[0][0], n = M.elements.length;\r\n for (var i = 1; i < n; i++)\r\n {\r\n det = det * M.elements[i][i];\r\n }\r\n return det;\r\n }\r\n\r\n isSingular ()\r\n {\r\n return (this.isSquare() && this.determinant() === 0);\r\n }\r\n\r\n trace ()\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return 0;\r\n }\r\n if (!this.isSquare())\r\n {\r\n return null;\r\n }\r\n var tr = this.elements[0][0], n = this.elements.length;\r\n for (var i = 1; i < n; i++)\r\n {\r\n tr += this.elements[i][i];\r\n }\r\n return tr;\r\n }\r\n\r\n rank ()\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return 0;\r\n }\r\n var M = this.toRightTriangular(), rank = 0;\r\n var i = this.elements.length, nj = this.elements[0].length, j;\r\n while (i--)\r\n {\r\n j = nj;\r\n while (j--)\r\n {\r\n if (Math.abs(M.elements[i][j]) > PRECISION)\r\n {\r\n rank++;\r\n break;\r\n }\r\n }\r\n }\r\n return rank;\r\n }\r\n\r\n augment (matrix)\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return this.dup();\r\n }\r\n var M = matrix.elements || matrix;\r\n if (typeof(M[0][0]) === 'undefined')\r\n {\r\n M = new Matrix(M).elements;\r\n }\r\n var T = this.dup(), cols = T.elements[0].length;\r\n var i = T.elements.length, nj = M[0].length, j;\r\n if (i !== M.length)\r\n {\r\n return null;\r\n }\r\n while (i--)\r\n {\r\n j = nj;\r\n while (j--)\r\n {\r\n T.elements[i][cols + j] = M[i][j];\r\n }\r\n }\r\n return T;\r\n }\r\n\r\n inverse ()\r\n {\r\n if (this.elements.length === 0)\r\n {\r\n return null;\r\n }\r\n if (!this.isSquare() || this.isSingular())\r\n {\r\n return null;\r\n }\r\n var n = this.elements.length, i= n, j;\r\n var M = this.augment(Matrix.I(n)).toRightTriangular();\r\n var np = M.elements[0].length, p, els, divisor;\r\n var inverse_elements = [], new_element;\r\n // Matrix is non-singular so there will be no zeros on the\r\n // diagonal. Cycle through rows from last to first.\r\n while (i--)\r\n {\r\n // First, normalise diagonal elements to 1\r\n els = [];\r\n inverse_elements[i] = [];\r\n divisor = M.elements[i][i];\r\n for (p = 0; p < np; p++)\r\n {\r\n new_element = M.elements[i][p] / divisor;\r\n els.push(new_element);\r\n // Shuffle off the current row of the right hand side into the results\r\n // array as it will not be modified by later runs through this loop\r\n if (p >= n)\r\n {\r\n inverse_elements[i].push(new_element);\r\n }\r\n }\r\n M.elements[i] = els;\r\n // Then, subtract this row from those above it to give the identity matrix\r\n // on the left hand side\r\n j = i;\r\n while (j--)\r\n {\r\n els = [];\r\n for (p = 0; p < np; p++)\r\n {\r\n els.push(M.elements[j][p] - M.elements[i][p] * M.elements[j][i]);\r\n }\r\n M.elements[j] = els;\r\n }\r\n }\r\n return new Matrix(inverse_elements);\r\n }\r\n\r\n round ()\r\n {\r\n return this.map(function(x)\r\n {\r\n return Math.round(x);\r\n });\r\n }\r\n\r\n snapTo (x)\r\n {\r\n return this.map(function(p)\r\n {\r\n return (Math.abs(p - x) <= PRECISION) ? x : p;\r\n });\r\n }\r\n\r\n inspect ()\r\n {\r\n var matrix_rows = [];\r\n var n = this.elements.length;\r\n if (n === 0) return '[]';\r\n for (var i = 0; i < n; i++)\r\n {\r\n matrix_rows.push(new Vector(this.elements[i]).inspect());\r\n }\r\n return matrix_rows.join('\\n');\r\n }\r\n\r\n setElements (els)\r\n {\r\n var i, j, elements = els.elements || els;\r\n if (elements[0] && typeof(elements[0][0]) !== 'undefined')\r\n {\r\n i = elements.length;\r\n this.elements = [];\r\n while (i--)\r\n {\r\n j = elements[i].length;\r\n this.elements[i] = [];\r\n while (j--)\r\n {\r\n this.elements[i][j] = elements[i][j];\r\n }\r\n }\r\n return this;\r\n }\r\n var n = elements.length;\r\n this.elements = [];\r\n for (i = 0; i < n; i++)\r\n {\r\n this.elements.push([elements[i]]);\r\n }\r\n return this;\r\n }\r\n\r\n //From glUtils.js\r\n flatten ()\r\n {\r\n var result = [];\r\n if (this.elements.length == 0)\r\n {\r\n return [];\r\n }\r\n\r\n\r\n for (var j = 0; j < this.elements[0].length; j++)\r\n {\r\n for (var i = 0; i < this.elements.length; i++)\r\n {\r\n result.push(this.elements[i][j]);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n //From glUtils.js\r\n ensure4x4 ()\r\n {\r\n if (this.elements.length == 4 && this.elements[0].length == 4)\r\n {\r\n return this;\r\n }\r\n\r\n if (this.elements.length > 4 || this.elements[0].length > 4)\r\n {\r\n return null;\r\n }\r\n\r\n for (var i = 0; i < this.elements.length; i++)\r\n {\r\n for (var j = this.elements[i].length; j < 4; j++)\r\n {\r\n if (i == j)\r\n {\r\n this.elements[i].push(1);\r\n }\r\n else\r\n {\r\n this.elements[i].push(0);\r\n }\r\n }\r\n }\r\n\r\n for (var i = this.elements.length; i < 4; i++)\r\n {\r\n if (i == 0)\r\n {\r\n this.elements.push([1, 0, 0, 0]);\r\n }\r\n else if (i == 1)\r\n {\r\n this.elements.push([0, 1, 0, 0]);\r\n }\r\n else if (i == 2)\r\n {\r\n this.elements.push([0, 0, 1, 0]);\r\n }\r\n else if (i == 3)\r\n {\r\n this.elements.push([0, 0, 0, 1]);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n //From glUtils.js\r\n make3x3 ()\r\n {\r\n if (this.elements.length != 4 || this.elements[0].length != 4)\r\n {\r\n return null;\r\n }\r\n\r\n return new Matrix([[this.elements[0][0], this.elements[0][1], this.elements[0][2]],\r\n [this.elements[1][0], this.elements[1][1], this.elements[1][2]],\r\n [this.elements[2][0], this.elements[2][1], this.elements[2][2]]]);\r\n };\r\n}\r\n\r\nMatrix.I = function(n)\r\n{\r\n var els = [], i = n, j;\r\n while (i--)\r\n {\r\n j = n;\r\n els[i] = [];\r\n while (j--)\r\n {\r\n els[i][j] = (i === j) ? 1 : 0;\r\n }\r\n }\r\n return new Matrix(els);\r\n};\r\n\r\nMatrix.Diagonal = function(elements)\r\n{\r\n var i = elements.length;\r\n var M = Matrix.I(i);\r\n while (i--)\r\n {\r\n M.elements[i][i] = elements[i];\r\n }\r\n return M;\r\n};\r\n\r\nMatrix.Rotation = function(theta, a)\r\n{\r\n if (!a)\r\n {\r\n return new Matrix([\r\n [Math.cos(theta), -Math.sin(theta)],\r\n [Math.sin(theta), Math.cos(theta)]\r\n ]);\r\n }\r\n var axis = a.dup();\r\n if (axis.elements.length !== 3)\r\n {\r\n return null;\r\n }\r\n var mod = axis.modulus();\r\n var x = axis.elements[0]/mod, y = axis.elements[1]/mod, z = axis.elements[2]/mod;\r\n var s = Math.sin(theta), c = Math.cos(theta), t = 1 - c;\r\n // Formula derived here: http://www.gamedev.net/reference/articles/article1199.asp\r\n // That proof rotates the co-ordinate system so theta becomes -theta and sin\r\n // becomes -sin here.\r\n return new Matrix([\r\n [ t*x*x + c, t*x*y - s*z, t*x*z + s*y ],\r\n [ t*x*y + s*z, t*y*y + c, t*y*z - s*x ],\r\n [ t*x*z - s*y, t*y*z + s*x, t*z*z + c ]\r\n ]);\r\n};\r\n\r\nMatrix.RotationX = function(t)\r\n{\r\n var c = Math.cos(t), s = Math.sin(t);\r\n return new Matrix([\r\n [ 1, 0, 0 ],\r\n [ 0, c, -s ],\r\n [ 0, s, c ]\r\n ]);\r\n};\r\nMatrix.RotationY = function(t)\r\n{\r\n var c = Math.cos(t), s = Math.sin(t);\r\n return new Matrix([\r\n [ c, 0, s ],\r\n [ 0, 1, 0 ],\r\n [ -s, 0, c ]\r\n ]);\r\n};\r\nMatrix.RotationZ = function(t)\r\n{\r\n var c = Math.cos(t), s = Math.sin(t);\r\n return new Matrix([\r\n [ c, -s, 0 ],\r\n [ s, c, 0 ],\r\n [ 0, 0, 1 ]\r\n ]);\r\n};\r\n\r\nMatrix.Random = function(n, m)\r\n{\r\n return Matrix.Zero(n, m).map(function()\r\n {\r\n return Math.random();\r\n });\r\n};\r\n\r\n//From glUtils.js\r\nMatrix.Translation = function (v)\r\n{\r\n if (v.elements.length == 2)\r\n {\r\n var r = Matrix.I(3);\r\n r.elements[2][0] = v.elements[0];\r\n r.elements[2][1] = v.elements[1];\r\n return r;\r\n }\r\n\r\n if (v.elements.length == 3)\r\n {\r\n var r = Matrix.I(4);\r\n r.elements[0][3] = v.elements[0];\r\n r.elements[1][3] = v.elements[1];\r\n r.elements[2][3] = v.elements[2];\r\n return r;\r\n }\r\n\r\n throw \"Invalid length for Translation\";\r\n};\r\n\r\nMatrix.Zero = function(n, m)\r\n{\r\n var els = [], i = n, j;\r\n while (i--)\r\n {\r\n j = m;\r\n els[i] = [];\r\n while (j--)\r\n {\r\n els[i][j] = 0;\r\n }\r\n }\r\n return new Matrix(els);\r\n};\r\n\r\nMatrix.prototype.toUpperTriangular = Matrix.prototype.toRightTriangular;\r\nMatrix.prototype.det = Matrix.prototype.determinant;\r\nMatrix.prototype.tr = Matrix.prototype.trace;\r\nMatrix.prototype.rk = Matrix.prototype.rank;\r\nMatrix.prototype.inv = Matrix.prototype.inverse;\r\nMatrix.prototype.x = Matrix.prototype.multiply;","\"use strict\";\r\n\r\nimport { Matrix } from \"./Matrix\";\r\nimport { PRECISION } from \"./PRECISION\";\r\n\r\nexport class Vector\r\n{\r\n constructor (elements)\r\n {\r\n this.setElements(elements);\r\n }\r\n\r\n e (i)\r\n {\r\n return (i < 1 || i > this.elements.length) ? null : this.elements[i-1];\r\n }\r\n\r\n dimensions ()\r\n {\r\n return this.elements.length;\r\n }\r\n\r\n modulus ()\r\n {\r\n return Math.sqrt(this.dot(this));\r\n }\r\n\r\n eql (vector)\r\n {\r\n var n = this.elements.length;\r\n var V = vector.elements || vector;\r\n if (n !== V.length)\r\n {\r\n return false;\r\n }\r\n while (n--)\r\n {\r\n if (Math.abs(this.elements[n] - V[n]) > PRECISION)\r\n {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n dup () {\r\n return new Vector(this.elements);\r\n }\r\n\r\n map (fn, context)\r\n {\r\n var elements = [];\r\n this.each(function(x, i)\r\n {\r\n elements.push(fn.call(context, x, i));\r\n });\r\n return new Vector(elements);\r\n }\r\n\r\n forEach (fn, context)\r\n {\r\n var n = this.elements.length;\r\n for (var i = 0; i < n; i++)\r\n {\r\n fn.call(context, this.elements[i], i+1);\r\n }\r\n }\r\n\r\n toUnitVector ()\r\n {\r\n var r = this.modulus();\r\n if (r === 0)\r\n {\r\n return this.dup();\r\n }\r\n return this.map(function(x)\r\n {\r\n return x/r;\r\n });\r\n }\r\n\r\n angleFrom (vector)\r\n {\r\n var V = vector.elements || vector;\r\n var n = this.elements.length, k = n, i;\r\n if (n !== V.length)\r\n {\r\n return null;\r\n }\r\n var dot = 0, mod1 = 0, mod2 = 0;\r\n // Work things out in parallel to save time\r\n this.each(function(x, i)\r\n {\r\n dot += x * V[i-1];\r\n mod1 += x * x;\r\n mod2 += V[i-1] * V[i-1];\r\n });\r\n mod1 = Math.sqrt(mod1); mod2 = Math.sqrt(mod2);\r\n if (mod1*mod2 === 0)\r\n {\r\n return null;\r\n }\r\n var theta = dot / (mod1*mod2);\r\n if (theta < -1)\r\n {\r\n theta = -1;\r\n }\r\n if (theta > 1)\r\n {\r\n theta = 1;\r\n }\r\n return Math.acos(theta);\r\n }\r\n\r\n isParallelTo (vector)\r\n {\r\n var angle = this.angleFrom(vector);\r\n return (angle === null) ? null : (angle <= PRECISION);\r\n }\r\n\r\n isAntiparallelTo (vector)\r\n {\r\n var angle = this.angleFrom(vector);\r\n return (angle === null) ? null : (Math.abs(angle - Math.PI) <= PRECISION);\r\n }\r\n\r\n isPerpendicularTo (vector)\r\n {\r\n var dot = this.dot(vector);\r\n return (dot === null) ? null : (Math.abs(dot) <= PRECISION);\r\n }\r\n\r\n add (vector)\r\n {\r\n var V = vector.elements || vector;\r\n if (this.elements.length !== V.length)\r\n {\r\n return null;\r\n }\r\n return this.map(function(x, i) { return x + V[i-1]; });\r\n }\r\n\r\n subtract (vector)\r\n {\r\n var V = vector.elements || vector;\r\n if (this.elements.length !== V.length)\r\n {\r\n return null;\r\n }\r\n return this.map(function(x, i)\r\n {\r\n return x - V[i-1];\r\n });\r\n }\r\n\r\n multiply (k)\r\n {\r\n return this.map(function(x)\r\n {\r\n return x*k;\r\n });\r\n }\r\n\r\n dot (vector)\r\n {\r\n var V = vector.elements || vector;\r\n var i, product = 0, n = this.elements.length;\r\n if (n !== V.length)\r\n {\r\n return null;\r\n }\r\n while (n--)\r\n {\r\n product += this.elements[n] * V[n];\r\n }\r\n return product;\r\n }\r\n\r\n cross (vector)\r\n {\r\n var B = vector.elements || vector;\r\n if (this.elements.length !== 3 || B.length !== 3)\r\n {\r\n return null;\r\n }\r\n var A = this.elements;\r\n return new Vector([\r\n (A[1] * B[2]) - (A[2] * B[1]),\r\n (A[2] * B[0]) - (A[0] * B[2]),\r\n (A[0] * B[1]) - (A[1] * B[0])\r\n ]);\r\n }\r\n\r\n max ()\r\n {\r\n var m = 0, i = this.elements.length;\r\n while (i--)\r\n {\r\n if (Math.abs(this.elements[i]) > Math.abs(m))\r\n {\r\n m = this.elements[i];\r\n }\r\n }\r\n return m;\r\n }\r\n\r\n indexOf (x)\r\n {\r\n var index = null, n = this.elements.length;\r\n for (var i = 0; i < n; i++)\r\n {\r\n if (index === null && this.elements[i] === x)\r\n {\r\n index = i + 1;\r\n }\r\n }\r\n return index;\r\n }\r\n\r\n toDiagonalMatrix ()\r\n {\r\n return Matrix.Diagonal(this.elements);\r\n }\r\n\r\n round ()\r\n {\r\n return this.map(function(x)\r\n {\r\n return Math.round(x);\r\n });\r\n }\r\n\r\n snapTo (x)\r\n {\r\n return this.map(function(y)\r\n {\r\n return (Math.abs(y - x) <= PRECISION) ? x : y;\r\n });\r\n }\r\n\r\n distanceFrom (obj)\r\n {\r\n if (obj.anchor || (obj.start && obj.end))\r\n {\r\n return obj.distanceFrom(this);\r\n }\r\n var V = obj.elements || obj;\r\n if (V.length !== this.elements.length)\r\n {\r\n return null;\r\n }\r\n var sum = 0, part;\r\n this.each(function(x, i)\r\n {\r\n part = x - V[i-1];\r\n sum += part * part;\r\n });\r\n return Math.sqrt(sum);\r\n }\r\n\r\n liesOn (line)\r\n {\r\n return line.contains(this);\r\n }\r\n\r\n liesIn (plane)\r\n {\r\n return plane.contains(this);\r\n }\r\n\r\n rotate (t, obj)\r\n {\r\n var V, R = null, x, y, z;\r\n if (t.determinant)\r\n {\r\n R = t.elements;\r\n }\r\n switch (this.elements.length)\r\n {\r\n case 2:\r\n {\r\n V = obj.elements || obj;\r\n if (V.length !== 2)\r\n {\r\n return null;\r\n }\r\n if (!R)\r\n {\r\n R = Matrix.Rotation(t).elements;\r\n }\r\n x = this.elements[0] - V[0];\r\n y = this.elements[1] - V[1];\r\n return new Vector([\r\n V[0] + R[0][0] * x + R[0][1] * y,\r\n V[1] + R[1][0] * x + R[1][1] * y\r\n ]);\r\n break;\r\n }\r\n case 3:\r\n {\r\n if (!obj.direction)\r\n {\r\n return null;\r\n }\r\n var C = obj.pointClosestTo(this).elements;\r\n if (!R)\r\n {\r\n R = Matrix.Rotation(t, obj.direction).elements;\r\n }\r\n x = this.elements[0] - C[0];\r\n y = this.elements[1] - C[1];\r\n z = this.elements[2] - C[2];\r\n return new Vector([\r\n C[0] + R[0][0] * x + R[0][1] * y + R[0][2] * z,\r\n C[1] + R[1][0] * x + R[1][1] * y + R[1][2] * z,\r\n C[2] + R[2][0] * x + R[2][1] * y + R[2][2] * z\r\n ]);\r\n break;\r\n }\r\n default:\r\n {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n reflectionIn (obj)\r\n {\r\n if (obj.anchor)\r\n {\r\n // obj is a plane or line\r\n var P = this.elements.slice();\r\n var C = obj.pointClosestTo(P).elements;\r\n return new Vector([C[0] + (C[0] - P[0]), C[1] + (C[1] - P[1]), C[2] + (C[2] - (P[2] || 0))]);\r\n }\r\n else\r\n {\r\n // obj is a point\r\n var Q = obj.elements || obj;\r\n if (this.elements.length !== Q.length)\r\n {\r\n return null;\r\n }\r\n return this.map(function(x, i) { return Q[i-1] + (Q[i-1] - x); });\r\n }\r\n }\r\n\r\n to3D ()\r\n {\r\n var V = this.dup();\r\n switch (V.elements.length)\r\n {\r\n case 3:\r\n {\r\n break;\r\n }\r\n case 2:\r\n {\r\n V.elements.push(0);\r\n break;\r\n }\r\n default:\r\n {\r\n return null;\r\n }\r\n }\r\n return V;\r\n }\r\n\r\n inspect ()\r\n {\r\n return '[' + this.elements.join(', ') + ']';\r\n }\r\n\r\n setElements (els)\r\n {\r\n this.elements = (els.elements || els).slice();\r\n return this;\r\n }\r\n\r\n //From glUtils.js\r\n flatten ()\r\n {\r\n return this.elements;\r\n }\r\n}\r\n\r\nVector.Random = function(n)\r\n{\r\n var elements = [];\r\n while (n--)\r\n {\r\n elements.push(Math.random());\r\n }\r\n return new Vector(elements);\r\n};\r\n\r\nVector.Zero = function(n)\r\n{\r\n var elements = [];\r\n while (n--)\r\n {\r\n elements.push(0);\r\n }\r\n return new Vector(elements);\r\n};\r\n\r\nVector.prototype.x = Vector.prototype.multiply;\r\nVector.prototype.each = Vector.prototype.forEach;\r\n\r\nVector.i = new Vector([1,0,0]);\r\nVector.j = new Vector([0,1,0]);\r\nVector.k = new Vector([0,0,1]);","import { Vector } from 'sylvester-es6/src/Vector';\n\nconst computeCentroids = (config, position, row) => {\n const centroids = [];\n\n const p = Object.keys(config.dimensions);\n const cols = p.length;\n const a = 0.5; // center between axes\n for (let i = 0; i < cols; ++i) {\n // centroids on 'real' axes\n const x = position(p[i]);\n const y = config.dimensions[p[i]].yscale(row[p[i]]);\n centroids.push(new Vector([x, y]));\n\n // centroids on 'virtual' axes\n if (i < cols - 1) {\n const cx = x + a * (position(p[i + 1]) - x);\n let cy = y + a * (config.dimensions[p[i + 1]].yscale(row[p[i + 1]]) - y);\n if (config.bundleDimension !== null) {\n const leftCentroid = config.clusterCentroids\n .get(\n config.dimensions[config.bundleDimension].yscale(\n row[config.bundleDimension]\n )\n )\n .get(p[i]);\n const rightCentroid = config.clusterCentroids\n .get(\n config.dimensions[config.bundleDimension].yscale(\n row[config.bundleDimension]\n )\n )\n .get(p[i + 1]);\n let centroid = 0.5 * (leftCentroid + rightCentroid);\n cy = centroid + (1 - config.bundlingStrength) * (cy - centroid);\n }\n centroids.push(new Vector([cx, cy]));\n }\n }\n\n return centroids;\n};\n\nexport default computeCentroids;\n","import { Vector } from 'sylvester-es6/src/Vector';\n\nconst computeControlPoints = (smoothness, centroids) => {\n const cols = centroids.length;\n const a = smoothness;\n const cps = [];\n\n cps.push(centroids[0]);\n cps.push(\n new Vector([\n centroids[0].e(1) + a * 2 * (centroids[1].e(1) - centroids[0].e(1)),\n centroids[0].e(2),\n ])\n );\n for (let col = 1; col < cols - 1; ++col) {\n let mid = centroids[col];\n let left = centroids[col - 1];\n let right = centroids[col + 1];\n\n let diff = left.subtract(right);\n cps.push(mid.add(diff.x(a)));\n cps.push(mid);\n cps.push(mid.subtract(diff.x(a)));\n }\n\n cps.push(\n new Vector([\n centroids[cols - 1].e(1) +\n a * 2 * (centroids[cols - 2].e(1) - centroids[cols - 1].e(1)),\n centroids[cols - 1].e(2),\n ])\n );\n cps.push(centroids[cols - 1]);\n\n return cps;\n};\n\nexport default computeControlPoints;\n","// draw single cubic bezier curve\nimport computeCentroids from './computeCentroids';\nimport computeControlPoints from './computeControlPoints';\nimport h from './height';\n\nconst singleCurve = (config, position, d, ctx) => {\n const centroids = computeCentroids(config, position, d);\n const cps = computeControlPoints(config.smoothness, centroids);\n\n ctx.moveTo(cps[0].e(1), cps[0].e(2));\n\n for (let i = 1; i < cps.length; i += 3) {\n if (config.showControlPoints) {\n for (let j = 0; j < 3; j++) {\n ctx.fillRect(cps[i + j].e(1), cps[i + j].e(2), 2, 2);\n }\n }\n ctx.bezierCurveTo(\n cps[i].e(1),\n cps[i].e(2),\n cps[i + 1].e(1),\n cps[i + 1].e(2),\n cps[i + 2].e(1),\n cps[i + 2].e(2)\n );\n }\n};\n\n// returns the y-position just beyond the separating null value line\nconst getNullPosition = config => {\n if (config.nullValueSeparator === 'bottom') {\n return h(config) + 1;\n } else if (config.nullValueSeparator === 'top') {\n return 1;\n } else {\n console.log(\n \"A value is NULL, but nullValueSeparator is not set; set it to 'bottom' or 'top'.\"\n );\n }\n return h(config) + 1;\n};\n\nconst singlePath = (config, position, d, ctx) => {\n Object.keys(config.dimensions)\n .map(p => [\n position(p),\n d[p] === undefined\n ? getNullPosition(config)\n : config.dimensions[p].yscale(d[p]),\n ])\n .sort((a, b) => a[0] - b[0])\n .forEach((p, i) => {\n i === 0 ? ctx.moveTo(p[0], p[1]) : ctx.lineTo(p[0], p[1]);\n });\n};\n\n// draw single polyline\nconst colorPath = (config, position, d, ctx) => {\n ctx.beginPath();\n if (\n (config.bundleDimension !== null && config.bundlingStrength > 0) ||\n config.smoothness > 0\n ) {\n singleCurve(config, position, d, ctx);\n } else {\n singlePath(config, position, d, ctx);\n }\n ctx.stroke();\n};\n\nexport default colorPath;\n","const _functor = v => (typeof v === 'function' ? v : () => v);\n\nexport default _functor;\n","import colorPath from '../util/colorPath';\nimport functor from '../util/functor';\n\nconst pathMark = (config, ctx, position) => (d, i) => {\n ctx.marked.strokeStyle = functor(config.color)(d, i);\n return colorPath(config, position, d, ctx.marked);\n};\n\nconst renderMarkedDefault = (config, pc, ctx, position) => () => {\n pc.clear('marked');\n\n if (config.marked.length) {\n config.marked.forEach(pathMark(config, ctx, position));\n }\n};\n\nconst renderMarkedQueue = (config, markedQueue) => () => {\n if (config.marked) {\n markedQueue(config.marked);\n } else {\n markedQueue([]); // This is needed to clear the currently marked items\n }\n};\n\nconst renderMarked = (config, pc, events) =>\n function() {\n if (!Object.keys(config.dimensions).length) pc.detectDimensions();\n\n pc.renderMarked[config.mode]();\n events.call('render', this);\n return this;\n };\n\nexport { pathMark, renderMarked, renderMarkedDefault, renderMarkedQueue };\n","import isBrushed from '../util/isBrushed';\nimport colorPath from '../util/colorPath';\nimport functor from '../util/functor';\n\nconst pathBrushed = (config, ctx, position) => (d, i) => {\n if (config.brushedColor !== null) {\n ctx.brushed.strokeStyle = functor(config.brushedColor)(d, i);\n } else {\n ctx.brushed.strokeStyle = functor(config.color)(d, i);\n }\n return colorPath(config, position, d, ctx.brushed);\n};\n\nconst renderBrushedDefault = (config, ctx, position, pc, brushGroup) => () => {\n pc.clear('brushed');\n\n if (isBrushed(config, brushGroup) && config.brushed !== false) {\n config.brushed.forEach(pathBrushed(config, ctx, position));\n }\n};\n\nconst renderBrushedQueue = (config, brushGroup, brushedQueue) => () => {\n if (isBrushed(config, brushGroup)) {\n brushedQueue(config.brushed);\n } else {\n brushedQueue([]); // This is needed to clear the currently brushed items\n }\n};\n\nconst renderBrushed = (config, pc, events) =>\n function() {\n if (!Object.keys(config.dimensions).length) pc.detectDimensions();\n\n pc.renderBrushed[config.mode]();\n events.call('render', this);\n return this;\n };\n\nexport { pathBrushed, renderBrushed, renderBrushedDefault, renderBrushedQueue };\n","import { select } from 'd3-selection';\n\nconst brushReset = (config, pc) =>\n function(dimension) {\n const brushesToKeep = [];\n for (let j = 0; j < config.brushes.length; j++) {\n if (config.brushes[j].data !== dimension) {\n brushesToKeep.push(config.brushes[j]);\n }\n }\n\n config.brushes = brushesToKeep;\n config.brushed = false;\n\n if (pc.g() !== undefined) {\n const nodes = pc\n .g()\n .selectAll('.brush')\n .nodes();\n for (let i = 0; i < nodes.length; i++) {\n if (nodes[i].__data__ === dimension) {\n // remove all dummy brushes for this axis or the real brush\n select(select(nodes[i]).nodes()[0].parentNode)\n .selectAll('.dummy')\n .remove();\n config.dimensions[dimension].brush.move(select(nodes[i], null));\n }\n }\n }\n\n return this;\n };\n\nexport default brushReset;\n","// a better \"typeof\" from this post: http://stackoverflow.com/questions/7390426/better-way-to-get-type-of-a-javascript-variable\nconst toType = v => {\n return {}.toString\n .call(v)\n .match(/\\s([a-zA-Z]+)/)[1]\n .toLowerCase();\n};\n\nexport default toType;\n","// this descriptive text should live with other introspective methods\nconst toString = config => () =>\n 'Parallel Coordinates: ' +\n Object.keys(config.dimensions).length +\n ' dimensions (' +\n Object.keys(config.data[0]).length +\n ' total) , ' +\n config.data.length +\n ' rows';\n\nexport default toString;\n","// pairs of adjacent dimensions\nconst adjacentPairs = arr => {\n let ret = [];\n for (let i = 0; i < arr.length - 1; i++) {\n ret.push([arr[i], arr[i + 1]]);\n }\n return ret;\n};\n\nexport default adjacentPairs;\n","import { selectAll } from 'd3-selection';\n\nimport colorPath from '../util/colorPath';\nimport functor from '../util/functor';\n\nconst pathHighlight = (config, ctx, position) => (d, i) => {\n ctx.highlight.strokeStyle = functor(config.color)(d, i);\n return colorPath(config, position, d, ctx.highlight);\n};\n\n// highlight an array of data\nconst highlight = (config, pc, canvas, events, ctx, position) =>\n function(data = null) {\n if (data === null) {\n return config.highlighted;\n }\n\n config.highlighted = data;\n pc.clear('highlight');\n selectAll([canvas.foreground, canvas.brushed]).classed('faded', true);\n data.forEach(pathHighlight(config, ctx, position));\n events.call('highlight', this, data);\n return this;\n };\n\nexport default highlight;\n","import { selectAll } from 'd3-selection';\n\n// clear highlighting\nconst unhighlight = (config, pc, canvas) =>\n function() {\n config.highlighted = [];\n pc.clear('highlight');\n selectAll([canvas.foreground, canvas.brushed]).classed('faded', false);\n return this;\n };\n\nexport default unhighlight;\n","import { selectAll } from 'd3-selection';\n\nimport { pathMark } from './renderMarked';\n\n// mark an array of data\nconst mark = (config, pc, canvas, events, ctx, position) =>\n function(data = null) {\n if (data === null) {\n return config.marked;\n }\n\n // add array to already marked data\n config.marked = config.marked.concat(data);\n selectAll([canvas.foreground, canvas.brushed]).classed('dimmed', true);\n data.forEach(pathMark(config, ctx, position));\n events.call('mark', this, data);\n return this;\n };\n\nexport default mark;\n","import { selectAll } from 'd3-selection';\n\n// clear marked data arrays\nconst unmark = (config, pc, canvas) =>\n function() {\n config.marked = [];\n pc.clear('marked');\n selectAll([canvas.foreground, canvas.brushed]).classed('dimmed', false);\n return this;\n };\n\nexport default unmark;\n","const removeAxes = pc =>\n function() {\n pc._g.remove();\n\n delete pc._g;\n return this;\n };\n\nexport default removeAxes;\n","/**\n * Renders the polylines.\n * If no dimensions have been specified, it will attempt to detect quantitative\n * dimensions based on the first data entry. If scales haven't been set, it will\n * autoscale based on the extent for each dimension.\n *\n * @param config\n * @param pc\n * @param events\n * @returns {Function}\n */\nconst render = (config, pc, events) =>\n function() {\n // try to autodetect dimensions and create scales\n if (!Object.keys(config.dimensions).length) {\n pc.detectDimensions();\n }\n pc.autoscale();\n\n pc.render[config.mode]();\n\n events.call('render', this);\n return this;\n };\n\nexport default render;\n","import colorPath from '../util/colorPath';\nimport functor from '../util/functor';\n\nconst pathForeground = (config, ctx, position) => (d, i) => {\n ctx.foreground.strokeStyle = functor(config.color)(d, i);\n return colorPath(config, position, d, ctx.foreground);\n};\n\nconst renderDefault = (config, pc, ctx, position) => () => {\n pc.clear('foreground');\n pc.clear('highlight');\n\n pc.renderBrushed.default();\n pc.renderMarked.default();\n\n config.data.forEach(pathForeground(config, ctx, position));\n};\n\nconst renderDefaultQueue = (config, pc, foregroundQueue) => () => {\n pc.renderBrushed.queue();\n pc.renderMarked.queue();\n foregroundQueue(config.data);\n};\n\nexport default renderDefault;\n\nexport { pathForeground, renderDefaultQueue };\n","import toType from './toType';\n\n// try to coerce to number before returning type\nconst toTypeCoerceNumbers = v =>\n parseFloat(v) == v && v !== null ? 'number' : toType(v);\n\nexport default toTypeCoerceNumbers;\n","import toTypeCoerceNumbers from './toTypeCoerceNumbers';\n\n// attempt to determine types of each dimension based on first row of data\nconst detectDimensionTypes = data =>\n Object.keys(data[0]).reduce((acc, cur) => {\n const key = isNaN(Number(cur)) ? cur : parseInt(cur);\n acc[key] = toTypeCoerceNumbers(data[0][cur]);\n\n return acc;\n }, {});\n\nexport default detectDimensionTypes;\n","import { ascending } from 'd3-array';\n\nconst getOrderedDimensionKeys = config => () =>\n Object.keys(config.dimensions).sort((x, y) =>\n ascending(config.dimensions[x].index, config.dimensions[y].index)\n );\n\nexport default getOrderedDimensionKeys;\n","const interactive = flags =>\n function() {\n flags.interactive = true;\n return this;\n };\n\nexport default interactive;\n","const shadows = (flags, pc) =>\n function() {\n flags.shadows = true;\n pc.alphaOnBrushed(0.1);\n pc.render();\n return this;\n };\n\nexport default shadows;\n","import { select } from 'd3-selection';\n\n/**\n * Setup a new parallel coordinates chart.\n *\n * @param config\n * @param canvas\n * @param ctx\n * @returns {pc} a parcoords closure\n */\nconst init = (config, canvas, ctx) => {\n /**\n * Create the chart within a container. The selector can also be a d3 selection.\n *\n * @param selection a d3 selection\n * @returns {pc} instance for chained api\n */\n const pc = function(selection) {\n selection = pc.selection = select(selection);\n\n config.width = selection.node().clientWidth;\n config.height = selection.node().clientHeight;\n // canvas data layers\n ['dots', 'foreground', 'brushed', 'marked', 'highlight'].forEach(layer => {\n canvas[layer] = selection\n .append('canvas')\n .attr('class', layer)\n .node();\n ctx[layer] = canvas[layer].getContext('2d');\n });\n\n // svg tick and brush layers\n pc.svg = selection\n .append('svg')\n .attr('width', config.width)\n .attr('height', config.height)\n .style('font', '14px sans-serif')\n .style('position', 'absolute')\n\n .append('svg:g')\n .attr(\n 'transform',\n 'translate(' + config.margin.left + ',' + config.margin.top + ')'\n );\n // for chained api\n return pc;\n };\n\n // for partial-application style programming\n return pc;\n};\n\nexport default init;\n","const flip = config =>\n function(d) {\n //__.dimensions[d].yscale.domain().reverse(); // does not work\n config.dimensions[d].yscale.domain(\n config.dimensions[d].yscale.domain().reverse()\n ); // works\n\n return this;\n };\n\nexport default flip;\n","const detectDimensions = pc =>\n function() {\n pc.dimensions(pc.applyDimensionDefaults());\n return this;\n };\n\nexport default detectDimensions;\n","const scale = (config, pc) =>\n function(d, domain) {\n config.dimensions[d].yscale.domain(domain);\n pc.render.default();\n pc.updateAxes();\n\n return this;\n };\n\nexport default scale;\n","const DefaultConfig = {\n data: [],\n highlighted: [],\n marked: [],\n dimensions: {},\n dimensionTitleRotation: 0,\n brushes: [],\n brushed: false,\n brushedColor: null,\n alphaOnBrushed: 0.0,\n lineWidth: 1.4,\n highlightedLineWidth: 3,\n mode: 'default',\n markedLineWidth: 3,\n markedShadowColor: '#ffffff',\n markedShadowBlur: 10,\n rate: 20,\n width: 600,\n height: 300,\n margin: { top: 24, right: 20, bottom: 12, left: 20 },\n nullValueSeparator: 'undefined', // set to \"top\" or \"bottom\"\n nullValueSeparatorPadding: { top: 8, right: 0, bottom: 8, left: 0 },\n color: '#069',\n composite: 'source-over',\n alpha: 0.7,\n bundlingStrength: 0.5,\n bundleDimension: null,\n smoothness: 0.0,\n showControlPoints: false,\n hideAxis: [],\n flipAxes: [],\n animationTime: 1100, // How long it takes to flip the axis when you double click\n rotateLabels: false,\n};\n\nexport default DefaultConfig;\n","import { entries, keys } from 'd3-collection';\nimport { axisLeft } from 'd3-axis';\nimport { dispatch } from 'd3-dispatch';\nimport { scalePoint } from 'd3-scale';\n\nimport DefaultConfig from './defaultConfig';\n\nconst initState = userConfig => {\n const config = Object.assign({}, DefaultConfig, userConfig);\n\n if (userConfig && userConfig.dimensionTitles) {\n console.warn(\n 'dimensionTitles passed in userConfig is deprecated. Add title to dimension object.'\n );\n entries(userConfig.dimensionTitles).forEach(d => {\n if (config.dimensions[d.key]) {\n config.dimensions[d.key].title = config.dimensions[d.key].title\n ? config.dimensions[d.key].title\n : d.value;\n } else {\n config.dimensions[d.key] = {\n title: d.value,\n };\n }\n });\n }\n\n const eventTypes = [\n 'render',\n 'resize',\n 'highlight',\n 'mark',\n 'brush',\n 'brushend',\n 'brushstart',\n 'axesreorder',\n ].concat(keys(config));\n\n const events = dispatch.apply(this, eventTypes),\n flags = {\n brushable: false,\n reorderable: false,\n axes: false,\n interactive: false,\n debug: false,\n },\n xscale = scalePoint(),\n dragging = {},\n axis = axisLeft().ticks(5),\n ctx = {},\n canvas = {};\n\n const brush = {\n modes: {\n None: {\n install: function(pc) {}, // Nothing to be done.\n uninstall: function(pc) {}, // Nothing to be done.\n selected: function() {\n return [];\n }, // Nothing to return\n brushState: function() {\n return {};\n },\n },\n },\n mode: 'None',\n predicate: 'AND',\n currentMode: function() {\n return this.modes[this.mode];\n },\n };\n\n return {\n config,\n events,\n eventTypes,\n flags,\n xscale,\n dragging,\n axis,\n ctx,\n canvas,\n brush,\n };\n};\n\nexport default initState;\n","const computeClusterCentroids = (config, d) => {\n const clusterCentroids = new Map();\n const clusterCounts = new Map();\n // determine clusterCounts\n config.data.forEach(function(row) {\n let scaled = config.dimensions[d].yscale(row[d]);\n if (!clusterCounts.has(scaled)) {\n clusterCounts.set(scaled, 0);\n }\n let count = clusterCounts.get(scaled);\n clusterCounts.set(scaled, count + 1);\n });\n\n config.data.forEach(function(row) {\n Object.keys(config.dimensions).map(p => {\n let scaled = config.dimensions[d].yscale(row[d]);\n if (!clusterCentroids.has(scaled)) {\n const _map = new Map();\n clusterCentroids.set(scaled, _map);\n }\n if (!clusterCentroids.get(scaled).has(p)) {\n clusterCentroids.get(scaled).set(p, 0);\n }\n let value = clusterCentroids.get(scaled).get(p);\n value += config.dimensions[p].yscale(row[p]) / clusterCounts.get(scaled);\n clusterCentroids.get(scaled).set(p, value);\n });\n });\n\n return clusterCentroids;\n};\n\nexport default computeClusterCentroids;\n","// side effects for setters\nimport { dispatch } from 'd3-dispatch';\nimport computeClusterCentroids from '../util/computeClusterCentroids';\nimport flipAxisAndUpdatePCP from '../util/flipAxisAndUpdatePCP';\n\nconst without = (arr, items) => {\n items.forEach(el => {\n delete arr[el];\n });\n return arr;\n};\n\nconst sideEffects = (\n config,\n ctx,\n pc,\n xscale,\n axis,\n flags,\n brushedQueue,\n markedQueue,\n foregroundQueue\n) =>\n dispatch\n .apply(this, Object.keys(config))\n .on('composite', d => {\n ctx.foreground.globalCompositeOperation = d.value;\n ctx.brushed.globalCompositeOperation = d.value;\n })\n .on('alpha', d => {\n ctx.foreground.globalAlpha = d.value;\n ctx.brushed.globalAlpha = d.value;\n })\n .on('brushedColor', d => {\n ctx.brushed.strokeStyle = d.value;\n })\n .on('width', d => pc.resize())\n .on('height', d => pc.resize())\n .on('margin', d => pc.resize())\n .on('rate', d => {\n brushedQueue.rate(d.value);\n markedQueue.rate(d.value);\n foregroundQueue.rate(d.value);\n })\n .on('dimensions', d => {\n config.dimensions = pc.applyDimensionDefaults(Object.keys(d.value));\n xscale.domain(pc.getOrderedDimensionKeys());\n pc.sortDimensions();\n if (flags.interactive) {\n pc.render().updateAxes();\n }\n })\n .on('bundleDimension', d => {\n if (!Object.keys(config.dimensions).length) pc.detectDimensions();\n pc.autoscale();\n if (typeof d.value === 'number') {\n if (d.value < Object.keys(config.dimensions).length) {\n config.bundleDimension = config.dimensions[d.value];\n } else if (d.value < config.hideAxis.length) {\n config.bundleDimension = config.hideAxis[d.value];\n }\n } else {\n config.bundleDimension = d.value;\n }\n\n config.clusterCentroids = computeClusterCentroids(\n config,\n config.bundleDimension\n );\n if (flags.interactive) {\n pc.render();\n }\n })\n .on('hideAxis', d => {\n pc.brushReset();\n pc.dimensions(pc.applyDimensionDefaults());\n pc.dimensions(without(config.dimensions, d.value));\n pc.render();\n })\n .on('flipAxes', d => {\n if (d.value && d.value.length) {\n d.value.forEach(function(dimension) {\n flipAxisAndUpdatePCP(config, pc, axis)(dimension);\n });\n pc.updateAxes(0);\n }\n });\n\nexport default sideEffects;\n","const getset = (obj, state, events, side_effects) => {\n Object.keys(state).forEach(function(key) {\n obj[key] = function(x) {\n if (!arguments.length) {\n return state[key];\n }\n if (\n key === 'dimensions' &&\n Object.prototype.toString.call(x) === '[object Array]'\n ) {\n console.warn('pc.dimensions([]) is deprecated, use pc.dimensions({})');\n x = obj.applyDimensionDefaults(x);\n }\n let old = state[key];\n state[key] = x;\n side_effects.call(key, obj, { value: x, previous: old });\n events.call(key, obj, { value: x, previous: old });\n return obj;\n };\n });\n};\n\nexport default getset;\n","// side effects for setters\nimport sideEffects from './state/sideEffects';\nimport getset from './util/getset';\n\nconst d3_rebind = (target, source, method) =>\n function() {\n const value = method.apply(source, arguments);\n return value === source ? target : value;\n };\n\nconst _rebind = (target, source, method) => {\n target[method] = d3_rebind(target, source, source[method]);\n return target;\n};\n\nconst bindEvents = (\n __,\n ctx,\n pc,\n xscale,\n flags,\n brushedQueue,\n markedQueue,\n foregroundQueue,\n events,\n axis\n) => {\n const side_effects = sideEffects(\n __,\n ctx,\n pc,\n xscale,\n axis,\n flags,\n brushedQueue,\n markedQueue,\n foregroundQueue\n );\n\n // create getter/setters\n getset(pc, __, events, side_effects);\n\n // expose events\n // getter/setter with event firing\n _rebind(pc, events, 'on');\n\n _rebind(\n pc,\n axis,\n 'ticks',\n 'orient',\n 'tickValues',\n 'tickSubdivide',\n 'tickSize',\n 'tickPadding',\n 'tickFormat'\n );\n};\n\nexport default bindEvents;\n","// misc\nimport renderQueue from './util/renderQueue';\nimport w from './util/width';\n\n// brush\nimport install1DAxes from './brush/1d';\nimport install1DAxesMulti from './brush/1d-multi';\nimport install2DStrums from './brush/strums';\nimport installAngularBrush from './brush/angular';\n\n// api\nimport intersection from './api/intersection';\nimport mergeParcoords from './api/mergeParcoords';\nimport selected from './api/selected';\nimport brushMode from './api/brushMode';\nimport updateAxes from './api/updateAxes';\nimport autoscale from './api/autoscale';\nimport brushable from './api/brushable';\nimport commonScale from './api/commonScale';\nimport computeRealCentroids from './api/computeRealCentroids';\nimport applyDimensionDefaults from './api/applyDimensionDefaults';\nimport createAxes from './api/createAxes';\nimport axisDots from './api/axisDots';\nimport applyAxisConfig from './api/applyAxisConfig';\nimport reorderable from './api/reorderable';\nimport resize from './api/resize';\nimport reorder from './api/reorder';\nimport sortDimensions from './api/sortDimensions';\nimport sortDimensionsByRowData from './api/sortDimensionsByRowData';\nimport clear from './api/clear';\nimport {\n pathMark,\n renderMarked,\n renderMarkedDefault,\n renderMarkedQueue,\n} from './api/renderMarked';\nimport {\n pathBrushed,\n renderBrushed,\n renderBrushedDefault,\n renderBrushedQueue,\n} from './api/renderBrushed';\nimport brushReset from './api/brushReset';\nimport toType from './api/toType';\nimport toString from './api/toString';\nimport adjacentPairs from './api/adjacentPairs';\nimport highlight from './api/highlight';\nimport unhighlight from './api/unhighlight';\nimport mark from './api/mark';\nimport unmark from './api/unmark';\nimport removeAxes from './api/removeAxes';\nimport render from './api/render';\nimport renderDefault, {\n pathForeground,\n renderDefaultQueue,\n} from './api/renderDefault';\nimport toTypeCoerceNumbers from './api/toTypeCoerceNumbers';\nimport detectDimensionTypes from './api/detectDimensionTypes';\nimport getOrderedDimensionKeys from './api/getOrderedDimensionKeys';\nimport interactive from './api/interactive';\nimport shadows from './api/shadows';\nimport init from './api/init';\nimport flip from './api/flip';\nimport detectDimensions from './api/detectDimensions';\nimport scale from './api/scale';\n\nimport { version } from '../package.json';\nimport initState from './state';\nimport bindEvents from './bindEvents';\n\n//css\nimport './parallel-coordinates.css';\n\nconst ParCoords = userConfig => {\n const state = initState(userConfig);\n const {\n config,\n events,\n flags,\n xscale,\n dragging,\n axis,\n ctx,\n canvas,\n brush,\n } = state;\n\n const pc = init(config, canvas, ctx);\n\n const position = d => {\n if (xscale.range().length === 0) {\n xscale.range([0, w(config)], 1);\n }\n return dragging[d] == null ? xscale(d) : dragging[d];\n };\n\n const brushedQueue = renderQueue(pathBrushed(config, ctx, position))\n .rate(50)\n .clear(() => pc.clear('brushed'));\n\n const markedQueue = renderQueue(pathMark(config, ctx, position))\n .rate(50)\n .clear(() => pc.clear('marked'));\n\n const foregroundQueue = renderQueue(pathForeground(config, ctx, position))\n .rate(50)\n .clear(function() {\n pc.clear('foreground');\n pc.clear('highlight');\n });\n\n bindEvents(\n config,\n ctx,\n pc,\n xscale,\n flags,\n brushedQueue,\n markedQueue,\n foregroundQueue,\n events,\n axis\n );\n\n // expose the state of the chart\n pc.state = config;\n pc.flags = flags;\n\n pc.autoscale = autoscale(config, pc, xscale, ctx);\n pc.scale = scale(config, pc);\n pc.flip = flip(config);\n pc.commonScale = commonScale(config, pc);\n pc.detectDimensions = detectDimensions(pc);\n // attempt to determine types of each dimension based on first row of data\n pc.detectDimensionTypes = detectDimensionTypes;\n pc.applyDimensionDefaults = applyDimensionDefaults(config, pc);\n pc.getOrderedDimensionKeys = getOrderedDimensionKeys(config);\n\n //Renders the polylines.\n pc.render = render(config, pc, events);\n pc.renderBrushed = renderBrushed(config, pc, events);\n pc.renderMarked = renderMarked(config, pc, events);\n pc.render.default = renderDefault(config, pc, ctx, position);\n pc.render.queue = renderDefaultQueue(config, pc, foregroundQueue);\n pc.renderBrushed.default = renderBrushedDefault(\n config,\n ctx,\n position,\n pc,\n brush\n );\n pc.renderBrushed.queue = renderBrushedQueue(config, brush, brushedQueue);\n pc.renderMarked.default = renderMarkedDefault(config, pc, ctx, position);\n pc.renderMarked.queue = renderMarkedQueue(config, markedQueue);\n\n pc.compute_real_centroids = computeRealCentroids(config, position);\n pc.shadows = shadows(flags, pc);\n pc.axisDots = axisDots(config, pc, position);\n pc.clear = clear(config, pc, ctx, brush);\n pc.createAxes = createAxes(config, pc, xscale, flags, axis);\n pc.removeAxes = removeAxes(pc);\n pc.updateAxes = updateAxes(config, pc, position, axis, flags);\n pc.applyAxisConfig = applyAxisConfig;\n pc.brushable = brushable(config, pc, flags);\n pc.brushReset = brushReset(config, pc);\n pc.selected = selected(config, pc);\n pc.reorderable = reorderable(config, pc, xscale, position, dragging, flags);\n\n // Reorder dimensions, such that the highest value (visually) is on the left and\n // the lowest on the right. Visual values are determined by the data values in\n // the given row.\n pc.reorder = reorder(config, pc, xscale);\n pc.sortDimensionsByRowData = sortDimensionsByRowData(config);\n pc.sortDimensions = sortDimensions(config, position);\n\n // pairs of adjacent dimensions\n pc.adjacent_pairs = adjacentPairs;\n pc.interactive = interactive(flags);\n\n // expose internal state\n pc.xscale = xscale;\n pc.ctx = ctx;\n pc.canvas = canvas;\n pc.g = () => pc._g;\n\n // rescale for height, width and margins\n // TODO currently assumes chart is brushable, and destroys old brushes\n pc.resize = resize(config, pc, flags, events);\n\n // highlight an array of data\n pc.highlight = highlight(config, pc, canvas, events, ctx, position);\n // clear highlighting\n pc.unhighlight = unhighlight(config, pc, canvas);\n\n // mark an array of data\n pc.mark = mark(config, pc, canvas, events, ctx, position);\n // clear marked data\n pc.unmark = unmark(config, pc, canvas);\n\n // calculate 2d intersection of line a->b with line c->d\n // points are objects with x and y properties\n pc.intersection = intersection;\n\n // Merges the canvases and SVG elements into one canvas element which is then passed into the callback\n // (so you can choose to save it to disk, etc.)\n pc.mergeParcoords = mergeParcoords(pc);\n pc.brushModes = () => Object.getOwnPropertyNames(brush.modes);\n pc.brushMode = brushMode(brush, config, pc);\n\n // install brushes\n install1DAxes(brush, config, pc, events);\n install2DStrums(brush, config, pc, events, xscale);\n installAngularBrush(brush, config, pc, events, xscale);\n install1DAxesMulti(brush, config, pc, events);\n\n pc.version = version;\n // this descriptive text should live with other introspective methods\n pc.toString = toString(config);\n pc.toType = toType;\n // try to coerce to number before returning type\n pc.toTypeCoerceNumbers = toTypeCoerceNumbers;\n\n return pc;\n};\n\nexport default ParCoords;\n"],"names":["global","requestAnimationFrame","webkitRequestAnimationFrame","cancelAnimationFrame","lastTime","callback","currTime","Date","getTime","timeToCall","Math","max","id","setTimeout","clearTimeout","define","window","renderQueue","func","_queue","_rate","_invalidate","_clear","rq","data","render","valid","invalidate","doFrame","chunk","splice","map","slice","add","concat","rate","value","arguments","length","remaining","clear","w","config","width","margin","right","left","xhtml","svg","xlink","xml","xmlns","name","prefix","i","indexOf","namespaces","hasOwnProperty","space","local","creatorInherit","document","ownerDocument","uri","namespaceURI","documentElement","createElement","createElementNS","creatorFixed","fullname","namespace","none","selector","querySelector","select","groups","_groups","m","subgroups","Array","j","group","n","subgroup","node","subnode","call","__data__","Selection","_parents","empty","querySelectorAll","selectorAll","parents","push","matcher","matches","element","vendorMatches","webkitMatchesSelector","msMatchesSelector","mozMatchesSelector","oMatchesSelector","match","update","_enter","sparse","EnterNode","parent","datum","_next","_parent","prototype","constructor","appendChild","child","insertBefore","next","x","keyPrefix","bindIndex","enter","exit","groupLength","dataLength","bindKey","key","nodeByKeyValue","keyValues","keyValue","size","each","d","bind","constant","enterGroup","updateGroup","exitGroup","i0","i1","previous","_exit","selection","groups0","groups1","m0","m1","min","merges","group0","group1","merge","nextSibling","parentNode","compare","ascending","compareNode","a","b","sortgroups","sortgroup","sort","order","NaN","apply","nodes","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","getAttributeNS","getAttribute","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","trim","split","classList","ClassList","_node","_names","join","remove","contains","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","lower","previousSibling","firstChild","create","creator","constantNull","before","removeChild","selection_cloneShallow","cloneNode","selection_cloneDeep","deep","property","filterEvents","event","mouseenter","mouseleave","filterContextListener","listener","index","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","parseTypenames","typenames","t","type","onRemove","typename","on","__on","o","removeEventListener","capture","onAdd","wrap","addEventListener","customEvent","that","args","sourceEvent","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","root","selection_select","selectAll","selection_selectAll","filter","selection_filter","selection_data","selection_enter","selection_exit","selection_merge","selection_order","selection_sort","selection_call","selection_nodes","selection_node","selection_size","selection_empty","selection_each","attr","selection_attr","selection_style","selection_property","classed","selection_classed","text","selection_text","html","selection_html","selection_raise","selection_lower","append","selection_append","insert","selection_insert","selection_remove","clone","selection_clone","selection_datum","selection_on","dispatch","selection_dispatch","current","source","ownerSVGElement","createSVGPoint","point","clientX","y","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","clientLeft","top","clientTop","changedTouches","touches","identifier","touch","noop","_","Error","Dispatch","types","T","get","set","copy","c","nopropagation","stopImmediatePropagation","preventDefault","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","DragEvent","target","subject","active","dx","dy","defaultFilter","button","defaultContainer","defaultSubject","defaultTouchable","container","touchable","gestures","listeners","mousedownx","mousedowny","mousemoving","touchending","clickDistance2","drag","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","mouse","mousemoved","mouseupped","nodrag","p","s","sublisteners","p0","clickDistance","sqrt","factory","extend","definition","Object","Color","darker","brighter","reI","reN","reP","reHex3","reHex6","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color","displayable","rgb","hex","toString","format","toLowerCase","exec","parseInt","Rgb","rgbn","rgba","hsla","r","g","rgbConvert","opacity","k","pow","isNaN","round","h","l","Hsl","hslConvert","hsl","m2","hsl2rgb","deg2rad","PI","rad2deg","K","Xn","Yn","Zn","t0","t1","t2","t3","labConvert","Lab","Hcl","cos","sin","rgb2lrgb","xyz2lab","z","lab","lab2xyz","lrgb2rgb","hclConvert","atan2","hcl","A","B","C","D","E","ED","EB","BC_DA","cubehelixConvert","Cubehelix","bl","cubehelix","cosh","sinh","linear","exponential","gamma","nogamma","rgbGamma","start","end","colorRgb","nb","na","setTime","reA","reB","zero","one","bi","lastIndex","am","bm","bs","q","number","date","isArray","array","valueOf","object","degrees","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","e","f","atan","cssNode","cssRoot","cssView","svgNode","parseCss","transform","decompose","parseSvg","baseVal","consolidate","matrix","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","scale","interpolateTransformCss","interpolateTransformSvg","rho","SQRT2","frame","timeout","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","clearNow","Timer","_call","_time","timer","restart","delay","time","TypeError","sleep","stop","Infinity","timerFlush","wake","nap","poke","clearInterval","setInterval","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","timing","schedules","__transition","tween","duration","ease","state","init","schedule","self","tick","interrupt","tweenRemove","tween0","tween1","tweenFunction","_id","tweenValue","transition","Kn","rgb2xyz","xyz2rgb","interpolateNumber","interpolateRgb","interpolateString","interpolate","value1","value00","interpolate0","value0","value10","attrTween","attrTweenNS","_value","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","Transition","_name","every","onFunction","on0","on1","sit","removeFunction","children","inherit","styleRemoveEnd","styleTween","id0","id1","newId","selection_prototype","transition_select","transition_selectAll","transition_filter","transition_merge","transition_selection","transition_transition","transition_on","transition_attr","transition_attrTween","transition_style","transition_styleTween","transition_text","transition_remove","transition_tween","transition_delay","transition_duration","transition_ease","cubicInOut","pi","tau","defaultTiming","easeCubicInOut","selection_interrupt","selection_transition","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","X","handles","input","output","xy","Y","cursors","overlay","nw","ne","se","sw","flipX","flipY","signsX","signsY","defaultExtent","height","__brush","extent","brushSelection","dim","brushY","brush","handleSize","initialize","handle","redraw","started","move","emitter","emit","selection0","selection1","Emitter","starting","BrushEvent","mode","metaKey","altKey","signX","signY","W","w0","w1","N","n0","n1","e0","e1","S","s0","s1","moving","shifting","shiftKey","lockX","lockY","point0","moved","ended","keydowned","keyupped","dragDisable","point1","abs","dragEnable","keyCode","invertCategorical","domain","range","found","forEach","invertByScale","invert","brushExtents","pc","brushes","brushNodes","extents","keys","dimensions","reduce","acc","cur","undefined","raw","yScale","yscale","scaled","brushSelections","yExtent","reverse","renderBrushed","brushReset","dimension","brushed","selected","brushGroup","is_brushed","actives","_brushRange","within","bandwidth","predicate","some","brushPredicate","brushUpdated","events","newSelection","brushFor","axis","_selector","brushRangeMax","_brush","convertBrushArguments","args_array","stopPropagation","install","createAxes","uninstall","install1DAxes","modes","brushState","drawBrushes","brushObject","pos","axisBrushes","getElementById","hideAxis","includes","dimExt","newBrush","lastBrushID","lastBrush","hiddenAxes","yExtents","_bs","ext","axisBrush","_this","install1DMultiAxes","strumRect","containmentTest","strum","p1","minX","p2","b1","b2","y1","y2","crossesStrum","strums","test","d1","dims","d2","ids","getOwnPropertyNames","crossTest","removeStrum","onDragEnd","drawStrum","activePoint","_svg","points","_line","circles","_drag","ev","maxX","minY","maxY","onDrag","bottom","dimensionsForPoint","xscale","getOrderedDimensionKeys","onDragStart","consecutive","first","second","install2DStrums","hypothenuse","signedAngle","angle","startAngle","arc","endAngle","tmp","arcs","asin","outerRadius","p3","_path","epsilon","tauEpsilon","Path","_x0","_y0","_x1","_y1","path","moveTo","closePath","lineTo","quadraticCurveTo","x1","bezierCurveTo","x2","arcTo","x0","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","a0","a1","ccw","cw","da","halfPi","arcInnerRadius","innerRadius","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","padAngle","intersect","x3","y3","x10","y10","x32","y32","cornerTangents","r1","rc","lo","ox","oy","x11","y11","x00","y00","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","cornerRadius","padRadius","context","buffer","r0","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","oc","ax","ay","bx","by","kc","lc","centroid","sign","slope3","h0","h1","slope2","_context","MonotoneX","areaStart","areaEnd","lineStart","_t0","_point","lineEnd","MonotoneY","ReflectContext","d3Arc","sAngle","uAngle","installAngularBrush","intersection","mergeParcoords","devicePixelRatio","mergedCanvas","foregroundCanvas","canvas","foreground","canvasMarginLeft","Number","marginLeft","replace","textTopAdjust","canvasMarginTop","marginTop","clientWidth","clientHeight","getContext","fillStyle","fillRect","drawImage","DOMURL","URL","webkitURL","serializer","XMLSerializer","svgNodeCopy","svgStr","serializeToString","src","btoa","img","Image","onload","ranges","values","ranger","flipAxes","unshift","ii","dimRange","dimDomain","category","categoryIndex","categoryRangeValue","multiBrushData","idx","filtered","String","toUpperCase","currentMode","brushMode","brushModes","dimensionLabels","title","flipAxisAndUpdatePCP","flip","animationTime","rotateLabels","delta","deltaY","dimensionTitleRotation","updateAxes","position","flags","g_data","axisElement","applyAxisConfig","brushable","reorderable","ascendingComparator","hi","mid","ascendingBisect","bisector","bisectRight","valueof","step","ceil","e10","e5","e2","count","ticks","tickIncrement","isFinite","floor","power","log","LN10","error","tickStep","step0","step1","Map","has","entries","Set","proto","implicit","ordinal","unknown","band","ordinalRange","paddingInner","paddingOuter","align","rescale","sequence","rangeRound","padding","pointish","unit","deinterpolateLinear","deinterpolateClamp","deinterpolate","reinterpolateClamp","reinterpolate","bimap","d0","polymap","bisect","clamp","continuous","interpolateValue","piecewise","interpolateRound","toExponential","coefficient","formatDecimal","grouping","thousands","substring","numerals","re","formatSpecifier","specifier","FormatSpecifier","fill","symbol","comma","precision","out","prefixExponent","exponent","toFixed","toPrecision","formatRounded","formatPrefixAuto","prefixes","locale","formatGroup","currency","decimal","formatNumerals","percent","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","charCodeAt","formatPrefix","defaultLocale","formatLocale","precisionPrefix","precisionRound","precisionFixed","linearish","tickFormat","nice","newInterval","floori","offseti","field","offset","millisecond","milliseconds","durationSecond","durationMinute","durationHour","durationDay","durationWeek","getUTCSeconds","seconds","minute","getMinutes","minutes","hour","getTimezoneOffset","getHours","hours","day","setHours","setDate","getDate","days","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","thursdays","month","setMonth","getMonth","getFullYear","months","year","setFullYear","years","utcMinute","setUTCSeconds","getUTCMinutes","utcMinutes","utcHour","setUTCMinutes","getUTCHours","utcHours","utcDay","setUTCHours","setUTCDate","getUTCDate","utcDays","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcThursdays","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","utcMonths","utcYear","setUTCFullYear","utcYears","localDate","H","M","L","utcDate","UTC","newYear","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseYear","parseFullYear","parseZone","parseLiteralPercent","pad","pads","charAt","newParse","newDate","parseSpecifier","week","Q","V","timeMonday","timeDay","u","U","Z","utcFormat","utcParse","numberRe","percentRe","requoteRe","requote","timeYear","getMilliseconds","getSeconds","timeSunday","timeThursday","getUTCMilliseconds","dow","timeFormat","timeParse","isoSpecifier","formatIsoNative","toISOString","formatIso","parseIsoNative","parseIso","durationMonth","durationYear","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","tickIntervals","tickInterval","timeMonth","timeWeek","timeHour","timeMinute","timeSecond","timeMillisecond","getRange","nullValueSeparator","nullValueSeparatorPadding","autoscale","ctx","defaultScales","_extent","scalePoint","tempDate","val","scaleTime","scaleLinear","counts","tempArr","categoricalRange","addBy","scaleOrdinal","strokeStyle","lineWidth","globalCompositeOperation","composite","globalAlpha","alpha","brushedColor","highlight","highlightedLineWidth","marked","markedLineWidth","shadowColor","markedShadowColor","shadowBlur","markedShadowBlur","ctrlKey","outerHTML","dat","commonScale","detectDimensions","scales","bundleDimension","computeRealCentroids","row","isValid","applyDimensionDefaults","detectDimensionTypes","orient","innerTickSize","outerTickSize","tickPadding","removeAxes","_g","axes","axisDots","_r","dots","beginPath","stroke","center","entering","__axis","tickArguments","tickValues","tickSizeInner","tickSizeOuter","spacing","range0","range1","tickExit","tickEnter","line","tickSize","axisTop","axisRight","axisBottom","axisLeft","axisCfg","dragging","__origin__","sortDimensions","renderMarked","resize","reorder","firstDim","sortDimensionsByRowData","rowdata","reordered","highlighted","unhighlight","unmark","mark","assign","positionSortedKeys","pixelDifference","localeCompare","isBrushed","layer","clearRect","alphaOnBrushed","PRECISION","Matrix","elements","setElements","Vector","col","cols","rows","nj","fn","els","isSameSizeAs","returnVector","modulus","canMultiplyFromLeft","sum","ni","isSquare","dup","np","multiplier","toRightTriangular","det","determinant","tr","rank","isSingular","augment","I","divisor","inverse_elements","new_element","matrix_rows","inspect","result","Diagonal","Rotation","theta","mod","RotationX","RotationY","RotationZ","Random","Zero","random","Translation","toUpperTriangular","trace","rk","inv","multiply","dot","vector","mod1","mod2","angleFrom","product","obj","anchor","distanceFrom","part","plane","R","direction","pointClosestTo","P","computeCentroids","centroids","leftCentroid","clusterCentroids","rightCentroid","bundlingStrength","computeControlPoints","smoothness","cps","diff","subtract","singleCurve","showControlPoints","getNullPosition","console","singlePath","colorPath","_functor","pathMark","functor","renderMarkedDefault","renderMarkedQueue","markedQueue","pathBrushed","renderBrushedDefault","renderBrushedQueue","brushedQueue","brushesToKeep","toType","adjacentPairs","ret","arr","pathHighlight","pathForeground","renderDefault","default","renderDefaultQueue","foregroundQueue","queue","toTypeCoerceNumbers","parseFloat","interactive","shadows","DefaultConfig","initState","userConfig","dimensionTitles","warn","eventTypes","debug","None","computeClusterCentroids","clusterCounts","_map","without","items","el","sideEffects","getset","side_effects","old","d3_rebind","method","_rebind","bindEvents","__","ParCoords","compute_real_centroids","adjacent_pairs","install1DAxesMulti","version"],"mappings":"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"}