From 67a3bfe8cff0691ea311639f0803d11129afcd20 Mon Sep 17 00:00:00 2001 From: Yun Xing Date: Wed, 9 Jan 2019 09:16:32 -0500 Subject: [PATCH] bump to v2.2.5 --- dist/parcoords.esm.js | 13 ++++++++++--- dist/parcoords.esm.js.map | 2 +- dist/parcoords.js | 13 ++++++++++--- dist/parcoords.js.map | 2 +- dist/parcoords.standalone.js | 17 ++++++++++++++--- dist/parcoords.standalone.js.map | 2 +- package-lock.json | 2 +- package.json | 2 +- src/brush/1d/brushFor.js | 2 +- src/brush/invertByScale.js | 2 +- 10 files changed, 41 insertions(+), 16 deletions(-) diff --git a/dist/parcoords.esm.js b/dist/parcoords.esm.js index eab90b4..59c7d05 100644 --- a/dist/parcoords.esm.js +++ b/dist/parcoords.esm.js @@ -96,6 +96,7 @@ var invertCategorical = function invertCategorical(selection, scale) { }; var invertByScale = function invertByScale(selection, scale) { + if (scale === null) return []; return typeof scale.invert === 'undefined' ? invertCategorical(selection, scale) : selection.map(function (d) { return scale.invert(d); }); @@ -288,10 +289,16 @@ var brushFor = function brushFor(state, config, pc, events, brushGroup) { var convertBrushArguments = function convertBrushArguments(args) { var args_array = Array.prototype.slice.call(args); var axis = args_array[0]; - // ordinal scales do not have invert - var yscale = config.dimensions[axis].yscale; var raw = brushSelection(args_array[2][0]) || []; + + // handle hidden axes which will not have a yscale + var yscale = null; + if (config.dimensions.hasOwnProperty(axis)) { + yscale = config.dimensions[axis].yscale; + } + + // ordinal scales do not have invert var scaled = invertByScale(raw, yscale); return { @@ -4063,7 +4070,7 @@ var scale = function scale(config, pc) { }; }; -var version = "2.2.4"; +var version = "2.2.5"; var DefaultConfig = { data: [], diff --git a/dist/parcoords.esm.js.map b/dist/parcoords.esm.js.map index 7de2a49..390eb6d 100644 --- a/dist/parcoords.esm.js.map +++ b/dist/parcoords.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"parcoords.esm.js","sources":["../src/util/renderQueue.js","../src/util/width.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","../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","../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","../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":["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","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 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 select(this).call(brushes[d].move, null);\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 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 // ordinal scales do not have invert\n const yscale = config.dimensions[axis].yscale;\n\n const raw = brushSelection(args_array[2][0]) || [];\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 (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 .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';\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\n if (typeof extents === 'undefined') {\n return Object.keys(config.dimensions).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 range = brushSelection(\n document.getElementById('brush-' + pos + '-' + i)\n );\n if (range !== null) {\n d = d.push(range);\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 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 });\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 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 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 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 brushFor(state, config, pc, events, brushGroup)(d, select(this));\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","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 } from 'd3-selection';\n\nconst flipAxisAndUpdatePCP = (config, pc, axis) =>\n function(dimension) {\n pc.flip(dimension);\n pc.brushReset(dimension);\n select(this.parentElement)\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","/** 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 = (dimensions, position) => row =>\n Object.keys(dimensions).map(d => {\n const x = position(d);\n const y = 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","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, selectAll } from 'd3-selection';\n\nconst brushReset = config =>\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 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.dimensions(pc.applyDimensionDefaults());\n pc.dimensions(without(config.dimensions, d.value));\n })\n .on('flipAxes', d => {\n if (d.value && d.value.length) {\n d.value.forEach(function(axis) {\n flipAxisAndUpdatePCP(config, pc, axis);\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 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.dimensions, 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);\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":["renderQueue","func","_queue","rq","data","render","valid","invalidate","doFrame","chunk","splice","_rate","map","slice","add","concat","rate","value","arguments","length","remaining","clear","_invalidate","w","config","width","margin","right","left","invertCategorical","selection","scale","domain","range","found","forEach","d","i","push","invertByScale","invert","brushExtents","state","pc","brushes","brushNodes","extents","Object","keys","dimensions","reduce","acc","cur","brush","undefined","brushSelection","raw","yScale","yscale","scaled","extent","brushSelections","g","selectAll","each","select","dim","yExtent","call","move","reverse","renderBrushed","brushReset","dimension","brushed","type","event","selected","brushGroup","is_brushed","p","actives","filter","_brushRange","within","bandwidth","predicate","every","some","Error","brushPredicate","brushUpdated","events","args","newSelection","brushFor","axis","_selector","brushRangeMax","_brush","brushY","convertBrushArguments","args_array","Array","prototype","on","sourceEvent","stopPropagation","node","install","createAxes","append","attr","style","uninstall","remove","install1DAxes","modes","drawBrushes","selector","id","enter","insert","indexOf","b","brushObject","exit","pos","axisBrushes","document","getElementById","dimExt","e","newBrush","lastBrushID","lastBrush","toString","yExtents","_bs","j","f","k","ext","axisBrush","_this","install1DMultiAxes","strumRect","containmentTest","strum","p1","minX","p2","m1","b1","m2","b2","x","y","y1","y2","Math","min","max","crossesStrum","strums","test","d1","dims","d2","point","ids","getOwnPropertyNames","isNaN","crossTest","removeStrum","active","svg","onDragEnd","drawStrum","activePoint","_svg","points","_line","circles","_drag","drag","ev","maxX","minY","maxY","onDrag","top","h","height","bottom","dimensionsForPoint","xscale","getOrderedDimensionKeys","onDragStart","mouse","consecutive","first","second","install2DStrums","hypothenuse","a","sqrt","signedAngle","angle","PI","startAngle","arc","endAngle","tmp","arcs","c","asin","outerRadius","p3","_path","d3Arc","innerRadius","sAngle","uAngle","installAngularBrush","intersection","mergeParcoords","devicePixelRatio","window","mergedCanvas","createElement","foregroundCanvas","canvas","foreground","canvasMarginLeft","Number","marginLeft","replace","textTopAdjust","canvasMarginTop","marginTop","clientWidth","clientHeight","context","getContext","fillStyle","fillRect","key","drawImage","DOMURL","URL","webkitURL","serializer","XMLSerializer","svgNodeCopy","cloneNode","setAttribute","getAttribute","svgStr","serializeToString","src","btoa","img","Image","onload","callback","ranges","nodes","__data__","values","ranger","includes","flipAxes","unshift","ii","dimRange","dimDomain","category","categoryIndex","categoryRangeValue","multiBrushData","idx","filtered","z","String","toUpperCase","currentMode","brushMode","mode","brushModes","dimensionLabels","title","flipAxisAndUpdatePCP","flip","parentElement","transition","duration","animationTime","rotateLabels","delta","deltaY","dimensionTitleRotation","preventDefault","updateAxes","position","flags","g_data","axisElement","applyAxisConfig","text","brushable","reorderable","getRange","nullValueSeparator","nullValueSeparatorPadding","autoscale","ctx","defaultScales","_extent","getTime","scalePoint","tempDate","val","scaleTime","scaleLinear","counts","sort","tempArr","pop","categoricalRange","addBy","scaleOrdinal","padding","strokeStyle","color","lineWidth","globalCompositeOperation","composite","globalAlpha","alpha","brushedColor","highlight","highlightedLineWidth","marked","markedLineWidth","shadowColor","markedShadowColor","shadowBlur","markedShadowBlur","ctrlKey","html","outerHTML","dat","parentNode","commonScale","global","t","detectDimensions","scales","bundleDimension","computeRealCentroids","row","isValid","applyDimensionDefaults","types","detectDimensionTypes","orient","ticks","innerTickSize","outerTickSize","tickPadding","index","removeAxes","_g","axes","axisDots","r","_r","dots","pow","beginPath","stroke","fill","axisCfg","axisLeft","axisRight","axisTop","axisBottom","tickValues","tickSizeInner","tickSizeOuter","tickFormat","dragging","__origin__","dx","sortDimensions","renderMarked","resize","reorder","firstDim","sortDimensionsByRowData","rowdata","reordered","highlighted","unhighlight","unmark","mark","copy","assign","positionSortedKeys","pixelDifference","localeCompare","isBrushed","object","brushState","hasOwnProperty","layer","clearRect","alphaOnBrushed","PRECISION","Matrix","elements","setElements","Vector","col","n","cols","rows","matrix","M","nj","abs","fn","els","isSameSizeAs","returnVector","modulus","canMultiplyFromLeft","sum","ni","m","isSquare","dup","np","multiplier","toRightTriangular","det","determinant","tr","rank","T","isSingular","augment","I","divisor","inverse_elements","new_element","round","matrix_rows","inspect","join","result","Diagonal","Rotation","theta","cos","sin","mod","s","RotationX","RotationY","RotationZ","Random","Zero","random","Translation","v","toUpperTriangular","trace","rk","inv","inverse","multiply","dot","vector","V","mod1","mod2","acos","angleFrom","product","B","A","obj","anchor","start","end","distanceFrom","part","line","contains","plane","R","direction","C","pointClosestTo","P","Q","computeCentroids","centroids","cx","cy","leftCentroid","clusterCentroids","get","rightCentroid","centroid","bundlingStrength","computeControlPoints","smoothness","cps","mid","diff","subtract","singleCurve","moveTo","showControlPoints","bezierCurveTo","getNullPosition","log","singlePath","lineTo","colorPath","_functor","pathMark","functor","renderMarkedDefault","renderMarkedQueue","markedQueue","pathBrushed","renderBrushedDefault","renderBrushedQueue","brushedQueue","brushesToKeep","toType","match","toLowerCase","adjacentPairs","ret","arr","pathHighlight","classed","pathForeground","renderDefault","default","renderDefaultQueue","foregroundQueue","queue","toTypeCoerceNumbers","parseFloat","parseInt","ascending","interactive","shadows","init","DefaultConfig","initState","userConfig","dimensionTitles","warn","eventTypes","dispatch","apply","computeClusterCentroids","Map","clusterCounts","has","set","count","_map","without","items","el","sideEffects","hideAxis","getset","side_effects","old","previous","d3_rebind","target","source","method","_rebind","bindEvents","__","ParCoords","compute_real_centroids","adjacent_pairs","version"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"parcoords.esm.js","sources":["../src/util/renderQueue.js","../src/util/width.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","../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","../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","../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":["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","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 select(this).call(brushes[d].move, null);\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 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 (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 .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';\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\n if (typeof extents === 'undefined') {\n return Object.keys(config.dimensions).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 range = brushSelection(\n document.getElementById('brush-' + pos + '-' + i)\n );\n if (range !== null) {\n d = d.push(range);\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 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 });\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 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 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 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 brushFor(state, config, pc, events, brushGroup)(d, select(this));\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","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 } from 'd3-selection';\n\nconst flipAxisAndUpdatePCP = (config, pc, axis) =>\n function(dimension) {\n pc.flip(dimension);\n pc.brushReset(dimension);\n select(this.parentElement)\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","/** 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 = (dimensions, position) => row =>\n Object.keys(dimensions).map(d => {\n const x = position(d);\n const y = 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","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, selectAll } from 'd3-selection';\n\nconst brushReset = config =>\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 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.dimensions(pc.applyDimensionDefaults());\n pc.dimensions(without(config.dimensions, d.value));\n })\n .on('flipAxes', d => {\n if (d.value && d.value.length) {\n d.value.forEach(function(axis) {\n flipAxisAndUpdatePCP(config, pc, axis);\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 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.dimensions, 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);\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":["renderQueue","func","_queue","rq","data","render","valid","invalidate","doFrame","chunk","splice","_rate","map","slice","add","concat","rate","value","arguments","length","remaining","clear","_invalidate","w","config","width","margin","right","left","invertCategorical","selection","scale","domain","range","found","forEach","d","i","push","invertByScale","invert","brushExtents","state","pc","brushes","brushNodes","extents","Object","keys","dimensions","reduce","acc","cur","brush","undefined","brushSelection","raw","yScale","yscale","scaled","extent","brushSelections","g","selectAll","each","select","dim","yExtent","call","move","reverse","renderBrushed","brushReset","dimension","brushed","type","event","selected","brushGroup","is_brushed","p","actives","filter","_brushRange","within","bandwidth","predicate","every","some","Error","brushPredicate","brushUpdated","events","args","newSelection","brushFor","axis","_selector","brushRangeMax","_brush","brushY","convertBrushArguments","args_array","Array","prototype","hasOwnProperty","on","sourceEvent","stopPropagation","node","install","createAxes","append","attr","style","uninstall","remove","install1DAxes","modes","drawBrushes","selector","id","enter","insert","indexOf","b","brushObject","exit","pos","axisBrushes","document","getElementById","dimExt","e","newBrush","lastBrushID","lastBrush","toString","yExtents","_bs","j","f","k","ext","axisBrush","_this","install1DMultiAxes","strumRect","containmentTest","strum","p1","minX","p2","m1","b1","m2","b2","x","y","y1","y2","Math","min","max","crossesStrum","strums","test","d1","dims","d2","point","ids","getOwnPropertyNames","isNaN","crossTest","removeStrum","active","svg","onDragEnd","drawStrum","activePoint","_svg","points","_line","circles","_drag","drag","ev","maxX","minY","maxY","onDrag","top","h","height","bottom","dimensionsForPoint","xscale","getOrderedDimensionKeys","onDragStart","mouse","consecutive","first","second","install2DStrums","hypothenuse","a","sqrt","signedAngle","angle","PI","startAngle","arc","endAngle","tmp","arcs","c","asin","outerRadius","p3","_path","d3Arc","innerRadius","sAngle","uAngle","installAngularBrush","intersection","mergeParcoords","devicePixelRatio","window","mergedCanvas","createElement","foregroundCanvas","canvas","foreground","canvasMarginLeft","Number","marginLeft","replace","textTopAdjust","canvasMarginTop","marginTop","clientWidth","clientHeight","context","getContext","fillStyle","fillRect","key","drawImage","DOMURL","URL","webkitURL","serializer","XMLSerializer","svgNodeCopy","cloneNode","setAttribute","getAttribute","svgStr","serializeToString","src","btoa","img","Image","onload","callback","ranges","nodes","__data__","values","ranger","includes","flipAxes","unshift","ii","dimRange","dimDomain","category","categoryIndex","categoryRangeValue","multiBrushData","idx","filtered","z","String","toUpperCase","currentMode","brushMode","mode","brushModes","dimensionLabels","title","flipAxisAndUpdatePCP","flip","parentElement","transition","duration","animationTime","rotateLabels","delta","deltaY","dimensionTitleRotation","preventDefault","updateAxes","position","flags","g_data","axisElement","applyAxisConfig","text","brushable","reorderable","getRange","nullValueSeparator","nullValueSeparatorPadding","autoscale","ctx","defaultScales","_extent","getTime","scalePoint","tempDate","val","scaleTime","scaleLinear","counts","sort","tempArr","pop","categoricalRange","addBy","scaleOrdinal","padding","strokeStyle","color","lineWidth","globalCompositeOperation","composite","globalAlpha","alpha","brushedColor","highlight","highlightedLineWidth","marked","markedLineWidth","shadowColor","markedShadowColor","shadowBlur","markedShadowBlur","ctrlKey","html","outerHTML","dat","parentNode","commonScale","global","t","detectDimensions","scales","bundleDimension","computeRealCentroids","row","isValid","applyDimensionDefaults","types","detectDimensionTypes","orient","ticks","innerTickSize","outerTickSize","tickPadding","index","removeAxes","_g","axes","axisDots","r","_r","dots","pow","beginPath","stroke","fill","axisCfg","axisLeft","axisRight","axisTop","axisBottom","tickValues","tickSizeInner","tickSizeOuter","tickFormat","dragging","__origin__","dx","sortDimensions","renderMarked","resize","reorder","firstDim","sortDimensionsByRowData","rowdata","reordered","highlighted","unhighlight","unmark","mark","copy","assign","positionSortedKeys","pixelDifference","localeCompare","isBrushed","object","brushState","layer","clearRect","alphaOnBrushed","PRECISION","Matrix","elements","setElements","Vector","col","n","cols","rows","matrix","M","nj","abs","fn","els","isSameSizeAs","returnVector","modulus","canMultiplyFromLeft","sum","ni","m","isSquare","dup","np","multiplier","toRightTriangular","det","determinant","tr","rank","T","isSingular","augment","I","divisor","inverse_elements","new_element","round","matrix_rows","inspect","join","result","Diagonal","Rotation","theta","cos","sin","mod","s","RotationX","RotationY","RotationZ","Random","Zero","random","Translation","v","toUpperTriangular","trace","rk","inv","inverse","multiply","dot","vector","V","mod1","mod2","acos","angleFrom","product","B","A","obj","anchor","start","end","distanceFrom","part","line","contains","plane","R","direction","C","pointClosestTo","P","Q","computeCentroids","centroids","cx","cy","leftCentroid","clusterCentroids","get","rightCentroid","centroid","bundlingStrength","computeControlPoints","smoothness","cps","mid","diff","subtract","singleCurve","moveTo","showControlPoints","bezierCurveTo","getNullPosition","log","singlePath","lineTo","colorPath","_functor","pathMark","functor","renderMarkedDefault","renderMarkedQueue","markedQueue","pathBrushed","renderBrushedDefault","renderBrushedQueue","brushedQueue","brushesToKeep","toType","match","toLowerCase","adjacentPairs","ret","arr","pathHighlight","classed","pathForeground","renderDefault","default","renderDefaultQueue","foregroundQueue","queue","toTypeCoerceNumbers","parseFloat","parseInt","ascending","interactive","shadows","init","DefaultConfig","initState","userConfig","dimensionTitles","warn","eventTypes","dispatch","apply","computeClusterCentroids","Map","clusterCounts","has","set","count","_map","without","items","el","sideEffects","hideAxis","getset","side_effects","old","previous","d3_rebind","target","source","method","_rebind","bindEvents","__","ParCoords","compute_real_centroids","adjacent_pairs","version"],"mappings":";;;;;;;;;;;AAEA,IAAMA,cAAc,SAAdA,WAAc,CAASC,IAAT,EAAe;MAC7BC,SAAS,EAAb;;UACU,IADV;;gBAEgB,uBAAW,EAF3B;;WAGW,kBAAW,EAHtB,CADiC;;MAM7BC,KAAK,SAALA,EAAK,CAASC,IAAT,EAAe;QAClBA,IAAJ,EAAUD,GAAGC,IAAH,CAAQA,IAAR;;;OAGPC,MAAH;GAJF;;KAOGA,MAAH,GAAY,YAAW;QACjBC,QAAQ,IAAZ;kBACcH,GAAGI,UAAH,GAAgB,YAAW;cAC/B,KAAR;KADF;;aAISC,OAAT,GAAmB;UACb,CAACF,KAAL,EAAY,OAAO,IAAP;UACRG,QAAQP,OAAOQ,MAAP,CAAc,CAAd,EAAiBC,KAAjB,CAAZ;YACMC,GAAN,CAAUX,IAAV;4BACsBO,OAAtB;;;;GAVJ;;KAgBGJ,IAAH,GAAU,UAASA,IAAT,EAAe;;aAEdA,KAAKS,KAAL,CAAW,CAAX,CAAT,CAFuB;WAGhBV,EAAP;GAHF;;KAMGW,GAAH,GAAS,UAASV,IAAT,EAAe;aACbF,OAAOa,MAAP,CAAcX,IAAd,CAAT;GADF;;KAIGY,IAAH,GAAU,UAASC,KAAT,EAAgB;QACpB,CAACC,UAAUC,MAAf,EAAuB,OAAOR,KAAP;YACfM,KAAR;WACOd,EAAP;GAHF;;KAMGiB,SAAH,GAAe,YAAW;WACjBlB,OAAOiB,MAAd;GADF;;;KAKGE,KAAH,GAAW,UAASpB,IAAT,EAAe;QACpB,CAACiB,UAAUC,MAAf,EAAuB;;aAEdhB,EAAP;;aAEOF,IAAT;WACOE,EAAP;GANF;;KASGI,UAAH,GAAgBe,WAAhB;;SAEOnB,EAAP;CA7DF;;ACFA,IAAMoB,IAAI,SAAJA,CAAI;SAAUC,OAAOC,KAAP,GAAeD,OAAOE,MAAP,CAAcC,KAA7B,GAAqCH,OAAOE,MAAP,CAAcE,IAA7D;CAAV;;ACAA,IAAMC,oBAAoB,SAApBA,iBAAoB,CAACC,SAAD,EAAYC,KAAZ,EAAsB;MAC1CD,UAAUX,MAAV,KAAqB,CAAzB,EAA4B;WACnB,EAAP;;MAEIa,SAASD,MAAMC,MAAN,EAAf;MACMC,QAAQF,MAAME,KAAN,EAAd;MACMC,QAAQ,EAAd;QACMC,OAAN,CAAc,UAACC,CAAD,EAAIC,CAAJ,EAAU;QAClBD,KAAKN,UAAU,CAAV,CAAL,IAAqBM,KAAKN,UAAU,CAAV,CAA9B,EAA4C;YACpCQ,IAAN,CAAWN,OAAOK,CAAP,CAAX;;GAFJ;SAKOH,KAAP;CAZF;;AAeA,IAAMK,gBAAgB,SAAhBA,aAAgB,CAACT,SAAD,EAAYC,KAAZ,EAAsB;MACtCA,UAAU,IAAd,EAAoB,OAAO,EAAP;SACb,OAAOA,MAAMS,MAAb,KAAwB,WAAxB,GACHX,kBAAkBC,SAAlB,EAA6BC,KAA7B,CADG,GAEHD,UAAUlB,GAAV,CAAc;WAAKmB,MAAMS,MAAN,CAAaJ,CAAb,CAAL;GAAd,CAFJ;CAFF;;ACVA,IAAMK,eAAe,SAAfA,YAAe,CAACC,KAAD,EAAQlB,MAAR,EAAgBmB,EAAhB;SAAuB,mBAAW;QAC7CC,OAD6C,GACrBF,KADqB,CAC7CE,OAD6C;QACpCC,UADoC,GACrBH,KADqB,CACpCG,UADoC;;;QAGjD,OAAOC,OAAP,KAAmB,WAAvB,EAAoC;aAC3BC,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+BC,MAA/B,CAAsC,UAACC,GAAD,EAAMC,GAAN,EAAc;YACnDC,QAAQT,QAAQQ,GAAR,CAAd;;YAEIC,UAAUC,SAAV,IAAuBC,eAAeV,WAAWO,GAAX,CAAf,MAAoC,IAA/D,EAAqE;cAC7DI,MAAMD,eAAeV,WAAWO,GAAX,CAAf,CAAZ;cACMK,SAASjC,OAAOyB,UAAP,CAAkBG,GAAlB,EAAuBM,MAAtC;cACMC,SAASpB,cAAciB,GAAd,EAAmBC,MAAnB,CAAf;;cAEIL,GAAJ,IAAW;oBACDC,MAAMO,MAAN,EADC;uBAEE;sBAAA;;;WAFb;;;eASKT,GAAP;OAjBK,EAkBJ,EAlBI,CAAP;KADF,MAoBO;;UAECU,kBAAkB,EAAxB;SACGC,CAAH,GACGC,SADH,CACa,QADb,EAEGC,IAFH,CAEQ,UAAS5B,CAAT,EAAY;wBACAA,CAAhB,IAAqB6B,OAAO,IAAP,CAArB;OAHJ;;;aAOOjB,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+Bd,OAA/B,CAAuC,aAAK;YACtCW,QAAQV,CAAR,MAAekB,SAAnB,EAA8B;;;;YAIxBD,QAAQT,QAAQR,CAAR,CAAd;YACIiB,UAAUC,SAAd,EAAyB;cACjBY,MAAM1C,OAAOyB,UAAP,CAAkBb,CAAlB,CAAZ;cACM+B,UAAUrB,QAAQV,CAAR,EAAWxB,GAAX,CAAesD,IAAIR,MAAnB,CAAhB;;;;;;;;;;;;0BAYgBtB,CAAhB,EAAmBgC,IAAnB,CAAwBf,KAAxB,EAA+Be,IAA/B,CAAoCf,MAAMgB,IAA1C,EAAgDF,QAAQG,OAAR,EAAhD;;;;;OApBJ;;;SA4BGC,aAAH;;aAEO5B,EAAP;;GA/DiB;CAArB;;;;ACHA,IAAM6B,aAAa,SAAbA,UAAa,CAAC9B,KAAD,EAAQlB,MAAR,EAAgBmB,EAAhB;SAAuB,qBAAa;QAC7CC,OAD6C,GACjCF,KADiC,CAC7CE,OAD6C;;;QAGjD6B,cAAcnB,SAAlB,EAA6B;aACpBoB,OAAP,GAAiB,KAAjB;UACI/B,GAAGmB,CAAH,OAAWR,SAAX,IAAwBX,GAAGmB,CAAH,OAAW,IAAvC,EAA6C;WACxCA,CAAH,GACGC,SADH,CACa,QADb,EAEGC,IAFH,CAEQ,UAAS5B,CAAT,EAAY;iBACT,IAAP,EAAagC,IAAb,CAAkBxB,QAAQR,CAAR,EAAWiC,IAA7B,EAAmC,IAAnC;SAHJ;WAKGE,aAAH;;KARJ,MAUO;aACEG,OAAP,GAAiB,KAAjB;UACI/B,GAAGmB,CAAH,OAAWR,SAAX,IAAwBX,GAAGmB,CAAH,OAAW,IAAvC,EAA6C;WACxCA,CAAH,GACGC,SADH,CACa,QADb,EAEGC,IAFH,CAEQ,UAAS5B,CAAT,EAAY;cACZA,MAAMqC,SAAV,EAAqB;iBACd,IAAP,EAAaL,IAAb,CAAkBxB,QAAQR,CAAR,EAAWiC,IAA7B,EAAmC,IAAnC;cACI,OAAOzB,QAAQR,CAAR,EAAWuC,IAAlB,KAA2B,UAA/B,EAA2C;oBACjCvC,CAAR,EAAWwC,KAAX,CAAiBX,OAAO,IAAP,CAAjB;;SANN;WASGM,aAAH;;;WAGG,KAAP;GA5BiB;CAAnB;;ACDA;;;AAGA,IAAMM,WAAW,SAAXA,QAAW,CAACnC,KAAD,EAAQlB,MAAR,EAAgBsD,UAAhB;SAA+B,YAAM;QAC5CjC,UAD4C,GAC7BH,KAD6B,CAC5CG,UAD4C;;QAE9CkC,aAAa,SAAbA,UAAa;aACjBlC,WAAWmC,CAAX,KAAiBzB,eAAeV,WAAWmC,CAAX,CAAf,MAAkC,IADlC;KAAnB;;QAGMC,UAAUlC,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+BiC,MAA/B,CAAsCH,UAAtC,CAAhB;QACMjC,UAAUmC,QAAQrE,GAAR,CAAY,aAAK;UACzBuE,cAAc5B,eAAeV,WAAWmC,CAAX,CAAf,CAApB;;UAEI,OAAOxD,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BlB,MAAnC,KAA8C,UAAlD,EAA8D;eACrD,CACLhB,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BlB,MAA5B,CAAmC2C,YAAY,CAAZ,CAAnC,CADK,EAEL3D,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BlB,MAA5B,CAAmC2C,YAAY,CAAZ,CAAnC,CAFK,CAAP;OADF,MAKO;eACEA,WAAP;;KATY,CAAhB;;;;;;;QAkBIF,QAAQ9D,MAAR,KAAmB,CAAvB,EAA0B,OAAOK,OAAOpB,IAAd;;;QAGpBgF,SAAS;YACP,cAAChD,CAAD,EAAI4C,CAAJ,EAAOP,SAAP,EAAqB;YACrB,OAAOjD,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4B2B,SAAnC,KAAiD,UAArD,EAAiE;;iBAG7DvC,QAAQ2B,SAAR,EAAmB,CAAnB,KAAyBjD,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BtB,EAAE4C,CAAF,CAA5B,CAAzB,IACAxD,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BtB,EAAE4C,CAAF,CAA5B,KAAqClC,QAAQ2B,SAAR,EAAmB,CAAnB,CAFvC;SAFF,MAMO;iBACE3B,QAAQ2B,SAAR,EAAmB,CAAnB,KAAyBrC,EAAE4C,CAAF,CAAzB,IAAiC5C,EAAE4C,CAAF,KAAQlC,QAAQ2B,SAAR,EAAmB,CAAnB,CAAhD;;OATS;cAYL,gBAACrC,CAAD,EAAI4C,CAAJ,EAAOP,SAAP,EAAqB;YACvB,OAAOjD,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4B2B,SAAnC,KAAiD,UAArD,EAAiE;;iBAG7DvC,QAAQ2B,SAAR,EAAmB,CAAnB,KAAyBjD,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BtB,EAAE4C,CAAF,CAA5B,CAAzB,IACAxD,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BtB,EAAE4C,CAAF,CAA5B,KAAqClC,QAAQ2B,SAAR,EAAmB,CAAnB,CAFvC;SAFF,MAMO;iBACE3B,QAAQ2B,SAAR,EAAmB,CAAnB,KAAyBrC,EAAE4C,CAAF,CAAzB,IAAiC5C,EAAE4C,CAAF,KAAQlC,QAAQ2B,SAAR,EAAmB,CAAnB,CAAhD;;OApBS;cAuBL,gBAACrC,CAAD,EAAI4C,CAAJ,EAAOP,SAAP,EAAqB;eAEzB3B,QAAQ2B,SAAR,EAAmB,CAAnB,KAAyBjD,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BtB,EAAE4C,CAAF,CAA5B,CAAzB,IACAxD,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BtB,EAAE4C,CAAF,CAA5B,KAAqClC,QAAQ2B,SAAR,EAAmB,CAAnB,CAFvC;;KAxBJ;;WA+BOjD,OAAOpB,IAAP,CAAY8E,MAAZ,CAAmB,aAAK;cACrBJ,WAAWQ,SAAnB;aACO,KAAL;iBACSL,QAAQM,KAAR,CAAc,UAASP,CAAT,EAAYP,SAAZ,EAAuB;mBACnCW,OAAO5D,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBL,IAA5B,EAAkCvC,CAAlC,EAAqC4C,CAArC,EAAwCP,SAAxC,CAAP;WADK,CAAP;aAGG,IAAL;iBACSQ,QAAQO,IAAR,CAAa,UAASR,CAAT,EAAYP,SAAZ,EAAuB;mBAClCW,OAAO5D,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBL,IAA5B,EAAkCvC,CAAlC,EAAqC4C,CAArC,EAAwCP,SAAxC,CAAP;WADK,CAAP;;gBAIM,IAAIgB,KAAJ,CAAU,6BAA6BjE,OAAOkE,cAA9C,CAAN;;KAXC,CAAP;GA1De;CAAjB;;ACCA,IAAMC,eAAe,SAAfA,YAAe,CAACnE,MAAD,EAASmB,EAAT,EAAaiD,MAAb,EAAqBC,IAArB;SAA8B,wBAAgB;WAC1DnB,OAAP,GAAiBoB,YAAjB;WACO1B,IAAP,CAAY,OAAZ,EAAqBzB,EAArB,EAAyBnB,OAAOkD,OAAhC,EAAyCmB,IAAzC;OACGtB,aAAH;GAHmB;CAArB;;AAMA,IAAMwB,WAAW,SAAXA,QAAW,CAACrD,KAAD,EAAQlB,MAAR,EAAgBmB,EAAhB,EAAoBiD,MAApB,EAA4Bd,UAA5B;SAA2C,UAC1DkB,IAD0D,EAE1DC,SAF0D,EAGvD;QACGC,gBACJ1E,OAAOyB,UAAP,CAAkB+C,IAAlB,EAAwBrB,IAAxB,KAAiC,QAAjC,GACInD,OAAOyB,UAAP,CAAkB+C,IAAlB,EAAwBtC,MAAxB,CAA+BzB,KAA/B,GACET,OAAOyB,UAAP,CAAkB+C,IAAlB,EAAwBtC,MAAxB,CAA+BzB,KAA/B,GAAuCd,MAAvC,GAAgD,CADlD,CADJ,GAIIK,OAAOyB,UAAP,CAAkB+C,IAAlB,EAAwBtC,MAAxB,CAA+BzB,KAA/B,GAAuC,CAAvC,CALN;;QAOMkE,SAASC,OAAOH,SAAP,EAAkBrC,MAAlB,CAAyB,CAAC,CAAC,CAAC,EAAF,EAAM,CAAN,CAAD,EAAW,CAAC,EAAD,EAAKsC,aAAL,CAAX,CAAzB,CAAf;;QAEMG,wBAAwB,SAAxBA,qBAAwB,OAAQ;UAC9BC,aAAaC,MAAMC,SAAN,CAAgB3F,KAAhB,CAAsBuD,IAAtB,CAA2ByB,IAA3B,CAAnB;UACMG,OAAOM,WAAW,CAAX,CAAb;;UAEM9C,MAAMD,eAAe+C,WAAW,CAAX,EAAc,CAAd,CAAf,KAAoC,EAAhD;;;UAGI5C,SAAS,IAAb;UACIlC,OAAOyB,UAAP,CAAkBwD,cAAlB,CAAiCT,IAAjC,CAAJ,EAA4C;iBACjCxE,OAAOyB,UAAP,CAAkB+C,IAAlB,EAAwBtC,MAAjC;;;;UAIIC,SAASpB,cAAciB,GAAd,EAAmBE,MAAnB,CAAf;;aAEO;cACC4C,WAAW,CAAX,CADD;cAECA,WAAW,CAAX,EAAc,CAAd,CAFD;mBAGM;kBAAA;;;OAHb;KAfF;;WA0BGI,EADH,CACM,OADN,EACe,YAAW;UAClB9B,MAAM+B,WAAN,KAAsB,IAA1B,EAAgC;eACvBvC,IAAP,CACE,YADF,EAEEzB,EAFF,EAGEnB,OAAOkD,OAHT,EAIE2B,sBAAsBnF,SAAtB,CAJF;YAMI,OAAO0D,MAAM+B,WAAN,CAAkBC,eAAzB,KAA6C,UAAjD,EAA6D;gBACrDD,WAAN,CAAkBC,eAAlB;;;KAVR,EAcGF,EAdH,CAcM,OAdN,EAce,YAAW;mBAEpBlF,MADF,EAEEmB,EAFF,EAGEiD,MAHF,EAIES,sBAAsBnF,SAAtB,CAJF,EAKE2D,SAASnC,KAAT,EAAgBlB,MAAhB,EAAwBsD,UAAxB,GALF;KAfJ,EAsBG4B,EAtBH,CAsBM,KAtBN,EAsBa,YAAW;mBACPlF,MAAb,EAAqBmB,EAArB,EAAyBiD,MAAzB,EAAiCf,SAASnC,KAAT,EAAgBlB,MAAhB,EAAwBsD,UAAxB,GAAjC;aACOV,IAAP,CACE,UADF,EAEEzB,EAFF,EAGEnB,OAAOkD,OAHT,EAIE2B,sBAAsBnF,SAAtB,CAJF;KAxBJ;;UAgCM0B,OAAN,CAAcoD,IAAd,IAAsBG,MAAtB;UACMtD,UAAN,CAAiBmD,IAAjB,IAAyBC,UAAUY,IAAV,EAAzB;;WAEOV,MAAP;GAzEe;CAAjB;;ACNA,IAAMW,UAAU,SAAVA,OAAU,CAACpE,KAAD,EAAQlB,MAAR,EAAgBmB,EAAhB,EAAoBiD,MAApB,EAA4Bd,UAA5B;SAA2C,YAAM;QAC3D,CAACnC,GAAGmB,CAAH,EAAL,EAAa;SACRiD,UAAH;;;;QAII1D,QAAQV,GACXmB,CADW,GAEXkD,MAFW,CAEJ,OAFI,EAGXC,IAHW,CAGN,OAHM,EAGG,OAHH,EAIXjD,IAJW,CAIN,UAAS5B,CAAT,EAAY;aACT,IAAP,EAAagC,IAAb,CACE2B,SAASrD,KAAT,EAAgBlB,MAAhB,EAAwBmB,EAAxB,EAA4BiD,MAA5B,EAAoCd,UAApC,EAAgD1C,CAAhD,EAAmD6B,OAAO,IAAP,CAAnD,CADF;KALU,CAAd;UAUGF,SADH,CACa,MADb,EAEGmD,KAFH,CAES,YAFT,EAEuB,IAFvB,EAGGD,IAHH,CAGQ,GAHR,EAGa,CAAC,EAHd,EAIGA,IAJH,CAIQ,OAJR,EAIiB,EAJjB;;UAMMlD,SAAN,CAAgB,iBAAhB,EAAmCmD,KAAnC,CAAyC,MAAzC,EAAiD,aAAjD;;UAGGnD,SADH,CACa,aADb,EAEGmD,KAFH,CAES,MAFT,EAEiB,wBAFjB,EAGGA,KAHH,CAGS,QAHT,EAGmB,iBAHnB;;UAKMnD,SAAN,CAAgB,cAAhB,EAAgCmD,KAAhC,CAAsC,MAAtC,EAA8C,iBAA9C;;OAEGzE,YAAH,GAAkBA,aAAaC,KAAb,EAAoBlB,MAApB,EAA4BmB,EAA5B,CAAlB;OACG6B,UAAH,GAAgBA,WAAW9B,KAAX,EAAkBlB,MAAlB,EAA0BmB,EAA1B,CAAhB;WACOA,EAAP;GAhCc;CAAhB;;ACLA,IAAMwE,YAAY,SAAZA,SAAY,CAACzE,KAAD,EAAQC,EAAR;SAAe,YAAM;QACjCA,GAAGmB,CAAH,OAAWR,SAAX,IAAwBX,GAAGmB,CAAH,OAAW,IAAvC,EACEnB,GAAGmB,CAAH,GACGC,SADH,CACa,QADb,EAEGqD,MAFH;;UAIIxE,OAAN,GAAgB,EAAhB;WACOD,GAAGF,YAAV;WACOE,GAAG6B,UAAV;GARgB;CAAlB;;ACKA,IAAM6C,gBAAgB,SAAhBA,aAAgB,CAACvC,UAAD,EAAatD,MAAb,EAAqBmB,EAArB,EAAyBiD,MAAzB,EAAoC;MAClDlD,QAAQ;aACH,EADG;gBAEA;GAFd;;aAKW4E,KAAX,CAAiB,SAAjB,IAA8B;aACnBR,QAAQpE,KAAR,EAAelB,MAAf,EAAuBmB,EAAvB,EAA2BiD,MAA3B,EAAmCd,UAAnC,CADmB;eAEjBqC,UAAUzE,KAAV,EAAiBC,EAAjB,CAFiB;cAGlBkC,SAASnC,KAAT,EAAgBlB,MAAhB,EAAwBsD,UAAxB,CAHkB;gBAIhBrC,aAAaC,KAAb,EAAoBlB,MAApB,EAA4BmB,EAA5B;GAJd;CANF;;ACHA,IAAM4E,cAAc,SAAdA,WAAc,CAAC3E,OAAD,EAAUpB,MAAV,EAAkBmB,EAAlB,EAAsBqD,IAAtB,EAA4BwB,QAA5B,EAAyC;MACrDjE,oBAAiBiE,SAASzD,SAAT,CAAmB,QAAnB,EAA6B3D,IAA7B,CAAkCwC,OAAlC,EAA2C;WAAKR,EAAEqF,EAAP;GAA3C,CAAvB;;oBAGGC,KADH,GAEGC,MAFH,CAEU,GAFV,EAEe,QAFf,EAGGV,IAHH,CAGQ,OAHR,EAGiB,OAHjB,EAIGA,IAJH,CAIQ,WAJR,EAIqBjB,IAJrB,EAKGiB,IALH,CAMI,IANJ,EAOI;WAAK,WAAWlE,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+B2E,OAA/B,CAAuC5B,IAAvC,CAAX,GAA0D,GAA1D,GAAgE6B,EAAEJ,EAAvE;GAPJ,EASGzD,IATH,CASQ,UAAS8D,WAAT,EAAsB;gBACdzE,KAAZ,CAAkBY,OAAO,IAAP,CAAlB;GAVJ;;oBAaeD,IAAf,CAAoB,UAAS8D,WAAT,EAAsB;WACjC,IAAP,EACGb,IADH,CACQ,OADR,EACiB,OADjB,EAEGlD,SAFH,CAEa,UAFb,EAGGmD,KAHH,CAGS,gBAHT,EAG2B,YAAW;UAC5B7D,QAAQyE,YAAYzE,KAA1B;UACIyE,YAAYL,EAAZ,KAAmB7E,QAAQzB,MAAR,GAAiB,CAApC,IAAyCkC,UAAUC,SAAvD,EAAkE;eACzD,KAAP;OADF,MAEO;eACE,MAAP;;KARN;GADF;;oBAceyE,IAAf,GAAsBX,MAAtB;CA9BF;;ACAA;AACA,IAAMvC,aAAW,SAAXA,QAAW,CAACnC,KAAD,EAAQlB,MAAR,EAAgBmB,EAAhB,EAAoBiD,MAApB,EAA4Bd,UAA5B,EAA2C;MAClDlC,OADkD,GACtCF,KADsC,CAClDE,OADkD;;;MAGpDmC,aAAa,SAAbA,UAAa,CAACC,CAAD,EAAIgD,GAAJ,EAAY;QACvBC,cAAcrF,QAAQoC,CAAR,CAApB;;SAEK,IAAI3C,IAAI,CAAb,EAAgBA,IAAI4F,YAAY9G,MAAhC,EAAwCkB,GAAxC,EAA6C;UACrCgB,QAAQ6E,SAASC,cAAT,CAAwB,WAAWH,GAAX,GAAiB,GAAjB,GAAuB3F,CAA/C,CAAd;;UAEIkB,eAAeF,KAAf,MAA0B,IAA9B,EAAoC;eAC3B,IAAP;;;;WAIG,KAAP;GAXF;;MAcM4B,UAAUlC,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+BiC,MAA/B,CAAsCH,UAAtC,CAAhB;MACMjC,UAAUmC,QAAQrE,GAAR,CAAY,aAAK;QACzBqH,cAAcrF,QAAQoC,CAAR,CAApB;;WAEOiD,YACJrH,GADI,CACA,UAACwB,CAAD,EAAIC,CAAJ;aACHkB,eACE2E,SAASC,cAAT,CACE,WAAWpF,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+B2E,OAA/B,CAAuC5C,CAAvC,CAAX,GAAuD,GAAvD,GAA6D3C,CAD/D,CADF,CADG;KADA,EAQJzB,GARI,CAQA,UAACwB,CAAD,EAAIC,CAAJ,EAAU;UACTD,MAAM,IAAN,IAAcA,MAAMkB,SAAxB,EAAmC;eAC1B,IAAP;OADF,MAEO,IAAI,OAAO9B,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BlB,MAAnC,KAA8C,UAAlD,EAA8D;eAC5D,CACLhB,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BlB,MAA5B,CAAmCJ,EAAE,CAAF,CAAnC,CADK,EAELZ,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BlB,MAA5B,CAAmCJ,EAAE,CAAF,CAAnC,CAFK,CAAP;OADK,MAKA;eACEA,CAAP;;KAjBC,CAAP;GAHc,CAAhB;;;;;;;;MA+BI6C,QAAQ9D,MAAR,KAAmB,CAAvB,EAA0B,OAAOK,OAAOpB,IAAd;;;MAGpBgF,SAAS;UACP,cAAChD,CAAD,EAAI4C,CAAJ,EAAO3C,CAAP,EAAa;UACX+F,SAAStF,QAAQT,CAAR,CAAf;;UAEI,OAAOb,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4B2B,SAAnC,KAAiD,UAArD,EAAiE;;;;;;;+BAE/C+C,MAAhB,8HAAwB;gBAAbC,CAAa;;gBAClBA,MAAM,IAAN,IAAcA,MAAM/E,SAAxB,EAAmC;;;;gBAKjC+E,EAAE,CAAF,KAAQ7G,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BtB,EAAE4C,CAAF,CAA5B,CAAR,IACAxD,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BtB,EAAE4C,CAAF,CAA5B,KAAqCqD,EAAE,CAAF,CAFvC,EAGE;qBACO,IAAP;;;;;;;;;;;;;;;;;;eAIG,KAAP;OAfF,MAgBO;;;;;;gCACWD,MAAhB,mIAAwB;gBAAbC,EAAa;;gBAClBA,OAAM,IAAN,IAAcA,OAAM/E,SAAxB,EAAmC;;;;gBAI/B+E,GAAE,CAAF,KAAQjG,EAAE4C,CAAF,CAAR,IAAgB5C,EAAE4C,CAAF,KAAQqD,GAAE,CAAF,CAA5B,EAAkC;qBACzB,IAAP;;;;;;;;;;;;;;;;;;eAIG,KAAP;;KA/BS;YAkCL,gBAACjG,CAAD,EAAI4C,CAAJ,EAAO3C,CAAP,EAAa;UACb+F,SAAStF,QAAQT,CAAR,CAAf;;UAEI,OAAOb,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4B2B,SAAnC,KAAiD,UAArD,EAAiE;;;;;;;gCAE/C+C,MAAhB,mIAAwB;gBAAbC,CAAa;;gBAClBA,MAAM,IAAN,IAAcA,MAAM/E,SAAxB,EAAmC;;;;gBAKjC+E,EAAE,CAAF,KAAQ7G,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BtB,EAAE4C,CAAF,CAA5B,CAAR,IACAxD,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BtB,EAAE4C,CAAF,CAA5B,KAAqCqD,EAAE,CAAF,CAFvC,EAGE;qBACO,IAAP;;;;;;;;;;;;;;;;;;eAIG,KAAP;OAfF,MAgBO;;;;;;gCACWD,MAAhB,mIAAwB;gBAAbC,GAAa;;gBAClBA,QAAM,IAAN,IAAcA,QAAM/E,SAAxB,EAAmC;;;;gBAI/B+E,IAAE,CAAF,KAAQjG,EAAE4C,CAAF,CAAR,IAAgB5C,EAAE4C,CAAF,KAAQqD,IAAE,CAAF,CAA5B,EAAkC;qBACzB,IAAP;;;;;;;;;;;;;;;;;;eAIG,KAAP;;KAhES;YAmEL,gBAACjG,CAAD,EAAI4C,CAAJ,EAAO3C,CAAP,EAAa;UACb+F,SAAStF,QAAQT,CAAR,CAAf;;;;;;;8BAEgB+F,MAAhB,mIAAwB;cAAbC,CAAa;;cAClBA,MAAM,IAAN,IAAcA,MAAM/E,SAAxB,EAAmC;;;;cAKjC+E,EAAE,CAAF,KAAQ7G,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BtB,EAAE4C,CAAF,CAA5B,CAAR,IACAxD,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BtB,EAAE4C,CAAF,CAA5B,KAAqCqD,EAAE,CAAF,CAFvC,EAGE;mBACO,IAAP;;;;;;;;;;;;;;;;;;aAIG,KAAP;;GAnFJ;;SAuFO7G,OAAOpB,IAAP,CAAY8E,MAAZ,CAAmB,aAAK;YACrBJ,WAAWQ,SAAnB;WACO,KAAL;eACSL,QAAQM,KAAR,CAAc,UAACP,CAAD,EAAI3C,CAAJ;iBACnB+C,OAAO5D,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBL,IAA5B,EAAkCvC,CAAlC,EAAqC4C,CAArC,EAAwC3C,CAAxC,CADmB;SAAd,CAAP;WAGG,IAAL;eACS4C,QAAQO,IAAR,CAAa,UAACR,CAAD,EAAI3C,CAAJ;iBAClB+C,OAAO5D,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBL,IAA5B,EAAkCvC,CAAlC,EAAqC4C,CAArC,EAAwC3C,CAAxC,CADkB;SAAb,CAAP;;cAIM,IAAIoD,KAAJ,CAAU,6BAA6BjE,OAAOkE,cAA9C,CAAN;;GAXC,CAAP;CA3IF;;ACEA,IAAMC,iBAAe,SAAfA,YAAe,CAACnE,MAAD,EAASmB,EAAT,EAAaiD,MAAb;SAAwB,wBAAgB;WACpDlB,OAAP,GAAiBoB,YAAjB;WACO1B,IAAP,CAAY,OAAZ,EAAqBzB,EAArB,EAAyBnB,OAAOkD,OAAhC;OACGH,aAAH;GAHmB;CAArB;;AAMA,IAAM+D,WAAW,SAAXA,QAAW,CAAC5F,KAAD,EAAQlB,MAAR,EAAgBmB,EAAhB,EAAoBiD,MAApB,EAA4Bd,UAA5B;SAA2C,UAC1DkB,IAD0D,EAE1DC,SAF0D,EAGvD;QACKrD,OADL,GAC6BF,KAD7B,CACKE,OADL;QACcC,UADd,GAC6BH,KAD7B,CACcG,UADd;;;QAGGqD,gBACJ1E,OAAOyB,UAAP,CAAkB+C,IAAlB,EAAwBrB,IAAxB,KAAiC,QAAjC,GACInD,OAAOyB,UAAP,CAAkB+C,IAAlB,EAAwBtC,MAAxB,CAA+BzB,KAA/B,GACET,OAAOyB,UAAP,CAAkB+C,IAAlB,EAAwBtC,MAAxB,CAA+BzB,KAA/B,GAAuCd,MAAvC,GAAgD,CADlD,CADJ,GAIIK,OAAOyB,UAAP,CAAkB+C,IAAlB,EAAwBtC,MAAxB,CAA+BzB,KAA/B,GAAuC,CAAvC,CALN;;QAOMoB,QAAQ+C,SAASxC,MAAT,CAAgB,CAAC,CAAC,CAAC,EAAF,EAAM,CAAN,CAAD,EAAW,CAAC,EAAD,EAAKsC,aAAL,CAAX,CAAhB,CAAd;QACMuB,KAAK7E,QAAQoD,IAAR,IAAgBpD,QAAQoD,IAAR,EAAc7E,MAA9B,GAAuC,CAAlD;QACM0F,OACJ,WAAW9D,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+B2E,OAA/B,CAAuC5B,IAAvC,CAAX,GAA0D,GAA1D,GAAgEyB,EADlE;;QAGI7E,QAAQoD,IAAR,CAAJ,EAAmB;cACTA,IAAR,EAAc1D,IAAd,CAAmB;cAAA;oBAAA;;OAAnB;KADF,MAMO;cACG0D,IAAR,IAAgB,CAAC,EAAEyB,MAAF,EAAMpE,YAAN,EAAawD,UAAb,EAAD,CAAhB;;;QAGEhE,WAAWmD,IAAX,CAAJ,EAAsB;iBACTA,IAAX,EAAiB1D,IAAjB,CAAsB,EAAEmF,MAAF,EAAMZ,UAAN,EAAtB;KADF,MAEO;iBACMb,IAAX,IAAmB,CAAC,EAAEyB,MAAF,EAAMZ,UAAN,EAAD,CAAnB;;;UAICH,EADH,CACM,OADN,EACe,YAAW;UAClB9B,MAAM+B,WAAN,KAAsB,IAA1B,EAAgC;eACvBvC,IAAP,CAAY,YAAZ,EAA0BzB,EAA1B,EAA8BnB,OAAOkD,OAArC;YACI,OAAOE,MAAM+B,WAAN,CAAkBC,eAAzB,KAA6C,UAAjD,EAA6D;gBACrDD,WAAN,CAAkBC,eAAlB;;;KALR,EASGF,EATH,CASM,OATN,EASe,UAAS2B,CAAT,EAAY;;qBAGrB7G,MADF,EAEEmB,EAFF,EAGEiD,MAHF,EAIEf,WAASnC,KAAT,EAAgBlB,MAAhB,EAAwBmB,EAAxB,EAA4BiD,MAA5B,EAAoCd,UAApC,CAJF;KAXJ,EAiBG4B,EAjBH,CAiBM,KAjBN,EAiBa,YAAW;;UAEd6B,cAAc3F,QAAQoD,IAAR,EAAcpD,QAAQoD,IAAR,EAAc7E,MAAd,GAAuB,CAArC,EAAwCsG,EAA5D;UACMe,YAAYN,SAASC,cAAT,CAChB,WACEpF,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+B2E,OAA/B,CAAuC5B,IAAvC,CADF,GAEE,GAFF,GAGEuC,WAJc,CAAlB;UAMMzG,YAAYyB,eAAeiF,SAAf,CAAlB;;UAGE1G,cAAcwB,SAAd,IACAxB,cAAc,IADd,IAEAA,UAAU,CAAV,MAAiBA,UAAU,CAAV,CAHnB,EAIE;iBACSY,KAAT,EAAgBlB,MAAhB,EAAwBmB,EAAxB,EAA4BiD,MAA5B,EAAoCd,UAApC,EAAgDkB,IAAhD,EAAsDC,SAAtD;;oBAEYrD,QAAQoD,IAAR,CAAZ,EAA2BxE,MAA3B,EAAmCmB,EAAnC,EAAuCqD,IAAvC,EAA6CC,SAA7C;;uBAEazE,MAAb,EAAqBmB,EAArB,EAAyBiD,MAAzB,EACEf,WAASnC,KAAT,EAAgBlB,MAAhB,EAAwBmB,EAAxB,EAA4BiD,MAA5B,EAAoCd,UAApC,CADF;OATF,MAYO;YAEHF,MAAM+B,WAAN,IACA/B,MAAM+B,WAAN,CAAkB8B,QAAlB,OAAiC,qBADjC,IAEA7D,MAAM9C,SAAN,KAAoB,IAHtB,EAIE;aACG0C,UAAH,CAAcwB,IAAd;;;;aAIG5B,IAAP,CAAY,UAAZ,EAAwBzB,EAAxB,EAA4BnB,OAAOkD,OAAnC;KAlDJ;;WAqDOrB,KAAP;GAvFe;CAAjB;;ACNA;;;;;;;;;AASA,IAAMZ,iBAAe,SAAfA,YAAe,CAACC,KAAD,EAAQlB,MAAR,EAAgBmB,EAAhB,EAAoBiD,MAApB,EAA4Bd,UAA5B;SAA2C,mBAAW;QACjElC,OADiE,GACrDF,KADqD,CACjEE,OADiE;;;QAGrE,OAAOE,OAAP,KAAmB,WAAvB,EAAoC;aAC3BC,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+BC,MAA/B,CAAsC,UAACC,GAAD,EAAMC,GAAN,EAAW4E,GAAX,EAAmB;YACxDC,cAAcrF,QAAQQ,GAAR,CAApB;;YAEI6E,gBAAgB3E,SAAhB,IAA6B2E,gBAAgB,IAAjD,EAAuD;cACjD7E,GAAJ,IAAW,EAAX;SADF,MAEO;cACDA,GAAJ,IAAW6E,YAAY/E,MAAZ,CAAmB,UAACd,CAAD,EAAI4C,CAAJ,EAAO3C,CAAP,EAAa;gBACnCJ,QAAQsB,eACZ2E,SAASC,cAAT,CAAwB,WAAWH,GAAX,GAAiB,GAAjB,GAAuB3F,CAA/C,CADY,CAAd;gBAGIJ,UAAU,IAAd,EAAoB;kBACdG,EAAEE,IAAF,CAAOL,KAAP,CAAJ;;;mBAGKG,CAAP;WARS,EASR,EATQ,CAAX;;;eAYKe,GAAP;OAlBK,EAmBJ,EAnBI,CAAP;KADF,MAqBO;;;aAGEH,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+Bd,OAA/B,CAAuC,UAACC,CAAD,EAAI4F,GAAJ,EAAY;YAC7ClF,QAAQV,CAAR,MAAekB,SAAf,IAA4BR,QAAQV,CAAR,MAAe,IAA/C,EAAqD;;;;YAI/C8B,MAAM1C,OAAOyB,UAAP,CAAkBb,CAAlB,CAAZ;;YAEMsG,WAAW5F,QAAQV,CAAR,EAAWxB,GAAX,CAAe;iBAAKyH,EAAEzH,GAAF,CAAMsD,IAAIR,MAAV,CAAL;SAAf,CAAjB;;YAEMiF,MAAMD,SAAS9H,GAAT,CAAa,UAACyH,CAAD,EAAIO,CAAJ,EAAU;cAC3BzC,SAASmC,SAAS5F,KAAT,EAAgBlB,MAAhB,EAAwBmB,EAAxB,EAA4BiD,MAA5B,EAAoCd,UAApC,EACb1C,CADa,EAEb6B,OAAO,kBAAkB+D,GAAzB,CAFa,CAAf;;;iBAMOpE,MAAP,CAAc,CAAC,CAAC,CAAC,EAAF,EAAMyE,EAAE,CAAF,CAAN,CAAD,EAAc,CAAC,EAAD,EAAKA,EAAE,CAAF,CAAL,CAAd,CAAd;;iBAEO;gBACDO,CADC;mBAEEzC,MAFF;iBAGAkC;WAHP;SATU,CAAZ;;gBAgBQjG,CAAR,IAAauG,GAAb;;oBAEYA,GAAZ,EAAiBnH,MAAjB,EAAyBmB,EAAzB,EAA6BP,CAA7B,EAAgC6B,OAAO,kBAAkB+D,GAAzB,CAAhC;;;;;YAKI7F,OAAJ,CAAY,UAAC0G,CAAD,EAAIC,CAAJ,EAAU;iBACb,YAAYd,GAAZ,GAAkB,GAAlB,GAAwBc,CAA/B,EACG1E,IADH,CACQyE,EAAExF,KADV,EAEGe,IAFH,CAEQyE,EAAExF,KAAF,CAAQgB,IAFhB,EAEsBwE,EAAEE,GAAF,CAAMzE,OAAN,EAFtB;SADF;OAhCF;;;SAwCGC,aAAH;;aAEO5B,EAAP;;GArEiB;CAArB;;;;ACXA,IAAM6B,eAAa,SAAbA,UAAa,CAAC9B,KAAD,EAAQlB,MAAR,EAAgBmB,EAAhB;SAAuB,qBAAa;QAC7CC,OAD6C,GACjCF,KADiC,CAC7CE,OAD6C;;;QAGjD6B,cAAcnB,SAAlB,EAA6B;UACvBX,GAAGmB,CAAH,OAAWR,SAAX,IAAwBX,GAAGmB,CAAH,OAAW,IAAvC,EAA6C;eACpCd,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+Bd,OAA/B,CAAuC,UAACC,CAAD,EAAI4F,GAAJ,EAAY;cAC3CgB,YAAYpG,QAAQR,CAAR,CAAlB;;oBAEUD,OAAV,CAAkB,UAACkG,CAAD,EAAIhG,CAAJ,EAAU;gBACpBgB,QAAQ6E,SAASC,cAAT,CAAwB,WAAWH,GAAX,GAAiB,GAAjB,GAAuB3F,CAA/C,CAAd;gBACIkB,eAAeF,KAAf,MAA0B,IAA9B,EAAoC;iBAC/BS,CAAH,GACGG,MADH,CACU,YAAY+D,GAAZ,GAAkB,GAAlB,GAAwB3F,CADlC,EAEG+B,IAFH,CAEQiE,EAAEhF,KAAF,CAAQgB,IAFhB,EAEsB,IAFtB;;WAHJ;SAHF;;WAaGE,aAAH;;KAfJ,MAiBO;UACD5B,GAAGmB,CAAH,OAAWR,SAAX,IAAwBX,GAAGmB,CAAH,OAAW,IAAvC,EAA6C;YACrCkF,YAAYpG,QAAQ6B,SAAR,CAAlB;YACMuD,MAAMjF,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+B2E,OAA/B,CAAuCnD,SAAvC,CAAZ;;kBAEUtC,OAAV,CAAkB,UAACkG,CAAD,EAAIhG,CAAJ,EAAU;cACpBgB,QAAQ6E,SAASC,cAAT,CAAwB,WAAWH,GAAX,GAAiB,GAAjB,GAAuB3F,CAA/C,CAAd;cACIkB,eAAeF,KAAf,MAA0B,IAA9B,EAAoC;eAC/BS,CAAH,GACGG,MADH,CACU,YAAY+D,GAAZ,GAAkB,GAAlB,GAAwB3F,CADlC,EAEG+B,IAFH,CAEQiE,EAAEhF,KAAF,CAAQgB,IAFhB,EAEsB,IAFtB;;gBAII,OAAOgE,EAAEzD,KAAT,KAAmB,UAAvB,EAAmC;gBAC/BA,KAAF,CAAQX,OAAO,YAAY+D,GAAZ,GAAkB,GAAlB,GAAwB3F,CAA/B,CAAR;;;SARN;;WAaGkC,aAAH;;;WAGG0E,OAAP;GAzCiB;CAAnB;;ACAA,IAAMlD,aAAW,SAAXA,QAAW,CAACrD,KAAD,EAAQlB,MAAR,EAAgBmB,EAAhB,EAAoBiD,MAApB,EAA4Bd,UAA5B;SAA2C,UAC1DkB,IAD0D,EAE1DC,SAF0D,EAGvD;QACKrD,OADL,GACiBF,KADjB,CACKE,OADL;;aAEMF,KAAT,EAAgBlB,MAAhB,EAAwBmB,EAAxB,EAA4BiD,MAA5B,EAAoCd,UAApC,EAAgDkB,IAAhD,EAAsDC,SAAtD;gBACYrD,QAAQoD,IAAR,CAAZ,EAA2BxE,MAA3B,EAAmCmB,EAAnC,EAAuCqD,IAAvC,EAA6CC,SAA7C;GANe;CAAjB;;ACEA,IAAMa,YAAU,SAAVA,OAAU,CAACpE,KAAD,EAAQlB,MAAR,EAAgBmB,EAAhB,EAAoBiD,MAApB,EAA4Bd,UAA5B;SAA2C,YAAM;QAC3D,CAACnC,GAAGmB,CAAH,EAAL,EAAa;SACRiD,UAAH;;;OAGCjD,CAAH,GACGkD,MADH,CACU,OADV,EAEGC,IAFH,CAEQ,IAFR,EAEc,UAAC7E,CAAD,EAAIC,CAAJ;aAAU,iBAAiBA,CAA3B;KAFd,EAGG4E,IAHH,CAGQ,OAHR,EAGiB,aAHjB,EAIGA,IAJH,CAIQ,WAJR,EAIqB;aAAK7E,CAAL;KAJrB,EAKG4B,IALH,CAKQ,UAAS5B,CAAT,EAAY;iBACPM,KAAT,EAAgBlB,MAAhB,EAAwBmB,EAAxB,EAA4BiD,MAA5B,EAAoCd,UAApC,EAAgD1C,CAAhD,EAAmD6B,OAAO,IAAP,CAAnD;KANJ;;OASGxB,YAAH,GAAkBA,eAAaC,KAAb,EAAoBlB,MAApB,EAA4BmB,EAA5B,EAAgCiD,MAAhC,EAAwCd,UAAxC,CAAlB;OACGN,UAAH,GAAgBA,aAAW9B,KAAX,EAAkBlB,MAAlB,EAA0BmB,EAA1B,CAAhB;WACOA,EAAP;GAhBc;CAAhB;;ACLA,IAAMwE,cAAY,SAAZA,SAAY,CAACzE,KAAD,EAAQC,EAAR;SAAe,YAAM;QACjCA,GAAGmB,CAAH,OAAWR,SAAX,IAAwBX,GAAGmB,CAAH,OAAW,IAAvC,EACEnB,GAAGmB,CAAH,GACGC,SADH,CACa,cADb,EAEGqD,MAFH;;UAIIxE,OAAN,GAAgB,EAAhB;WACOD,GAAGF,YAAV;WACOE,GAAG6B,UAAV;GARgB;CAAlB;;ACKA,IAAM0E,qBAAqB,SAArBA,kBAAqB,CAACpE,UAAD,EAAatD,MAAb,EAAqBmB,EAArB,EAAyBiD,MAAzB,EAAoC;MACvDlD,QAAQ;aACH,EADG;gBAEA;GAFd;;aAKW4E,KAAX,CAAiB,eAAjB,IAAoC;aACzBR,UAAQpE,KAAR,EAAelB,MAAf,EAAuBmB,EAAvB,EAA2BiD,MAA3B,EAAmCd,UAAnC,CADyB;eAEvBqC,YAAUzE,KAAV,EAAiBC,EAAjB,CAFuB;cAGxBkC,WAASnC,KAAT,EAAgBlB,MAAhB,EAAwBsD,UAAxB,CAHwB;gBAItBrC,eAAaC,KAAb,EAAoBlB,MAApB,EAA4BmB,EAA5B;GAJd;CANF;;ACLA,IAAMwE,cAAY,SAAZA,SAAY,CAACzE,KAAD,EAAQC,EAAR;SAAe,YAAM;OAClCb,SAAH,CACGmC,MADH,CACU,KADV,EAEGA,MAFH,CAEU,UAFV,EAGGmD,MAHH;OAIGtF,SAAH,CACGmC,MADH,CACU,KADV,EAEGA,MAFH,CAEU,mBAFV,EAGGmD,MAHH;OAIGV,EAAH,CAAM,oBAAN,EAA4BpD,SAA5B;WACOX,GAAG6B,UAAV;;UAEM2E,SAAN,GAAkB7F,SAAlB;GAZgB;CAAlB;;ACAA;AACA,IAAM8F,kBAAkB,SAAlBA,eAAkB,CAACC,KAAD,EAAQ5H,KAAR;SAAkB,aAAK;QACvC6H,KAAK,CAACD,MAAMC,EAAN,CAAS,CAAT,IAAcD,MAAME,IAArB,EAA2BF,MAAMC,EAAN,CAAS,CAAT,IAAcD,MAAME,IAA/C,CAAX;QACEC,KAAK,CAACH,MAAMG,EAAN,CAAS,CAAT,IAAcH,MAAME,IAArB,EAA2BF,MAAMG,EAAN,CAAS,CAAT,IAAcH,MAAME,IAA/C,CADP;QAEEE,KAAK,IAAIhI,QAAQ6H,GAAG,CAAH,CAFnB;QAGEI,KAAKJ,GAAG,CAAH,KAAS,IAAIG,EAAb,CAHP;QAIEE,KAAK,IAAIlI,QAAQ+H,GAAG,CAAH,CAJnB;QAKEI,KAAKJ,GAAG,CAAH,KAAS,IAAIG,EAAb,CALP;;QAOME,IAAI7E,EAAE,CAAF,CAAV;QACE8E,IAAI9E,EAAE,CAAF,CADN;QAEE+E,KAAKN,KAAKI,CAAL,GAASH,EAFhB;QAGEM,KAAKL,KAAKE,CAAL,GAASD,EAHhB;;WAKOE,IAAIG,KAAKC,GAAL,CAASH,EAAT,EAAaC,EAAb,CAAJ,IAAwBF,IAAIG,KAAKE,GAAL,CAASJ,EAAT,EAAaC,EAAb,CAAnC;GAbsB;CAAxB;;AAgBA,IAAMI,eAAe,SAAfA,YAAe,CAAC1H,KAAD,EAAQlB,MAAR;SAAmB,UAACY,CAAD,EAAIqF,EAAJ,EAAW;QAC7C4B,QAAQ3G,MAAM2H,MAAN,CAAa5C,EAAb,CAAZ;QACE6C,OAAOlB,gBAAgBC,KAAhB,EAAuB3G,MAAM2H,MAAN,CAAa5I,KAAb,CAAmBgG,EAAnB,CAAvB,CADT;QAEE8C,KAAKlB,MAAMmB,IAAN,CAAW5I,IAFlB;QAGE6I,KAAKpB,MAAMmB,IAAN,CAAW7I,KAHlB;QAIEoI,KAAKvI,OAAOyB,UAAP,CAAkBsH,EAAlB,EAAsB7G,MAJ7B;QAKEsG,KAAKxI,OAAOyB,UAAP,CAAkBwH,EAAlB,EAAsB/G,MAL7B;QAMEgH,QAAQ,CAACX,GAAG3H,EAAEmI,EAAF,CAAH,IAAYlB,MAAME,IAAnB,EAAyBS,GAAG5H,EAAEqI,EAAF,CAAH,IAAYpB,MAAME,IAA3C,CANV;WAOOe,KAAKI,KAAL,CAAP;GARmB;CAArB;;AAWA,IAAM7F,aAAW,SAAXA,QAAW,CAACC,UAAD,EAAapC,KAAb,EAAoBlB,MAApB,EAA+B;;MAExCmJ,MAAM5H,OAAO6H,mBAAP,CAA2BlI,MAAM2H,MAAjC,EAAyCnF,MAAzC,CAAgD;WAAK,CAAC2F,MAAMzI,CAAN,CAAN;GAAhD,CAAZ;MACEsC,UAAUlD,OAAOpB,IADnB;;MAGIuK,IAAIxJ,MAAJ,KAAe,CAAnB,EAAsB;WACbuD,OAAP;;;MAGIoG,YAAYV,aAAa1H,KAAb,EAAoBlB,MAApB,CAAlB;;SAEOkD,QAAQQ,MAAR,CAAe,aAAK;YACjBJ,WAAWQ,SAAnB;WACO,KAAL;eACSqF,IAAIpF,KAAJ,CAAU;iBAAMuF,UAAU1I,CAAV,EAAaqF,EAAb,CAAN;SAAV,CAAP;WACG,IAAL;eACSkD,IAAInF,IAAJ,CAAS;iBAAMsF,UAAU1I,CAAV,EAAaqF,EAAb,CAAN;SAAT,CAAP;;cAEM,IAAIhC,KAAJ,CAAU,6BAA6BjE,OAAOkE,cAA9C,CAAN;;GAPC,CAAP;CAXF;;AC5BA,IAAMqF,cAAc,SAAdA,WAAc,CAACrI,KAAD,EAAQC,EAAR,EAAe;MAC3B0G,QAAQ3G,MAAM2H,MAAN,CAAa3H,MAAM2H,MAAN,CAAaW,MAA1B,CAAd;MACEC,MAAMtI,GAAGb,SAAH,CAAamC,MAAb,CAAoB,KAApB,EAA2BA,MAA3B,CAAkC,UAAlC,CADR;;SAGOvB,MAAM2H,MAAN,CAAa3H,MAAM2H,MAAN,CAAaW,MAA1B,CAAP;MACIjH,SAAJ,CAAc,gBAAgBsF,MAAMmB,IAAN,CAAWnI,CAAzC,EAA4C+E,MAA5C;MACIrD,SAAJ,CAAc,kBAAkBsF,MAAMmB,IAAN,CAAWnI,CAA3C,EAA8C+E,MAA9C;CANF;;ACGA,IAAM8D,YAAY,SAAZA,SAAY,CAACpG,UAAD,EAAapC,KAAb,EAAoBlB,MAApB,EAA4BmB,EAA5B,EAAgCiD,MAAhC;SAA2C,YAAM;QAC3DyD,QAAQ3G,MAAM2H,MAAN,CAAa3H,MAAM2H,MAAN,CAAaW,MAA1B,CAAd;;;;QAII3B,SAASA,MAAMC,EAAN,CAAS,CAAT,MAAgBD,MAAMG,EAAN,CAAS,CAAT,CAAzB,IAAwCH,MAAMC,EAAN,CAAS,CAAT,MAAgBD,MAAMG,EAAN,CAAS,CAAT,CAA5D,EAAyE;kBAC3D9G,KAAZ,EAAmBC,EAAnB;;;QAGI+B,UAAUG,WAASC,UAAT,EAAqBpC,KAArB,EAA4BlB,MAA5B,CAAhB;UACM6I,MAAN,CAAaW,MAAb,GAAsB1H,SAAtB;WACOoB,OAAP,GAAiBA,OAAjB;OACGH,aAAH;WACOH,IAAP,CAAY,UAAZ,EAAwBzB,EAAxB,EAA4BnB,OAAOkD,OAAnC;GAbgB;CAAlB;;ACCA,IAAMyG,YAAY,SAAZA,SAAY,CAChBrG,UADgB,EAEhBpC,KAFgB,EAGhBlB,MAHgB,EAIhBmB,EAJgB,EAKhBiD,MALgB,EAMhByD,KANgB,EAOhB+B,WAPgB,EAQb;MACCC,OAAO1I,GAAGb,SAAH,CAAamC,MAAb,CAAoB,KAApB,EAA2BA,MAA3B,CAAkC,UAAlC,CAAX;MACEwD,KAAK4B,MAAMmB,IAAN,CAAWnI,CADlB;MAEEiJ,SAAS,CAACjC,MAAMC,EAAP,EAAWD,MAAMG,EAAjB,CAFX;MAGE+B,QAAQF,KAAKtH,SAAL,CAAe,gBAAgB0D,EAA/B,EAAmCrH,IAAnC,CAAwC,CAACiJ,KAAD,CAAxC,CAHV;MAIEmC,UAAUH,KAAKtH,SAAL,CAAe,kBAAkB0D,EAAjC,EAAqCrH,IAArC,CAA0CkL,MAA1C,CAJZ;MAKEG,QAAQC,MALV;;QAQGhE,KADH,GAEGV,MAFH,CAEU,MAFV,EAGGC,IAHH,CAGQ,IAHR,EAGc,WAAWQ,EAHzB,EAIGR,IAJH,CAIQ,OAJR,EAIiB,OAJjB;;QAOGA,IADH,CACQ,IADR,EACc;WAAK7E,EAAEkH,EAAF,CAAK,CAAL,CAAL;GADd,EAEGrC,IAFH,CAEQ,IAFR,EAEc;WAAK7E,EAAEkH,EAAF,CAAK,CAAL,CAAL;GAFd,EAGGrC,IAHH,CAGQ,IAHR,EAGc;WAAK7E,EAAEoH,EAAF,CAAK,CAAL,CAAL;GAHd,EAIGvC,IAJH,CAIQ,IAJR,EAIc;WAAK7E,EAAEoH,EAAF,CAAK,CAAL,CAAL;GAJd,EAKGvC,IALH,CAKQ,QALR,EAKkB,OALlB,EAMGA,IANH,CAMQ,cANR,EAMwB,CANxB;;QASGP,EADH,CACM,MADN,EACc,UAAStE,CAAT,EAAYC,CAAZ,EAAe;QACnBsJ,KAAK/G,KAAX;QACIvC,IAAI,CAAR;UACM,MAAMA,CAAZ,EAAe,CAAf,IAAoB4H,KAAKC,GAAL,CAASD,KAAKE,GAAL,CAASd,MAAME,IAAN,GAAa,CAAtB,EAAyBoC,GAAG9B,CAA5B,CAAT,EAAyCR,MAAMuC,IAA/C,CAApB;UACM,MAAMvJ,CAAZ,EAAe,CAAf,IAAoB4H,KAAKC,GAAL,CAASD,KAAKE,GAAL,CAASd,MAAMwC,IAAf,EAAqBF,GAAG7B,CAAxB,CAAT,EAAqCT,MAAMyC,IAA3C,CAApB;cACUhH,UAAV,EAAsBpC,KAAtB,EAA6BlB,MAA7B,EAAqCmB,EAArC,EAAyCiD,MAAzC,EAAiDyD,KAAjD,EAAwDhH,IAAI,CAA5D;GANJ,EAQGqE,EARH,CAQM,KARN,EAQawE,UAAUpG,UAAV,EAAsBpC,KAAtB,EAA6BlB,MAA7B,EAAqCmB,EAArC,EAAyCiD,MAAzC,CARb;;UAWG8B,KADH,GAEGV,MAFH,CAEU,QAFV,EAGGC,IAHH,CAGQ,IAHR,EAGc,WAAWQ,EAHzB,EAIGR,IAJH,CAIQ,OAJR,EAIiB,OAJjB;;UAOGA,IADH,CACQ,IADR,EACc;WAAK7E,EAAE,CAAF,CAAL;GADd,EAEG6E,IAFH,CAEQ,IAFR,EAEc;WAAK7E,EAAE,CAAF,CAAL;GAFd,EAGG6E,IAHH,CAGQ,GAHR,EAGa,CAHb,EAIGC,KAJH,CAKI,SALJ,EAMI,UAAC9E,CAAD,EAAIC,CAAJ;WAAW+I,gBAAgB9H,SAAhB,IAA6BjB,MAAM+I,WAAnC,GAAiD,GAAjD,GAAuD,CAAlE;GANJ,EAQG1E,EARH,CAQM,WARN,EAQmB,YAAW;WACnB,IAAP,EAAaQ,KAAb,CAAmB,SAAnB,EAA8B,GAA9B;GATJ,EAWGR,EAXH,CAWM,UAXN,EAWkB,YAAW;WAClB,IAAP,EAAaQ,KAAb,CAAmB,SAAnB,EAA8B,CAA9B;GAZJ,EAcG9C,IAdH,CAcQqH,KAdR;CA9CF;;AA+DA,IAAMM,SAAS,SAATA,MAAS,CAACjH,UAAD,EAAapC,KAAb,EAAoBlB,MAApB,EAA4BmB,EAA5B,EAAgCiD,MAAhC;SAA2C,YAAM;QACxD+F,KAAK/G,KAAX;QACEyE,QAAQ3G,MAAM2H,MAAN,CAAa3H,MAAM2H,MAAN,CAAaW,MAA1B,CADV;;;UAIMxB,EAAN,CAAS,CAAT,IAAcS,KAAKC,GAAL,CACZD,KAAKE,GAAL,CAASd,MAAME,IAAN,GAAa,CAAtB,EAAyBoC,GAAG9B,CAAH,GAAOrI,OAAOE,MAAP,CAAcE,IAA9C,CADY,EAEZyH,MAAMuC,IAFM,CAAd;UAIMpC,EAAN,CAAS,CAAT,IAAcS,KAAKC,GAAL,CACZD,KAAKE,GAAL,CAASd,MAAMwC,IAAf,EAAqBF,GAAG7B,CAAH,GAAOtI,OAAOE,MAAP,CAAcsK,GAA1C,CADY,EAEZ3C,MAAMyC,IAFM,CAAd;;cAKUhH,UAAV,EAAsBpC,KAAtB,EAA6BlB,MAA7B,EAAqCmB,EAArC,EAAyCiD,MAAzC,EAAiDyD,KAAjD,EAAwD,CAAxD;GAda;CAAf;;ACnEA,IAAM4C,IAAI,SAAJA,CAAI;SAAUzK,OAAO0K,MAAP,GAAgB1K,OAAOE,MAAP,CAAcsK,GAA9B,GAAoCxK,OAAOE,MAAP,CAAcyK,MAA5D;CAAV;;ACAA,IAAMC,qBAAqB,SAArBA,kBAAqB,CAAC5K,MAAD,EAASmB,EAAT,EAAa0J,MAAb,EAAqBrH,CAArB,EAA2B;MAC9CwF,OAAO,EAAEnI,GAAG,CAAC,CAAN,EAAST,MAAM0B,SAAf,EAA0B3B,OAAO2B,SAAjC,EAAb;SACON,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+BuC,IAA/B,CAAoC,UAACtB,GAAD,EAAM7B,CAAN,EAAY;QAC1CgK,OAAOnI,GAAP,IAAcc,EAAE,CAAF,CAAlB,EAAwB;WACjB3C,CAAL,GAASA,CAAT;WACKT,IAAL,GAAYsC,GAAZ;WACKvC,KAAL,GAAaoB,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EACXN,GAAG2J,uBAAH,GAA6B1E,OAA7B,CAAqC1D,GAArC,IAA4C,CADjC,CAAb;aAGO,KAAP;;WAEK,IAAP;GATF;;MAYIsG,KAAK5I,IAAL,KAAc0B,SAAlB,EAA6B;;SAEtBjB,CAAL,GAAS,CAAT;SACKT,IAAL,GAAYe,GAAG2J,uBAAH,GAA6B,CAA7B,CAAZ;SACK3K,KAAL,GAAagB,GAAG2J,uBAAH,GAA6B,CAA7B,CAAb;GAJF,MAKO,IAAI9B,KAAK7I,KAAL,KAAe2B,SAAnB,EAA8B;;SAE9BjB,CAAL,GAASU,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+B9B,MAA/B,GAAwC,CAAjD;SACKQ,KAAL,GAAa6I,KAAK5I,IAAlB;SACKA,IAAL,GAAYe,GAAG2J,uBAAH,GACVvJ,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+B9B,MAA/B,GAAwC,CAD9B,CAAZ;;;SAKKqJ,IAAP;CA5BF;;ACIA;;;;AAIA,IAAM+B,cAAc,SAAdA,WAAc,CAAC7J,KAAD,EAAQlB,MAAR,EAAgBmB,EAAhB,EAAoB0J,MAApB;SAA+B,YAAM;QACnDrH,IAAIwH,MAAM9J,MAAMyG,SAAN,CAAgBtC,IAAhB,EAAN,CAAR;;MAEE,CAAF,IAAO7B,EAAE,CAAF,IAAOxD,OAAOE,MAAP,CAAcE,IAA5B;MACE,CAAF,IAAOoD,EAAE,CAAF,IAAOxD,OAAOE,MAAP,CAAcsK,GAA5B;;QAEMxB,OAAO4B,mBAAmB5K,MAAnB,EAA2BmB,EAA3B,EAA+B0J,MAA/B,EAAuCrH,CAAvC,CAAb;QACMqE,QAAQ;UACRrE,CADQ;YAENwF,IAFM;YAGN6B,OAAO7B,KAAK5I,IAAZ,CAHM;YAINyK,OAAO7B,KAAK7I,KAAZ,CAJM;YAKN,CALM;YAMNsK,EAAEzK,MAAF;KANR;;;UAUM8H,EAAN,CAAS,CAAT,IAAcW,KAAKC,GAAL,CAASD,KAAKE,GAAL,CAASd,MAAME,IAAf,EAAqBvE,EAAE,CAAF,CAArB,CAAT,EAAqCqE,MAAMuC,IAA3C,CAAd;UACMpC,EAAN,GAAWH,MAAMC,EAAN,CAASzI,KAAT,EAAX;;UAEMwJ,MAAN,CAAaG,KAAKnI,CAAlB,IAAuBgH,KAAvB;UACMgB,MAAN,CAAaW,MAAb,GAAsBR,KAAKnI,CAA3B;GArBkB;CAApB;;ACLA,IAAMmC,eAAa,SAAbA,UAAa,CAACM,UAAD,EAAapC,KAAb,EAAoBlB,MAApB,EAA4BmB,EAA5B,EAAgCiD,MAAhC;SAA2C,YAAM;QAC5D+E,MAAM5H,OAAO6H,mBAAP,CAA2BlI,MAAM2H,MAAjC,EAAyCnF,MAAzC,CAAgD;aAAK,CAAC2F,MAAMzI,CAAN,CAAN;KAAhD,CAAZ;;QAEID,OAAJ,CAAY,aAAK;YACTkI,MAAN,CAAaW,MAAb,GAAsB5I,CAAtB;kBACYM,KAAZ,EAAmBC,EAAnB;KAFF;cAIUmC,UAAV,EAAsBpC,KAAtB,EAA6BlB,MAA7B,EAAqCmB,EAArC,EAAyCiD,MAAzC;GAPiB;CAAnB;;ACHA;AACA,IAAM6G,cAAc,SAAdA,WAAc;SAAc,UAACC,KAAD,EAAQC,MAAR,EAAmB;QAC7C3J,UAAOD,OAAOC,IAAP,CAAYC,UAAZ,CAAb;;WAEOD,QAAKwC,IAAL,CACL,UAACpD,CAAD,EAAIC,CAAJ;aACED,MAAMsK,KAAN,GAAcrK,IAAIA,CAAJ,GAAQW,QAAK7B,MAAb,IAAuB8B,WAAWZ,IAAI,CAAf,MAAsBsK,MAA3D,GAAoE,KADtE;KADK,CAAP;GAHkB;CAApB;;ACSA,IAAM7F,YAAU,SAAVA,OAAU,CAAChC,UAAD,EAAapC,KAAb,EAAoBlB,MAApB,EAA4BmB,EAA5B,EAAgCiD,MAAhC,EAAwCyG,MAAxC;SAAmD,YAAM;QACnE1J,GAAGmB,CAAH,OAAWR,SAAX,IAAwBX,GAAGmB,CAAH,OAAW,IAAvC,EAA6C;SACxCiD,UAAH;;;QAGI0E,QAAQC,MAAd;;;;UAIMrB,MAAN,CAAaW,MAAb,GAAsB1H,SAAtB;;;;;UAKM+G,MAAN,CAAa5I,KAAb,GAAqB;aACnBiB,MAAM2H,MAAN,CAAa5C,EAAb,MAAqBnE,SAArB,GACIA,SADJ,GAEIZ,MAAM2H,MAAN,CAAa5C,EAAb,EAAiBmE,IAAjB,GAAwBlJ,MAAM2H,MAAN,CAAa5C,EAAb,EAAiB8B,IAH1B;KAArB;;OAKG7C,EAAH,CAAM,oBAAN,EAA4B,YAAM;UAC1BiE,MAAM5H,OAAO6H,mBAAP,CAA2BlI,MAAM2H,MAAjC,EAAyCnF,MAAzC,CAAgD;eAAK,CAAC2F,MAAMzI,CAAN,CAAN;OAAhD,CAAZ;;UAEIuI,IAAIxJ,MAAJ,GAAa,CAAjB,EAAoB;;YAEdgB,OAAJ,CAAY,aAAK;cACTqI,OAAO9H,MAAM2H,MAAN,CAAajI,CAAb,EAAgBoI,IAA7B;gBACMH,MAAN,CAAaW,MAAb,GAAsB5I,CAAtB;;;cAGI,CAACqK,YAAYjL,OAAOyB,UAAnB,EAA+BuH,KAAK5I,IAApC,EAA0C4I,KAAK7I,KAA/C,CAAL,EAA4D;wBAC9Ce,KAAZ,EAAmBC,EAAnB;;SANJ;kBASUmC,UAAV,EAAsBpC,KAAtB,EAA6BlB,MAA7B,EAAqCmB,EAArC,EAAyCiD,MAAzC;;KAdJ;;;OAmBG9D,SAAH,CACGmC,MADH,CACU,KADV,EAEG+C,MAFH,CAEU,GAFV,EAGGC,IAHH,CAGQ,IAHR,EAGc,QAHd,EAIGA,IAJH,CAKI,WALJ,EAMI,eAAezF,OAAOE,MAAP,CAAcE,IAA7B,GAAoC,GAApC,GAA0CJ,OAAOE,MAAP,CAAcsK,GAAxD,GAA8D,GANlE;;;OAUGxH,UAAH,GAAgBA,aAAWM,UAAX,EAAuBpC,KAAvB,EAA8BlB,MAA9B,EAAsCmB,EAAtC,EAA0CiD,MAA1C,CAAhB;;UAGGc,EADH,CACM,OADN,EACe6F,YAAY7J,KAAZ,EAAmBlB,MAAnB,EAA2BmB,EAA3B,EAA+B0J,MAA/B,CADf,EAEG3F,EAFH,CAEM,MAFN,EAEcqF,OAAOjH,UAAP,EAAmBpC,KAAnB,EAA0BlB,MAA1B,EAAkCmB,EAAlC,EAAsCiD,MAAtC,CAFd,EAGGc,EAHH,CAGM,KAHN,EAGawE,UAAUpG,UAAV,EAAsBpC,KAAtB,EAA6BlB,MAA7B,EAAqCmB,EAArC,EAAyCiD,MAAzC,CAHb;;;;;UAQMuD,SAAN,GAAkBxG,GAAGb,SAAH,CACfmC,MADe,CACR,KADQ,EAEf0D,MAFe,CAER,MAFQ,EAEA,UAFA,EAGfV,IAHe,CAGV,IAHU,EAGJ,cAHI,EAIfA,IAJe,CAIV,GAJU,EAILzF,OAAOE,MAAP,CAAcE,IAJT,EAKfqF,IALe,CAKV,GALU,EAKLzF,OAAOE,MAAP,CAAcsK,GALT,EAMf/E,IANe,CAMV,OANU,EAMD1F,EAAEC,MAAF,CANC,EAOfyF,IAPe,CAOV,QAPU,EAOAgF,EAAEzK,MAAF,IAAY,CAPZ,EAQf0F,KARe,CAQT,SARS,EAQE,CARF,EASf9C,IATe,CASVqH,KATU,CAAlB;GA1Dc;CAAhB;;ACNA,IAAMmB,kBAAkB,SAAlBA,eAAkB,CAAC9H,UAAD,EAAatD,MAAb,EAAqBmB,EAArB,EAAyBiD,MAAzB,EAAiCyG,MAAjC,EAA4C;MAC5D3J,QAAQ;YACJ,EADI;eAED;GAFb;;aAKW4E,KAAX,CAAiB,WAAjB,IAAgC;aACrBR,UAAQhC,UAAR,EAAoBpC,KAApB,EAA2BlB,MAA3B,EAAmCmB,EAAnC,EAAuCiD,MAAvC,EAA+CyG,MAA/C,CADqB;eAEnBlF,YAAUzE,KAAV,EAAiBC,EAAjB,CAFmB;cAGpBkC,WAASC,UAAT,EAAqBpC,KAArB,EAA4BlB,MAA5B,CAHoB;gBAIlB;aAAMkB,MAAM2H,MAAZ;;GAJd;CANF;;ACJA,IAAMlD,cAAY,SAAZA,SAAY,CAACzE,KAAD,EAAQC,EAAR;SAAe,YAAM;OAClCb,SAAH,CACGmC,MADH,CACU,KADV,EAEGA,MAFH,CAEU,QAFV,EAGGmD,MAHH;OAIGtF,SAAH,CACGmC,MADH,CACU,KADV,EAEGA,MAFH,CAEU,iBAFV,EAGGmD,MAHH;OAIGV,EAAH,CAAM,kBAAN,EAA0BpD,SAA1B;;WAEOX,GAAG6B,UAAV;;UAEM2E,SAAN,GAAkB7F,SAAlB;GAbgB;CAAlB;;ACAA,IAAMuJ,cAAc,SAAdA,WAAc,CAACC,CAAD,EAAIjF,CAAJ;SAAUoC,KAAK8C,IAAL,CAAUD,IAAIA,CAAJ,GAAQjF,IAAIA,CAAtB,CAAV;CAApB;;ACEA;AACA,IAAMmF,cAAc,SAAdA,WAAc;SAClBC,QAAQhD,KAAKiD,EAAb,GAAkB,MAAMjD,KAAKiD,EAAX,GAAgBD,KAAlC,GAA0C,MAAMhD,KAAKiD,EAAX,GAAgBD,KADxC;CAApB;;;;;;;;AASA,IAAM7D,oBAAkB,SAAlBA,eAAkB;SAAO,aAAK;QAC9B+D,aAAaH,YAAYI,OAAID,UAAhB,CAAjB;QACIE,WAAWL,YAAYI,OAAIC,QAAhB,CAAf;;QAEIF,aAAaE,QAAjB,EAA2B;UACnBC,MAAMH,UAAZ;mBACaE,QAAb;iBACWC,GAAX;;;;WAIKR,KAAKK,UAAL,IAAmBL,KAAKO,QAA/B;GAXsB;CAAxB;;AAcA,IAAMjD,iBAAe,SAAfA,YAAe,CAAC1H,KAAD,EAAQlB,MAAR;SAAmB,UAACY,CAAD,EAAIqF,EAAJ,EAAW;QAC3C2F,SAAM1K,MAAM6K,IAAN,CAAW9F,EAAX,CAAZ;QACE6C,OAAOlB,kBAAgBgE,MAAhB,CADT;QAEE7C,KAAK6C,OAAI5C,IAAJ,CAAS5I,IAFhB;QAGE6I,KAAK2C,OAAI5C,IAAJ,CAAS7I,KAHhB;QAIEoI,KAAKvI,OAAOyB,UAAP,CAAkBsH,EAAlB,EAAsB7G,MAJ7B;QAKEsG,KAAKxI,OAAOyB,UAAP,CAAkBwH,EAAlB,EAAsB/G,MAL7B;QAMEoJ,IAAIpK,MAAM6K,IAAN,CAAW9L,KAAX,CAAiBgG,EAAjB,CANN;QAOEI,IAAIkC,GAAG3H,EAAEmI,EAAF,CAAH,IAAYP,GAAG5H,EAAEqI,EAAF,CAAH,CAPlB;QAQE+C,IAAIX,YAAYC,CAAZ,EAAejF,CAAf,CARN;QASEoF,QAAQhD,KAAKwD,IAAL,CAAU5F,IAAI2F,CAAd,CATV,CADiD;WAW1ClD,KAAK2C,KAAL,CAAP;GAXmB;CAArB;;AAcA,IAAMpI,aAAW,SAAXA,QAAW,CAACC,UAAD,EAAapC,KAAb,EAAoBlB,MAApB,EAA+B;MACxCmJ,MAAM5H,OAAO6H,mBAAP,CAA2BlI,MAAM6K,IAAjC,EAAuCrI,MAAvC,CAA8C;WAAK,CAAC2F,MAAMzI,CAAN,CAAN;GAA9C,CAAZ;MACMsC,UAAUlD,OAAOpB,IAAvB;;MAEIuK,IAAIxJ,MAAJ,KAAe,CAAnB,EAAsB;WACbuD,OAAP;;;MAGIoG,YAAYV,eAAa1H,KAAb,EAAoBlB,MAApB,CAAlB;;SAEOkD,QAAQQ,MAAR,CAAe,aAAK;YACjBJ,WAAWQ,SAAnB;WACO,KAAL;eACSqF,IAAIpF,KAAJ,CAAU;iBAAMuF,UAAU1I,CAAV,EAAaqF,EAAb,CAAN;SAAV,CAAP;WACG,IAAL;eACSkD,IAAInF,IAAJ,CAAS;iBAAMsF,UAAU1I,CAAV,EAAaqF,EAAb,CAAN;SAAT,CAAP;;cAEM,IAAIhC,KAAJ,CAAU,6BAA6BjE,OAAOkE,cAA9C,CAAN;;GAPC,CAAP;CAVF;;ACxCA,IAAMqF,gBAAc,SAAdA,WAAc,CAACrI,KAAD,EAAQC,EAAR,EAAe;MAC3ByK,SAAM1K,MAAM6K,IAAN,CAAW7K,MAAM6K,IAAN,CAAWvC,MAAtB,CAAZ;MACEC,MAAMtI,GAAGb,SAAH,CAAamC,MAAb,CAAoB,KAApB,EAA2BA,MAA3B,CAAkC,QAAlC,CADR;;SAGOvB,MAAM6K,IAAN,CAAW7K,MAAM6K,IAAN,CAAWvC,MAAtB,CAAP;QACMuC,IAAN,CAAWvC,MAAX,GAAoB1H,SAApB;MACIS,SAAJ,CAAc,cAAcqJ,OAAI5C,IAAJ,CAASnI,CAArC,EAAwC+E,MAAxC;MACIrD,SAAJ,CAAc,gBAAgBqJ,OAAI5C,IAAJ,CAASnI,CAAvC,EAA0C+E,MAA1C;MACIrD,SAAJ,CAAc,cAAcqJ,OAAI5C,IAAJ,CAASnI,CAArC,EAAwC+E,MAAxC;CARF;;ACGA,IAAM8D,cAAY,SAAZA,SAAY,CAACpG,UAAD,EAAapC,KAAb,EAAoBlB,MAApB,EAA4BmB,EAA5B,EAAgCiD,MAAhC;SAA2C,YAAM;QAC3DwH,SAAM1K,MAAM6K,IAAN,CAAW7K,MAAM6K,IAAN,CAAWvC,MAAtB,CAAZ;;;;QAIIoC,UAAOA,OAAI9D,EAAJ,CAAO,CAAP,MAAc8D,OAAI5D,EAAJ,CAAO,CAAP,CAArB,IAAkC4D,OAAI9D,EAAJ,CAAO,CAAP,MAAc8D,OAAI5D,EAAJ,CAAO,CAAP,CAApD,EAA+D;oBACjD9G,KAAZ,EAAmBC,EAAnB;;;QAGEyK,MAAJ,EAAS;UACDH,QAAQvK,MAAM6K,IAAN,CAAWJ,UAAX,CAAsBzK,MAAM6K,IAAN,CAAWvC,MAAjC,CAAd;;aAEImC,UAAJ,GAAiBF,KAAjB;aACII,QAAJ,GAAeJ,KAAf;aACIG,GAAJ,CACGM,WADH,CACehL,MAAM6K,IAAN,CAAWpM,MAAX,CAAkBuB,MAAM6K,IAAN,CAAWvC,MAA7B,CADf,EAEGmC,UAFH,CAEcF,KAFd,EAGGI,QAHH,CAGYJ,KAHZ;;;UAMIM,IAAN,CAAWvC,MAAX,GAAoB1H,SAApB;WACOoB,OAAP,GAAiBG,WAASC,UAAT,EAAqBpC,KAArB,EAA4BlB,MAA5B,CAAjB;OACG+C,aAAH;WACOH,IAAP,CAAY,UAAZ,EAAwBzB,EAAxB,EAA4BnB,OAAOkD,OAAnC;GAvBgB;CAAlB;;ACCA,IAAMyG,cAAY,SAAZA,SAAY,CAACrG,UAAD,EAAapC,KAAb,EAAoBlB,MAApB,EAA4BmB,EAA5B,EAAgCiD,MAAhC,EAAwCwH,MAAxC,EAA6ChC,WAA7C,EAA6D;MACvEH,MAAMtI,GAAGb,SAAH,CAAamC,MAAb,CAAoB,KAApB,EAA2BA,MAA3B,CAAkC,QAAlC,CAAZ;MACEwD,KAAK2F,OAAI5C,IAAJ,CAASnI,CADhB;MAEEiJ,SAAS,CAAC8B,OAAI5D,EAAL,EAAS4D,OAAIO,EAAb,CAFX;MAGEpC,QAAQN,IACLlH,SADK,CACK,cAAc0D,EADnB,EAELrH,IAFK,CAEA,CAAC,EAAEkJ,IAAI8D,OAAI9D,EAAV,EAAcE,IAAI4D,OAAI5D,EAAtB,EAAD,EAA6B,EAAEF,IAAI8D,OAAI9D,EAAV,EAAcE,IAAI4D,OAAIO,EAAtB,EAA7B,CAFA,CAHV;MAMEnC,UAAUP,IAAIlH,SAAJ,CAAc,gBAAgB0D,EAA9B,EAAkCrH,IAAlC,CAAuCkL,MAAvC,CANZ;MAOEG,QAAQC,MAPV;MAQEkC,QAAQ3C,IAAIlH,SAAJ,CAAc,cAAc0D,EAA5B,EAAgCrH,IAAhC,CAAqC,CAACgN,MAAD,CAArC,CARV;;QAWG1F,KADH,GAEGV,MAFH,CAEU,MAFV,EAGGC,IAHH,CAGQ,IAHR,EAGc,SAASQ,EAHvB,EAIGR,IAJH,CAIQ,OAJR,EAIiB,KAJjB,EAKGC,KALH,CAKS,MALT,EAKiB,QALjB,EAMGA,KANH,CAMS,SANT,EAMoB,GANpB;;QASGD,IADH,CACQ,GADR,EACamG,OAAIA,GADjB,EAEGnG,IAFH,CAEQ,WAFR,EAEqB,eAAemG,OAAI9D,EAAJ,CAAO,CAAP,CAAf,GAA2B,GAA3B,GAAiC8D,OAAI9D,EAAJ,CAAO,CAAP,CAAjC,GAA6C,GAFlE;;QAKG5B,KADH,GAEGV,MAFH,CAEU,MAFV,EAGGC,IAHH,CAGQ,IAHR,EAGc,SAASQ,EAHvB,EAIGR,IAJH,CAIQ,OAJR,EAIiB,KAJjB;;QAOGA,IADH,CACQ,IADR,EACc;WAAK7E,EAAEkH,EAAF,CAAK,CAAL,CAAL;GADd,EAEGrC,IAFH,CAEQ,IAFR,EAEc;WAAK7E,EAAEkH,EAAF,CAAK,CAAL,CAAL;GAFd,EAGGrC,IAHH,CAGQ,IAHR,EAGc;WAAK7E,EAAEoH,EAAF,CAAK,CAAL,CAAL;GAHd,EAIGvC,IAJH,CAIQ,IAJR,EAIc;WAAK7E,EAAEoH,EAAF,CAAK,CAAL,CAAL;GAJd,EAKGvC,IALH,CAKQ,QALR,EAKkB,OALlB,EAMGA,IANH,CAMQ,cANR,EAMwB,CANxB;;QASGP,EADH,CACM,MADN,EACc,UAACtE,CAAD,EAAIC,CAAJ,EAAU;QACdsJ,KAAK/G,KAAX;QACIvC,IAAI,CAAR;;WAEI,MAAMA,CAAV,EAAa,CAAb,IAAkB4H,KAAKC,GAAL,CAASD,KAAKE,GAAL,CAASiD,OAAI7D,IAAJ,GAAW,CAApB,EAAuBoC,GAAG9B,CAA1B,CAAT,EAAuCuD,OAAIxB,IAA3C,CAAlB;WACI,MAAMvJ,CAAV,EAAa,CAAb,IAAkB4H,KAAKC,GAAL,CAASD,KAAKE,GAAL,CAASiD,OAAIvB,IAAb,EAAmBF,GAAG7B,CAAtB,CAAT,EAAmCsD,OAAItB,IAAvC,CAAlB;;QAEMmB,QACJ5K,MAAM,CAAN,GAAUK,MAAM6K,IAAN,CAAWJ,UAAX,CAAsB1F,EAAtB,CAAV,GAAsC/E,MAAM6K,IAAN,CAAWF,QAAX,CAAoB5F,EAApB,CADxC;;QAIG2F,OAAID,UAAJ,GAAiBlD,KAAKiD,EAAtB,IACCE,OAAIC,QAAJ,GAAepD,KAAKiD,EADrB,IAECD,QAAQhD,KAAKiD,EAFf,IAGCE,OAAID,UAAJ,IAAkBlD,KAAKiD,EAAvB,IACCE,OAAIC,QAAJ,IAAgBpD,KAAKiD,EADtB,IAECD,SAAShD,KAAKiD,EANlB,EAOE;UACI7K,MAAM,CAAV,EAAa;eACPgL,QAAJ,GAAeJ,KAAf;eACIG,GAAJ,CAAQC,QAAR,CAAiBJ,KAAjB;OAFF,MAGO,IAAI5K,MAAM,CAAV,EAAa;eACd8K,UAAJ,GAAiBF,KAAjB;eACIG,GAAJ,CAAQD,UAAR,CAAmBF,KAAnB;;;;cAIMnI,UAAV,EAAsBpC,KAAtB,EAA6BlB,MAA7B,EAAqCmB,EAArC,EAAyCiD,MAAzC,EAAiDwH,MAAjD,EAAsD/K,IAAI,CAA1D;GA5BJ,EA8BGqE,EA9BH,CA8BM,KA9BN,EA8BawE,YAAUpG,UAAV,EAAsBpC,KAAtB,EAA6BlB,MAA7B,EAAqCmB,EAArC,EAAyCiD,MAAzC,CA9Bb;;UAiCG8B,KADH,GAEGV,MAFH,CAEU,QAFV,EAGGC,IAHH,CAGQ,IAHR,EAGc,SAASQ,EAHvB,EAIGR,IAJH,CAIQ,OAJR,EAIiB,KAJjB;;UAOGA,IADH,CACQ,IADR,EACc;WAAK7E,EAAE,CAAF,CAAL;GADd,EAEG6E,IAFH,CAEQ,IAFR,EAEc;WAAK7E,EAAE,CAAF,CAAL;GAFd,EAGG6E,IAHH,CAGQ,GAHR,EAGa,CAHb,EAIGC,KAJH,CAKI,SALJ,EAMI,UAAC9E,CAAD,EAAIC,CAAJ;WAAW+I,gBAAgB9H,SAAhB,IAA6BjB,MAAM+I,WAAnC,GAAiD,GAAjD,GAAuD,CAAlE;GANJ,EAQG1E,EARH,CAQM,WARN,EAQmB,YAAW;WACnB,IAAP,EAAaQ,KAAb,CAAmB,SAAnB,EAA8B,GAA9B;GATJ,EAWGR,EAXH,CAWM,UAXN,EAWkB,YAAW;WAClB,IAAP,EAAaQ,KAAb,CAAmB,SAAnB,EAA8B,CAA9B;GAZJ,EAcG9C,IAdH,CAcQqH,KAdR;CA3EF;;AA4FA,IAAMM,WAAS,SAATA,MAAS,CAACjH,UAAD,EAAapC,KAAb,EAAoBlB,MAApB,EAA4BmB,EAA5B,EAAgCiD,MAAhC;SAA2C,YAAM;QACxD+F,KAAK/G,KAAX;QACEwI,SAAM1K,MAAM6K,IAAN,CAAW7K,MAAM6K,IAAN,CAAWvC,MAAtB,CADR;;;WAIIxB,EAAJ,CAAO,CAAP,IAAYS,KAAKC,GAAL,CACVD,KAAKE,GAAL,CAASiD,OAAI7D,IAAJ,GAAW,CAApB,EAAuBoC,GAAG9B,CAAH,GAAOrI,OAAOE,MAAP,CAAcE,IAA5C,CADU,EAEVwL,OAAIxB,IAFM,CAAZ;WAIIpC,EAAJ,CAAO,CAAP,IAAYS,KAAKC,GAAL,CAASD,KAAKE,GAAL,CAASiD,OAAIvB,IAAb,EAAmBF,GAAG7B,CAAH,GAAOtI,OAAOE,MAAP,CAAcsK,GAAxC,CAAT,EAAuDoB,OAAItB,IAA3D,CAAZ;WACI6B,EAAJ,GAASP,OAAI5D,EAAJ,CAAO3I,KAAP,EAAT;gBACUiE,UAAV,EAAsBpC,KAAtB,EAA6BlB,MAA7B,EAAqCmB,EAArC,EAAyCiD,MAAzC,EAAiDwH,MAAjD,EAAsD,CAAtD;GAXa;CAAf;;AC3FA;;;;AAIA,IAAMb,gBAAc,SAAdA,WAAc,CAAC7J,KAAD,EAAQlB,MAAR,EAAgBmB,EAAhB,EAAoB0J,MAApB;SAA+B,YAAM;QACjDrH,IAAIwH,MAAM9J,MAAMyG,SAAN,CAAgBtC,IAAhB,EAAN,CAAV;;MAEE,CAAF,IAAO7B,EAAE,CAAF,IAAOxD,OAAOE,MAAP,CAAcE,IAA5B;MACE,CAAF,IAAOoD,EAAE,CAAF,IAAOxD,OAAOE,MAAP,CAAcsK,GAA5B;;QAEMxB,OAAO4B,mBAAmB5K,MAAnB,EAA2BmB,EAA3B,EAA+B0J,MAA/B,EAAuCrH,CAAvC,CAAb;QACMoI,SAAM;UACNpI,CADM;YAEJwF,IAFI;YAGJ6B,OAAO7B,KAAK5I,IAAZ,CAHI;YAIJyK,OAAO7B,KAAK7I,KAAZ,CAJI;YAKJ,CALI;YAMJsK,EAAEzK,MAAF,CANI;kBAOE8B,SAPF;gBAQAA,SARA;WASLuK,MAAQC,WAAR,CAAoB,CAApB;KATP;;;WAaIxE,EAAJ,CAAO,CAAP,IAAYW,KAAKC,GAAL,CAASD,KAAKE,GAAL,CAASiD,OAAI7D,IAAb,EAAmBvE,EAAE,CAAF,CAAnB,CAAT,EAAmCoI,OAAIxB,IAAvC,CAAZ;WACIpC,EAAJ,GAAS4D,OAAI9D,EAAJ,CAAOzI,KAAP,EAAT;WACI8M,EAAJ,GAASP,OAAI9D,EAAJ,CAAOzI,KAAP,EAAT;;UAEM0M,IAAN,CAAW/C,KAAKnI,CAAhB,IAAqB+K,MAArB;UACMG,IAAN,CAAWvC,MAAX,GAAoBR,KAAKnI,CAAzB;GAzBkB;CAApB;;ACNA,IAAMmC,eAAa,SAAbA,UAAa,CAACM,UAAD,EAAapC,KAAb,EAAoBlB,MAApB,EAA4BmB,EAA5B,EAAgCiD,MAAhC;SAA2C,YAAM;QAC5D+E,MAAM5H,OAAO6H,mBAAP,CAA2BlI,MAAM6K,IAAjC,EAAuCrI,MAAvC,CAA8C;aAAK,CAAC2F,MAAMzI,CAAN,CAAN;KAA9C,CAAZ;;QAEID,OAAJ,CAAY,aAAK;YACToL,IAAN,CAAWvC,MAAX,GAAoB5I,CAApB;oBACYM,KAAZ,EAAmBC,EAAnB;KAFF;gBAIUmC,UAAV,EAAsBpC,KAAtB,EAA6BlB,MAA7B,EAAqCmB,EAArC,EAAyCiD,MAAzC;GAPiB;CAAnB;;ACSA;AACA,IAAMqH,QAAQ,SAARA,KAAQ,CAAC3D,EAAD,EAAKE,EAAL,EAAY;MAClBsD,IAAIxD,GAAG,CAAH,IAAQE,GAAG,CAAH,CAAlB;MACE3B,IAAIyB,GAAG,CAAH,IAAQE,GAAG,CAAH,CADd;MAEEgE,IAAIX,YAAYC,CAAZ,EAAejF,CAAf,CAFN;;SAIOoC,KAAKwD,IAAL,CAAU5F,IAAI2F,CAAd,CAAP;CALF;;AAQA,IAAMH,WAAW,SAAXA,QAAW;SAAS,cAAM;QACxBD,SAAM1K,MAAM6K,IAAN,CAAW9F,EAAX,CAAZ;QACI2F,WAAQ9J,SAAZ,EAAuB;aACdA,SAAP;;QAEEyK,SAASd,MAAMG,OAAI9D,EAAV,EAAc8D,OAAI5D,EAAlB,CAAb;QACEwE,SAAS,CAACD,MAAD,GAAU9D,KAAKiD,EAAL,GAAU,CAD/B;;QAGIE,OAAI9D,EAAJ,CAAO,CAAP,IAAY8D,OAAI5D,EAAJ,CAAO,CAAP,CAAhB,EAA2B;eAChB,IAAIS,KAAKiD,EAAT,GAAcc,MAAvB;;;WAGKA,MAAP;GAZe;CAAjB;;AAeA,IAAMb,aAAa,SAAbA,UAAa;SAAS,cAAM;QAC1BC,SAAM1K,MAAM6K,IAAN,CAAW9F,EAAX,CAAZ;QACI2F,WAAQ9J,SAAZ,EAAuB;aACdA,SAAP;;;QAGEyK,SAASd,MAAMG,OAAI9D,EAAV,EAAc8D,OAAIO,EAAlB,CAAb;QACEK,SAAS,CAACD,MAAD,GAAU9D,KAAKiD,EAAL,GAAU,CAD/B;;QAGIE,OAAI9D,EAAJ,CAAO,CAAP,IAAY8D,OAAIO,EAAJ,CAAO,CAAP,CAAhB,EAA2B;eAChB,IAAI1D,KAAKiD,EAAT,GAAcc,MAAvB;;;WAGKA,MAAP;GAbiB;CAAnB;;AAgBA,IAAM7M,SAAS,SAATA,MAAS;SAAS,cAAM;QACtBiM,SAAM1K,MAAM6K,IAAN,CAAW9F,EAAX,CAAZ;;QAEI2F,WAAQ9J,SAAZ,EAAuB;aACdA,SAAP;;;QAGIwJ,IAAIM,OAAI9D,EAAJ,CAAO,CAAP,IAAY8D,OAAI5D,EAAJ,CAAO,CAAP,CAAtB;QACE3B,IAAIuF,OAAI9D,EAAJ,CAAO,CAAP,IAAY8D,OAAI5D,EAAJ,CAAO,CAAP,CADlB;;WAGOqD,YAAYC,CAAZ,EAAejF,CAAf,CAAP;GAVa;CAAf;;AAaA,IAAMf,YAAU,SAAVA,OAAU,CAAChC,UAAD,EAAapC,KAAb,EAAoBlB,MAApB,EAA4BmB,EAA5B,EAAgCiD,MAAhC,EAAwCyG,MAAxC;SAAmD,YAAM;QACnE,CAAC1J,GAAGmB,CAAH,EAAL,EAAa;SACRiD,UAAH;;;QAGI0E,QAAQC,MAAd;;;;UAIM6B,IAAN,CAAWvC,MAAX,GAAoB1H,SAApB;;;;;UAKMiK,IAAN,CAAW9L,KAAX,GAAmB,cAAM;UACjB2L,SAAM1K,MAAM6K,IAAN,CAAW9F,EAAX,CAAZ;aACO2F,WAAQ9J,SAAR,GAAoBA,SAApB,GAAgC8J,OAAIxB,IAAJ,GAAWwB,OAAI7D,IAAtD;KAFF;;;UAMMgE,IAAN,CAAWF,QAAX,GAAsBA,SAAS3K,KAAT,CAAtB;UACM6K,IAAN,CAAWJ,UAAX,GAAwBA,WAAWzK,KAAX,CAAxB;UACM6K,IAAN,CAAWpM,MAAX,GAAoBA,OAAOuB,KAAP,CAApB;;OAEGgE,EAAH,CAAM,kBAAN,EAA0B,YAAM;UACxBiE,MAAM5H,OAAO6H,mBAAP,CAA2B2C,IAA3B,EAAiCrI,MAAjC,CAAwC;eAAK,CAAC2F,MAAMzI,CAAN,CAAN;OAAxC,CAAZ;;UAEIuI,IAAIxJ,MAAJ,GAAa,CAAjB,EAAoB;;YAEdgB,OAAJ,CAAY,aAAK;cACTqI,OAAO+C,KAAKnL,CAAL,EAAQoI,IAArB;gBACM+C,IAAN,CAAWvC,MAAX,GAAoB5I,CAApB;;;cAGI,CAACqK,YAAYjC,IAAZ,EAAkBA,KAAK5I,IAAvB,EAA6B4I,KAAK7I,KAAlC,CAAL,EAA+C;0BACjCe,KAAZ,EAAmBC,EAAnB;;SANJ;oBASUmC,UAAV,EAAsBpC,KAAtB,EAA6BlB,MAA7B,EAAqCmB,EAArC,EAAyCiD,MAAzC;;KAdJ;;;OAmBG9D,SAAH,CACGmC,MADH,CACU,KADV,EAEG+C,MAFH,CAEU,GAFV,EAGGC,IAHH,CAGQ,IAHR,EAGc,MAHd,EAIGA,IAJH,CAKI,WALJ,EAMI,eAAezF,OAAOE,MAAP,CAAcE,IAA7B,GAAoC,GAApC,GAA0CJ,OAAOE,MAAP,CAAcsK,GAAxD,GAA8D,GANlE;;;OAUGxH,UAAH,GAAgBA,aAAWM,UAAX,EAAuBpC,KAAvB,EAA8BlB,MAA9B,EAAsCmB,EAAtC,EAA0CiD,MAA1C,CAAhB;;UAGGc,EADH,CACM,OADN,EACe6F,cAAY7J,KAAZ,EAAmBlB,MAAnB,EAA2BmB,EAA3B,EAA+B0J,MAA/B,CADf,EAEG3F,EAFH,CAEM,MAFN,EAEcqF,SAAOjH,UAAP,EAAmBpC,KAAnB,EAA0BlB,MAA1B,EAAkCmB,EAAlC,EAAsCiD,MAAtC,CAFd,EAGGc,EAHH,CAGM,KAHN,EAGawE,YAAUpG,UAAV,EAAsBpC,KAAtB,EAA6BlB,MAA7B,EAAqCmB,EAArC,EAAyCiD,MAAzC,CAHb;;;;;UAQMuD,SAAN,GAAkBxG,GAAGb,SAAH,CACfmC,MADe,CACR,KADQ,EAEf0D,MAFe,CAER,MAFQ,EAEA,QAFA,EAGfV,IAHe,CAGV,IAHU,EAGJ,YAHI,EAIfA,IAJe,CAIV,GAJU,EAILzF,OAAOE,MAAP,CAAcE,IAJT,EAKfqF,IALe,CAKV,GALU,EAKLzF,OAAOE,MAAP,CAAcsK,GALT,EAMf/E,IANe,CAMV,OANU,EAMD1F,EAAEC,MAAF,CANC,EAOfyF,IAPe,CAOV,QAPU,EAOAgF,EAAEzK,MAAF,IAAY,CAPZ,EAQf0F,KARe,CAQT,SARS,EAQE,CARF,EASf9C,IATe,CASVqH,KATU,CAAlB;GA/Dc;CAAhB;;AC7DA,IAAMwC,sBAAsB,SAAtBA,mBAAsB,CAACnJ,UAAD,EAAatD,MAAb,EAAqBmB,EAArB,EAAyBiD,MAAzB,EAAiCyG,MAAjC,EAA4C;MAChE3J,QAAQ;UACN,EADM;eAED;GAFb;;aAKW4E,KAAX,CAAiB,SAAjB,IAA8B;aACnBR,UAAQhC,UAAR,EAAoBpC,KAApB,EAA2BlB,MAA3B,EAAmCmB,EAAnC,EAAuCiD,MAAvC,EAA+CyG,MAA/C,CADmB;eAEjBlF,YAAUzE,KAAV,EAAiBC,EAAjB,CAFiB;cAGlBkC,WAASC,UAAT,EAAqBpC,KAArB,EAA4BlB,MAA5B,CAHkB;gBAIhB;aAAMkB,MAAM6K,IAAZ;;GAJd;CANF;;ACJA;;AAEA,IAAMW,eAAe,SAAfA,YAAe,CAACpB,CAAD,EAAIjF,CAAJ,EAAO2F,CAAP,EAAUpL,CAAV,EAAgB;SAC5B;OAEH,CAAC,CAAC0K,EAAEjD,CAAF,GAAMhC,EAAEiC,CAAR,GAAYgD,EAAEhD,CAAF,GAAMjC,EAAEgC,CAArB,KAA2B2D,EAAE3D,CAAF,GAAMzH,EAAEyH,CAAnC,IACC,CAACiD,EAAEjD,CAAF,GAAMhC,EAAEgC,CAAT,KAAe2D,EAAE3D,CAAF,GAAMzH,EAAE0H,CAAR,GAAY0D,EAAE1D,CAAF,GAAM1H,EAAEyH,CAAnC,CADF,KAEC,CAACiD,EAAEjD,CAAF,GAAMhC,EAAEgC,CAAT,KAAe2D,EAAE1D,CAAF,GAAM1H,EAAE0H,CAAvB,IAA4B,CAACgD,EAAEhD,CAAF,GAAMjC,EAAEiC,CAAT,KAAe0D,EAAE3D,CAAF,GAAMzH,EAAEyH,CAAvB,CAF7B,CAFG;OAMH,CAAC,CAACiD,EAAEjD,CAAF,GAAMhC,EAAEiC,CAAR,GAAYgD,EAAEhD,CAAF,GAAMjC,EAAEgC,CAArB,KAA2B2D,EAAE1D,CAAF,GAAM1H,EAAE0H,CAAnC,IACC,CAACgD,EAAEhD,CAAF,GAAMjC,EAAEiC,CAAT,KAAe0D,EAAE3D,CAAF,GAAMzH,EAAE0H,CAAR,GAAY0D,EAAE1D,CAAF,GAAM1H,EAAEyH,CAAnC,CADF,KAEC,CAACiD,EAAEjD,CAAF,GAAMhC,EAAEgC,CAAT,KAAe2D,EAAE1D,CAAF,GAAM1H,EAAE0H,CAAvB,IAA4B,CAACgD,EAAEhD,CAAF,GAAMjC,EAAEiC,CAAT,KAAe0D,EAAE3D,CAAF,GAAMzH,EAAEyH,CAAvB,CAF7B;GANJ;CADF;;ACAA;;AAEA,IAAMsE,iBAAiB,SAAjBA,cAAiB;SAAM,oBAAY;;QAEjCC,mBAAmBC,OAAOD,gBAAP,IAA2B,CAApD;;;QAGME,eAAepG,SAASqG,aAAT,CAAuB,QAAvB,CAArB;;QAEMC,mBAAmB7L,GAAG8L,MAAH,CAAUC,UAAnC;;QAEMC,mBAAmBC,OACvBJ,iBAAiBtH,KAAjB,CAAuB2H,UAAvB,CAAkCC,OAAlC,CAA0C,IAA1C,EAAgD,EAAhD,CADuB,CAAzB;;QAIMC,gBAAgB,EAAtB;QACMC,kBACJJ,OAAOJ,iBAAiBtH,KAAjB,CAAuB+H,SAAvB,CAAiCH,OAAjC,CAAyC,IAAzC,EAA+C,EAA/C,CAAP,IAA6DC,aAD/D;QAEMtN,QACJ,CAAC+M,iBAAiBU,WAAjB,GAA+BP,gBAAhC,IAAoDP,gBADtD;QAEMlC,SACJ,CAACsC,iBAAiBW,YAAjB,GAAgCH,eAAjC,IAAoDZ,gBADtD;iBAEa3M,KAAb,GAAqBA,QAAQ,EAA7B,CApBuC;iBAqB1ByK,MAAb,GAAsBA,SAAS,EAA/B,CArBuC;iBAsB1BhF,KAAb,CAAmBzF,KAAnB,GAA2B6M,aAAa7M,KAAb,GAAqB2M,gBAArB,GAAwC,IAAnE;iBACalH,KAAb,CAAmBgF,MAAnB,GAA4BoC,aAAapC,MAAb,GAAsBkC,gBAAtB,GAAyC,IAArE;;;QAGMgB,UAAUd,aAAae,UAAb,CAAwB,IAAxB,CAAhB;YACQC,SAAR,GAAoB,SAApB;YACQC,QAAR,CAAiB,CAAjB,EAAoB,CAApB,EAAuBjB,aAAa7M,KAApC,EAA2C6M,aAAapC,MAAxD;;;SAGK,IAAMsD,GAAX,IAAkB7M,GAAG8L,MAArB,EAA6B;cACnBgB,SAAR,CACE9M,GAAG8L,MAAH,CAAUe,GAAV,CADF,EAEEb,mBAAmBP,gBAFrB,EAGEY,kBAAkBZ,gBAHpB,EAIE3M,QAAQkN,mBAAmBP,gBAJ7B,EAKElC,SAAS8C,kBAAkBZ,gBAL7B;;;;QAUIsB,SAASrB,OAAOsB,GAAP,IAActB,OAAOuB,SAArB,IAAkCvB,MAAjD;QACMwB,aAAa,IAAIC,aAAJ,EAAnB;;;QAGMC,cAAcpN,GAAGb,SAAH,CACjBmC,MADiB,CACV,KADU,EAEjB4C,IAFiB,GAGjBmJ,SAHiB,CAGP,IAHO,CAApB;gBAIYC,YAAZ,CAAyB,WAAzB,EAAsC,iBAAiBlB,aAAjB,GAAiC,GAAvE;gBACYkB,YAAZ,CACE,QADF,EAEEF,YAAYG,YAAZ,CAAyB,QAAzB,IAAqCnB,aAFvC;;;;WAOOgB,WAAP,EACGhM,SADH,CACa,MADb,EAEGkD,IAFH,CAEQ,MAFR,EAEgB,OAFhB;QAGMkJ,SAASN,WAAWO,iBAAX,CAA6BL,WAA7B,CAAf;;;QAGMM,MAAM,+BAA+BhC,OAAOiC,IAAP,CAAYH,MAAZ,CAA3C;QACMI,MAAM,IAAIC,KAAJ,EAAZ;QACIC,MAAJ,GAAa,YAAM;cACThB,SAAR,CACEc,GADF,EAEE,CAFF,EAGE,CAHF,EAIEA,IAAI9O,KAAJ,GAAY2M,gBAJd,EAKEmC,IAAIrE,MAAJ,GAAakC,gBALf;UAOI,OAAOsC,QAAP,KAAoB,UAAxB,EAAoC;iBACzBpC,YAAT;;KATJ;QAYI+B,GAAJ,GAAUA,GAAV;GA9EqB;CAAvB;;ACFA,IAAMxL,aAAW,SAAXA,QAAW,CAACrD,MAAD,EAASmB,EAAT;SAAgB,YAAM;QACjCsC,UAAU,EAAd;QACInC,UAAU,EAAd;QACI6N,SAAS,EAAb;;;QAGInP,OAAOoB,OAAP,CAAezB,MAAf,KAA0B,CAA9B,EAAiC;UAC3ByP,QAAQjO,GACTmB,CADS,GAETC,SAFS,CAEC,QAFD,EAGT6M,KAHS,EAAZ;WAIK,IAAI9H,IAAI,CAAb,EAAgBA,IAAI8H,MAAMzP,MAA1B,EAAkC2H,GAAlC,EAAuC;YACjCvF,eAAeqN,MAAM9H,CAAN,CAAf,MAA6B,IAAjC,EAAuC;kBAC7BxG,IAAR,CAAasO,MAAM9H,CAAN,EAAS+H,QAAtB;cACIC,SAAS,EAAb;cACIC,SAASxN,eAAeqN,MAAM9H,CAAN,CAAf,CAAb;cAEE,OAAOtH,OAAOyB,UAAP,CAAkB2N,MAAM9H,CAAN,EAAS+H,QAA3B,EAAqCnN,MAArC,CAA4C1B,MAA5C,GAAqD,CAArD,CAAP,KACA,QAFF,EAGE;iBACK,IAAIK,IAAI,CAAb,EAAgBA,IAAI0O,OAAO5P,MAA3B,EAAmCkB,GAAnC,EAAwC;kBAEpC4C,QAAQ+L,QAAR,CAAiBJ,MAAM9H,CAAN,EAAS+H,QAA1B,KACArP,OAAOyP,QAAP,CAAgBD,QAAhB,CAAyBJ,MAAM9H,CAAN,EAAS+H,QAAlC,CAFF,EAGE;uBACOvO,IAAP,CACEd,OAAOyB,UAAP,CAAkB2N,MAAM9H,CAAN,EAAS+H,QAA3B,EAAqCnN,MAArC,CAA4ClB,MAA5C,CAAmDuO,OAAO1O,CAAP,CAAnD,CADF;eAJF,MAOO,IAAIb,OAAOyB,UAAP,CAAkB2N,MAAM9H,CAAN,EAAS+H,QAA3B,EAAqCnN,MAArC,OAAkD,CAAtD,EAAyD;uBACvDwN,OAAP,CACE1P,OAAOyB,UAAP,CAAkB2N,MAAM9H,CAAN,EAAS+H,QAA3B,EAAqCnN,MAArC,CAA4ClB,MAA5C,CAAmDuO,OAAO1O,CAAP,CAAnD,CADF;;;oBAKIC,IAAR,CAAawO,MAAb;iBACK,IAAIK,KAAK,CAAd,EAAiBA,KAAKrO,QAAQ3B,MAA9B,EAAsCgQ,IAAtC,EAA4C;kBACtCrO,QAAQqO,EAAR,EAAYhQ,MAAZ,KAAuB,CAA3B,EAA8B;wBACpBgQ,EAAR,IAAc,CAAC,CAAD,EAAI,CAAJ,CAAd;;;WArBN,MAwBO;mBACEP,MAAM9H,CAAN,EAAS+H,QAAhB,IAA4BtN,eAAeqN,MAAM9H,CAAN,CAAf,CAA5B;gBACIsI,WAAW5P,OAAOyB,UAAP,CAAkB2N,MAAM9H,CAAN,EAAS+H,QAA3B,EAAqCnN,MAArC,CAA4CzB,KAA5C,EAAf;gBACIoP,YAAY7P,OAAOyB,UAAP,CAAkB2N,MAAM9H,CAAN,EAAS+H,QAA3B,EAAqCnN,MAArC,CAA4C1B,MAA5C,EAAhB;iBACK,IAAI4G,IAAI,CAAb,EAAgBA,IAAIwI,SAASjQ,MAA7B,EAAqCyH,GAArC,EAA0C;kBAEtCwI,SAASxI,CAAT,KAAemI,OAAO,CAAP,CAAf,IACAK,SAASxI,CAAT,KAAemI,OAAO,CAAP,CADf,IAEA9L,QAAQ+L,QAAR,CAAiBJ,MAAM9H,CAAN,EAAS+H,QAA1B,CAFA,IAGArP,OAAOyP,QAAP,CAAgBD,QAAhB,CAAyBJ,MAAM9H,CAAN,EAAS+H,QAAlC,CAJF,EAKE;uBACOvO,IAAP,CAAY8O,SAASxI,CAAT,CAAZ;eANF,MAOO,IAAIwI,SAASxI,CAAT,KAAemI,OAAO,CAAP,CAAf,IAA4BK,SAASxI,CAAT,KAAemI,OAAO,CAAP,CAA/C,EAA0D;uBACxDG,OAAP,CAAeE,SAASxI,CAAT,CAAf;;;oBAGItG,IAAR,CAAawO,MAAb;iBACK,IAAIK,MAAK,CAAd,EAAiBA,MAAKrO,QAAQ3B,MAA9B,EAAsCgQ,KAAtC,EAA4C;kBACtCrO,QAAQqO,GAAR,EAAYhQ,MAAZ,KAAuB,CAA3B,EAA8B;wBACpBgQ,GAAR,IAAc,CAAC,CAAD,EAAI,CAAJ,CAAd;;;;;;;UAOJ/L,SAAS;cACP,cAAShD,CAAT,EAAY4C,CAAZ,EAAeP,SAAf,EAA0B;cAC1B6M,WAAWlP,EAAE4C,CAAF,CAAf;cACIuM,gBAAgB/P,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CACjB1B,MADiB,GAEjB4F,OAFiB,CAET0J,QAFS,CAApB;cAGIE,qBAAqBhQ,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BzB,KAA5B,GACvBsP,aADuB,CAAzB;iBAIEC,sBAAsBb,OAAO3L,CAAP,EAAU,CAAV,CAAtB,IACAwM,sBAAsBb,OAAO3L,CAAP,EAAU,CAAV,CAFxB;SATW;gBAcL,gBAAS5C,CAAT,EAAY4C,CAAZ,EAAeP,SAAf,EAA0B;iBACzB3B,QAAQ2B,SAAR,EAAmB,CAAnB,KAAyBrC,EAAE4C,CAAF,CAAzB,IAAiC5C,EAAE4C,CAAF,KAAQlC,QAAQ2B,SAAR,EAAmB,CAAnB,CAAhD;SAfW;gBAiBL,gBAASrC,CAAT,EAAY4C,CAAZ,EAAeP,SAAf,EAA0B;cAC5B6M,WAAWlP,EAAE4C,CAAF,CAAf;cACIuM,gBAAgB/P,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CACjB1B,MADiB,GAEjB4F,OAFiB,CAET0J,QAFS,CAApB;cAGIE,qBAAqBhQ,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BzB,KAA5B,GACvBsP,aADuB,CAAzB;iBAIEC,sBAAsBb,OAAO3L,CAAP,EAAU,CAAV,CAAtB,IACAwM,sBAAsBb,OAAO3L,CAAP,EAAU,CAAV,CAFxB;;OAzBJ;aA+BOxD,OAAOpB,IAAP,CAAY8E,MAAZ,CAAmB;eACxBD,QAAQM,KAAR,CAAc,UAACP,CAAD,EAAIP,SAAJ;iBACZW,OAAO5D,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBL,IAA5B,EAAkCvC,CAAlC,EAAqC4C,CAArC,EAAwCP,SAAxC,CADY;SAAd,CADwB;OAAnB,CAAP;KA3FF,MAgGO;;;;UAIDgN,iBAAiB,EAArB;;iCACSC,GALJ;YAMCrO,QAAQ7B,OAAOoB,OAAP,CAAe8O,GAAf,CAAZ;YACIZ,SAAS,EAAb;YACIC,SAAS1N,MAAMO,MAAnB;YACIqB,UAAU,CAAC5B,MAAMjD,IAAP,CAAd;YAEE,OAAOoB,OAAOyB,UAAP,CAAkBI,MAAMjD,IAAxB,EAA8BsD,MAA9B,CAAqC1B,MAArC,GAA8C,CAA9C,CAAP,KAA4D,QAD9D,EAEE;eACK,IAAIK,KAAI,CAAb,EAAgBA,KAAI0O,OAAO5P,MAA3B,EAAmCkB,IAAnC,EAAwC;gBAEpC4C,QAAQ+L,QAAR,CAAiB3N,MAAMjD,IAAvB,KACAoB,OAAOyP,QAAP,CAAgBD,QAAhB,CAAyB3N,MAAMjD,IAA/B,CAFF,EAGE;qBACOkC,IAAP,CAAYd,OAAOyB,UAAP,CAAkBI,MAAMjD,IAAxB,EAA8BsD,MAA9B,CAAqClB,MAArC,CAA4CuO,OAAO1O,EAAP,CAA5C,CAAZ;aAJF,MAKO,IAAIb,OAAOyB,UAAP,CAAkBI,MAAMjD,IAAxB,EAA8BsD,MAA9B,OAA2C,CAA/C,EAAkD;qBAChDwN,OAAP,CACE1P,OAAOyB,UAAP,CAAkBI,MAAMjD,IAAxB,EAA8BsD,MAA9B,CAAqClB,MAArC,CAA4CuO,OAAO1O,EAAP,CAA5C,CADF;;;kBAKIC,IAAR,CAAawO,MAAb;eACK,IAAIK,OAAK,CAAd,EAAiBA,OAAKrO,QAAQ3B,MAA9B,EAAsCgQ,MAAtC,EAA4C;gBACtCrO,QAAQqO,IAAR,EAAYhQ,MAAZ,KAAuB,CAA3B,EAA8B;sBACpBgQ,IAAR,IAAc,CAAC,CAAD,EAAI,CAAJ,CAAd;;;SAlBN,MAqBO;iBACE9N,MAAMjD,IAAb,IAAqBiD,MAAMO,MAA3B;cACIwN,YAAW5P,OAAOyB,UAAP,CAAkBI,MAAMjD,IAAxB,EAA8BsD,MAA9B,CAAqCzB,KAArC,EAAf;cACIoP,aAAY7P,OAAOyB,UAAP,CAAkBI,MAAMjD,IAAxB,EAA8BsD,MAA9B,CAAqC1B,MAArC,EAAhB;eACK,IAAI4G,KAAI,CAAb,EAAgBA,KAAIwI,UAASjQ,MAA7B,EAAqCyH,IAArC,EAA0C;gBAEtCwI,UAASxI,EAAT,KAAemI,OAAO,CAAP,CAAf,IACAK,UAASxI,EAAT,KAAemI,OAAO,CAAP,CADf,IAEA9L,QAAQ+L,QAAR,CAAiB3N,MAAMjD,IAAvB,CAFA,IAGAoB,OAAOyP,QAAP,CAAgBD,QAAhB,CAAyB3N,MAAMjD,IAA/B,CAJF,EAKE;qBACOkC,IAAP,CAAY8O,UAASxI,EAAT,CAAZ;aANF,MAOO,IAAIwI,UAASxI,EAAT,KAAemI,OAAO,CAAP,CAAf,IAA4BK,UAASxI,EAAT,KAAemI,OAAO,CAAP,CAA/C,EAA0D;qBACxDG,OAAP,CAAeE,UAASxI,EAAT,CAAf;;;kBAGItG,IAAR,CAAawO,MAAb;eACK,IAAIK,OAAK,CAAd,EAAiBA,OAAKrO,QAAQ3B,MAA9B,EAAsCgQ,MAAtC,EAA4C;gBACtCrO,QAAQqO,IAAR,EAAYhQ,MAAZ,KAAuB,CAA3B,EAA8B;sBACpBgQ,IAAR,IAAc,CAAC,CAAD,EAAI,CAAJ,CAAd;;;;YAIF/L,SAAS;gBACL,cAAShD,CAAT,EAAY4C,CAAZ,EAAeP,SAAf,EAA0B;gBAC1B6M,WAAWlP,EAAE4C,CAAF,CAAf;gBACIuM,gBAAgB/P,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CACjB1B,MADiB,GAEjB4F,OAFiB,CAET0J,QAFS,CAApB;gBAGIE,qBAAqBhQ,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BzB,KAA5B,GACvBsP,aADuB,CAAzB;mBAIEC,sBAAsBb,OAAO3L,CAAP,EAAU,CAAV,CAAtB,IACAwM,sBAAsBb,OAAO3L,CAAP,EAAU,CAAV,CAFxB;WATS;kBAcH,gBAAS5C,CAAT,EAAY4C,CAAZ,EAAeP,SAAf,EAA0B;mBACzB3B,QAAQ4O,GAAR,EAAa,CAAb,KAAmBtP,EAAE4C,CAAF,CAAnB,IAA2B5C,EAAE4C,CAAF,KAAQlC,QAAQ4O,GAAR,EAAa,CAAb,CAA1C;WAfS;kBAiBH,gBAAStP,CAAT,EAAY4C,CAAZ,EAAeP,SAAf,EAA0B;gBAC5B6M,WAAWlP,EAAE4C,CAAF,CAAf;gBACIuM,gBAAgB/P,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CACjB1B,MADiB,GAEjB4F,OAFiB,CAET0J,QAFS,CAApB;gBAGIE,qBAAqBhQ,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BzB,KAA5B,GACvBsP,aADuB,CAAzB;mBAIEC,sBAAsBb,OAAO3L,CAAP,EAAU,CAAV,CAAtB,IACAwM,sBAAsBb,OAAO3L,CAAP,EAAU,CAAV,CAFxB;;SAzBJ;;;;;YAmCI2M,WAAWnQ,OAAOpB,IAAP,CAAY8E,MAAZ,CAAmB;iBAChCD,QAAQM,KAAR,CAAc,UAACP,CAAD,EAAIP,SAAJ;mBACZW,OAAO5D,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBL,IAA5B,EAAkCvC,CAAlC,EAAqC4C,CAArC,EAAwCP,SAAxC,CADY;WAAd,CADgC;SAAnB,CAAf;aAKK,IAAImN,IAAI,CAAb,EAAgBA,IAAID,SAASxQ,MAA7B,EAAqCyQ,GAArC,EAA0C;yBACzBtP,IAAf,CAAoBqP,SAASC,CAAT,CAApB;;kBAEQ,EAAV;iBACS,EAAT;;;WA7FG,IAAIF,MAAM,CAAf,EAAkBA,MAAMlQ,OAAOoB,OAAP,CAAezB,MAAvC,EAA+CuQ,KAA/C,EAAsD;cAA7CA,GAA6C;;aA+F/CD,cAAP;;GA1Ma;CAAjB;;ACFA,IAAM/L,iBAAiB,SAAjBA,cAAiB,CAACZ,UAAD,EAAatD,MAAb,EAAqBmB,EAArB;SAA4B,YAAsB;QAArB2C,SAAqB,uEAAT,IAAS;;QACnEA,cAAc,IAAlB,EAAwB;aACfR,WAAWQ,SAAlB;;;gBAGUuM,OAAOvM,SAAP,EAAkBwM,WAAlB,EAAZ;QACIxM,cAAc,KAAd,IAAuBA,cAAc,IAAzC,EAA+C;YACvC,IAAIG,KAAJ,CAAU,uBAAuBH,SAAjC,CAAN;;;eAGSA,SAAX,GAAuBA,SAAvB;WACOZ,OAAP,GAAiBI,WAAWiN,WAAX,GAAyBlN,QAAzB,EAAjB;OACGN,aAAH;WACO5B,EAAP;GAbqB;CAAvB;;AAgBA,IAAMqP,YAAY,SAAZA,SAAY,CAAClN,UAAD,EAAatD,MAAb,EAAqBmB,EAArB;SAA4B,YAAiB;QAAhBsP,IAAgB,uEAAT,IAAS;;QACzDA,SAAS,IAAb,EAAmB;aACVnN,WAAWmN,IAAlB;;;QAGEtP,GAAGuP,UAAH,GAAgBtK,OAAhB,CAAwBqK,IAAxB,MAAkC,CAAC,CAAvC,EAA0C;YAClC,IAAIxM,KAAJ,CAAU,2CAA2CwM,IAArD,CAAN;;;;;QAKEA,SAASnN,WAAWmN,IAAxB,EAA8B;;;UAGxBnN,WAAWmN,IAAX,KAAoB,MAAxB,EAAgC;WAC3BzN,UAAH;;;;iBAIS8C,KAAX,CAAiBxC,WAAWmN,IAA5B,EAAkC9K,SAAlC,CAA4CxE,EAA5C;;iBAEWsP,IAAX,GAAkBA,IAAlB;iBACW3K,KAAX,CAAiBxC,WAAWmN,IAA5B,EAAkCnL,OAAlC;UACImL,SAAS,MAAb,EAAqB;eACZtP,GAAG+C,cAAV;OADF,MAEO;WACFA,cAAH,GAAoBA,eAAeZ,UAAf,EAA2BtD,MAA3B,EAAmCmB,EAAnC,CAApB;;;;WAIGA,EAAP;GA9BgB;CAAlB;;AChBA;;;;;;;AAOA,IAAMwP,kBAAkB,SAAlBA,eAAkB;SAAU;WAChC3Q,OAAOyB,UAAP,CAAkBb,CAAlB,EAAqBgQ,KAArB,GAA6B5Q,OAAOyB,UAAP,CAAkBb,CAAlB,EAAqBgQ,KAAlD,GAA0DhQ,CAD1B;GAAV;CAAxB;;ACLA,IAAMiQ,uBAAuB,SAAvBA,oBAAuB,CAAC7Q,MAAD,EAASmB,EAAT,EAAaqD,IAAb;SAC3B,UAASvB,SAAT,EAAoB;OACf6N,IAAH,CAAQ7N,SAAR;OACGD,UAAH,CAAcC,SAAd;WACO,KAAK8N,aAAZ,EACGC,UADH,GAEGC,QAFH,CAEYjR,OAAOkR,aAFnB,EAGGtO,IAHH,CAGQ4B,KAAKjE,KAAL,CAAWP,OAAOyB,UAAP,CAAkBwB,SAAlB,EAA6Bf,MAAxC,CAHR;OAIGrD,MAAH;GARyB;CAA7B;;ACAA,IAAMsS,eAAe,SAAfA,YAAe,CAACnR,MAAD,EAASmB,EAAT,EAAgB;MAC/B,CAACnB,OAAOmR,YAAZ,EAA0B;;MAEtBC,QAAQhO,MAAMiO,MAAlB;UACQD,QAAQ,CAAR,GAAY,CAAC,CAAb,GAAiBA,KAAzB;UACQA,QAAQ,CAAR,GAAY,CAAZ,GAAgBA,KAAxB;;SAEOE,sBAAP,IAAiCF,KAAjC;KACG3H,GAAH,CACGlH,SADH,CACa,YADb,EAEGkD,IAFH,CAGI,WAHJ,EAII,4BAA4BzF,OAAOsR,sBAAnC,GAA4D,GAJhE;QAMMC,cAAN;CAdF;;;;ACIA,IAAMC,aAAa,SAAbA,UAAa,CAACxR,MAAD,EAASmB,EAAT,EAAasQ,QAAb,EAAuBjN,IAAvB,EAA6BkN,KAA7B;SAAuC,YAErD;QADHR,aACG,uEADa,IACb;;QACCA,kBAAkB,IAAtB,EAA4B;sBACVlR,OAAOkR,aAAvB;;;QAGIS,SAASxQ,GAAGsI,GAAH,CACZlH,SADY,CACF,YADE,EAEZ3D,IAFY,CAEPuC,GAAG2J,uBAAH,EAFO,CAAf;;WAKG5E,KADH,GAEGV,MAFH,CAEU,OAFV,EAGGC,IAHH,CAGQ,OAHR,EAGiB,WAHjB,EAIGA,IAJH,CAIQ,WAJR,EAIqB;aAAK,eAAegM,SAASjO,CAAT,CAAf,GAA6B,GAAlC;KAJrB,EAKGkC,KALH,CAKS,SALT,EAKoB,CALpB,EAMGF,MANH,CAMU,OANV,EAOGC,IAPH,CAOQ,OAPR,EAOiB,MAPjB,EAQGA,IARH,CAQQ,WARR,EAQqB,gBARrB,EASGjD,IATH,CASQ,UAAS5B,CAAT,EAAY;UACVgR,cAAcnP,OAAO,IAAP,EAAaG,IAAb,CAClBzB,GAAG0Q,eAAH,CAAmBrN,IAAnB,EAAyBxE,OAAOyB,UAAP,CAAkBb,CAAlB,CAAzB,CADkB,CAApB;;kBAKG2B,SADH,CACa,MADb,EAEGmD,KAFH,CAES,MAFT,EAEiB,MAFjB,EAGGA,KAHH,CAGS,QAHT,EAGmB,MAHnB,EAIGA,KAJH,CAIS,iBAJT,EAI4B,YAJ5B;;kBAOGnD,SADH,CACa,MADb,EAEGmD,KAFH,CAES,MAFT,EAEiB,MAFjB,EAGGA,KAHH,CAGS,QAHT,EAGmB,MAHnB,EAIGA,KAJH,CAIS,iBAJT,EAI4B,YAJ5B;KApBJ,EA0BGF,MA1BH,CA0BU,UA1BV,EA2BGC,IA3BH,CA2BQ,aA3BR,EA2BuB,QA3BvB,EA4BGA,IA5BH,CA4BQ,OA5BR,EA4BiB,OA5BjB,EA6BGA,IA7BH,CA6BQ,GA7BR,EA6Ba,CA7Bb,EA8BGA,IA9BH,CA8BQ,GA9BR,EA8Ba,CA9Bb,EA+BGA,IA/BH,CAgCI,WAhCJ,EAiCI,4BAA4BzF,OAAOsR,sBAAnC,GAA4D,GAjChE,EAmCGQ,IAnCH,CAmCQnB,gBAAgB3Q,MAAhB,CAnCR,EAoCGkF,EApCH,CAoCM,UApCN,EAoCkB2L,qBAAqB7Q,MAArB,EAA6BmB,EAA7B,EAAiCqD,IAAjC,CApClB,EAqCGU,EArCH,CAqCM,OArCN,EAqCeiM,aAAanR,MAAb,EAAqBmB,EAArB,CArCf;;;WAwCOsE,IAAP,CAAY,SAAZ,EAAuB,CAAvB;WAEGhD,MADH,CACU,OADV,EAEGuO,UAFH,GAGGC,QAHH,CAGYC,aAHZ,EAIG1O,IAJH,CAIQ,UAAS5B,CAAT,EAAY;aACT,IAAP,EAAagC,IAAb,CAAkBzB,GAAG0Q,eAAH,CAAmBrN,IAAnB,EAAyBxE,OAAOyB,UAAP,CAAkBb,CAAlB,CAAzB,CAAlB;KALJ;WAQG6B,MADH,CACU,QADV,EAEGuO,UAFH,GAGGC,QAHH,CAGYC,aAHZ,EAIGY,IAJH,CAIQnB,gBAAgB3Q,MAAhB,CAJR,EAKGyF,IALH,CAMI,WANJ,EAOI,4BAA4BzF,OAAOsR,sBAAnC,GAA4D,GAPhE;;;WAWO/K,IAAP,GAAcX,MAAd;;QAEMtD,IAAInB,GAAGsI,GAAH,CAAOlH,SAAP,CAAiB,YAAjB,CAAV;MACEyO,UAAF,GACGC,QADH,CACYC,aADZ,EAEGzL,IAFH,CAEQ,WAFR,EAEqB;aAAK,eAAegM,SAASjO,CAAT,CAAf,GAA6B,GAAlC;KAFrB,EAGGkC,KAHH,CAGS,SAHT,EAGoB,CAHpB;;OAKG+D,GAAH,CACGlH,SADH,CACa,OADb,EAEGyO,UAFH,GAGGC,QAHH,CAGYC,aAHZ,EAIG1O,IAJH,CAIQ,UAAS5B,CAAT,EAAY;aACT,IAAP,EAAagC,IAAb,CAAkBzB,GAAG0Q,eAAH,CAAmBrN,IAAnB,EAAyBxE,OAAOyB,UAAP,CAAkBb,CAAlB,CAAzB,CAAlB;KALJ;;QAQI8Q,MAAMK,SAAV,EAAqB5Q,GAAG4Q,SAAH;QACjBL,MAAMM,WAAV,EAAuB7Q,GAAG6Q,WAAH;QACnB7Q,GAAGqP,SAAH,OAAmB,MAAvB,EAA+B;UACvBC,OAAOtP,GAAGqP,SAAH,EAAb;SACGA,SAAH,CAAa,MAAb;SACGA,SAAH,CAAaC,IAAb;;WAEKhJ,OAAP;GA7FiB;CAAnB;;ACNA;AACA,IAAMwK,WAAW,SAAXA,QAAW,SAAU;MACnBxH,IAAIzK,OAAO0K,MAAP,GAAgB1K,OAAOE,MAAP,CAAcsK,GAA9B,GAAoCxK,OAAOE,MAAP,CAAcyK,MAA5D;;MAEI3K,OAAOkS,kBAAP,IAA6B,QAAjC,EAA2C;WAClC,CACLzH,IACE,CADF,GAEEzK,OAAOmS,yBAAP,CAAiCxH,MAFnC,GAGE3K,OAAOmS,yBAAP,CAAiC3H,GAJ9B,EAKL,CALK,CAAP;GADF,MAQO,IAAIxK,OAAOkS,kBAAP,IAA6B,KAAjC,EAAwC;WACtC,CACLzH,IAAI,CADC,EAEL,IACEzK,OAAOmS,yBAAP,CAAiCxH,MADnC,GAEE3K,OAAOmS,yBAAP,CAAiC3H,GAJ9B,CAAP;;SAOK,CAACC,IAAI,CAAL,EAAQ,CAAR,CAAP;CAnBF;;ACMA,IAAM2H,YAAY,SAAZA,SAAY,CAACpS,MAAD,EAASmB,EAAT,EAAa0J,MAAb,EAAqBwH,GAArB;SAChB,YAAW;;QAEHC,gBAAgB;YACd,cAAShL,CAAT,EAAY;YACZiL,UAAUnQ,OAAOpC,OAAOpB,IAAd,EAAoB;iBAAMgC,EAAE0G,CAAF,IAAO1G,EAAE0G,CAAF,EAAKkL,OAAL,EAAP,GAAwB,IAA9B;SAApB,CAAd;;YAEID,QAAQ,CAAR,MAAeA,QAAQ,CAAR,CAAnB,EAA+B;iBACtBE,aACJjS,MADI,CACG+R,OADH,EAEJ9R,KAFI,CAEEwR,SAASjS,MAAT,CAFF,CAAP;;YAIEA,OAAOyP,QAAP,CAAgBD,QAAhB,CAAyBlI,CAAzB,CAAJ,EAAiC;oBACrBiL,QAAQnT,GAAR,CAAY;mBAAOsT,SAAShD,OAAT,CAAiBiD,GAAjB,CAAP;WAAZ,CAAV;;eAEKC,YACJpS,MADI,CACG+R,OADH,EAEJ9R,KAFI,CAEEwR,SAASjS,MAAT,CAFF,CAAP;OAZkB;cAgBZ,gBAASsH,CAAT,EAAY;YACdiL,UAAUnQ,OAAOpC,OAAOpB,IAAd,EAAoB;iBAAK,CAACgC,EAAE0G,CAAF,CAAN;SAApB,CAAd;;YAEIiL,QAAQ,CAAR,MAAeA,QAAQ,CAAR,CAAnB,EAA+B;iBACtBE,aACJjS,MADI,CACG+R,OADH,EAEJ9R,KAFI,CAEEwR,SAASjS,MAAT,CAFF,CAAP;;YAIEA,OAAOyP,QAAP,CAAgBD,QAAhB,CAAyBlI,CAAzB,CAAJ,EAAiC;oBACrBiL,QAAQnT,GAAR,CAAY;mBAAOsT,SAAShD,OAAT,CAAiBiD,GAAjB,CAAP;WAAZ,CAAV;;eAEKE,cACJrS,MADI,CACG+R,OADH,EAEJ9R,KAFI,CAEEwR,SAASjS,MAAT,CAFF,CAAP;OA3BkB;cA+BZ,gBAASsH,CAAT,EAAY;YACdwL,SAAS,EAAb;YACEtS,SAAS,EADX;;;eAIO5B,IAAP,CAAYQ,GAAZ,CAAgB,aAAK;cACfoE,EAAE8D,CAAF,MAASxF,SAAT,IAAsB9B,OAAOkS,kBAAP,KAA8B,WAAxD,EAAqE;mBAC5D,IAAP,CADmE;;cAGjEY,OAAOtP,EAAE8D,CAAF,CAAP,MAAiBxF,SAArB,EAAgC;mBACvB0B,EAAE8D,CAAF,CAAP,IAAe,CAAf;WADF,MAEO;mBACE9D,EAAE8D,CAAF,CAAP,IAAewL,OAAOtP,EAAE8D,CAAF,CAAP,IAAe,CAA9B;;SAPJ;YAUItH,OAAOyP,QAAP,CAAgBD,QAAhB,CAAyBlI,CAAzB,CAAJ,EAAiC;mBACtB/F,OAAO6H,mBAAP,CAA2B0J,MAA3B,EAAmCC,IAAnC,EAAT;SADF,MAEO;cACDC,UAAUzR,OAAO6H,mBAAP,CAA2B0J,MAA3B,EAAmCC,IAAnC,EAAd;eACK,IAAIlS,IAAI,CAAb,EAAgBA,IAAIU,OAAO6H,mBAAP,CAA2B0J,MAA3B,EAAmCnT,MAAvD,EAA+DkB,GAA/D,EAAoE;mBAC3DC,IAAP,CAAYkS,QAAQC,GAAR,EAAZ;;;;;YAKAC,mBAAmB,EAAvB;YACI1S,OAAOb,MAAP,KAAkB,CAAtB,EAAyB;;mBAEd,CAAC,GAAD,EAAMa,OAAO,CAAP,CAAN,EAAiB,GAAjB,CAAT;;YAEE2S,QAAQlB,SAASjS,MAAT,EAAiB,CAAjB,KAAuBQ,OAAOb,MAAP,GAAgB,CAAvC,CAAZ;aACK,IAAIyH,IAAI,CAAb,EAAgBA,IAAI5G,OAAOb,MAA3B,EAAmCyH,GAAnC,EAAwC;cAClC8L,iBAAiBvT,MAAjB,KAA4B,CAAhC,EAAmC;6BAChBmB,IAAjB,CAAsB,CAAtB;;;2BAGeA,IAAjB,CAAsBoS,iBAAiB9L,IAAI,CAArB,IAA0B+L,KAAhD;;eAEKC,eACJ5S,MADI,CACGA,MADH,EAEJC,KAFI,CAEEyS,gBAFF,CAAP;;KArEJ;WA0EO1R,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+Bd,OAA/B,CAAuC,UAAS2G,CAAT,EAAY;UAE/CtH,OAAOyB,UAAP,CAAkB6F,CAAlB,EAAqBpF,MAArB,KAAgCJ,SAAhC,IACA9B,OAAOyB,UAAP,CAAkB6F,CAAlB,EAAqBpF,MAArB,KAAgC,IAFlC,EAGE;eACOT,UAAP,CAAkB6F,CAAlB,EAAqBpF,MAArB,GAA8BoQ,cAActS,OAAOyB,UAAP,CAAkB6F,CAAlB,EAAqBnE,IAAnC,EAC5BmE,CAD4B,CAA9B;;KALJ;;;;WAaO7G,KAAP,CAAa,CAAC,CAAD,EAAIV,EAAEC,MAAF,CAAJ,CAAb,EAA6BqT,OAA7B,CAAqC,GAArC;;;QAGMzG,mBAAmBC,OAAOD,gBAAP,IAA2B,CAApD;;;OAGGtM,SAAH,CACGiC,SADH,CACa,QADb,EAEGmD,KAFH,CAES,YAFT,EAEuB1F,OAAOE,MAAP,CAAcsK,GAAd,GAAoB,IAF3C,EAGG9E,KAHH,CAGS,aAHT,EAGwB1F,OAAOE,MAAP,CAAcE,IAAd,GAAqB,IAH7C,EAIGsF,KAJH,CAIS,OAJT,EAIkB3F,EAAEC,MAAF,IAAY,CAAZ,GAAgB,IAJlC,EAKG0F,KALH,CAKS,QALT,EAKmB+E,EAAEzK,MAAF,IAAY,CAAZ,GAAgB,IALnC,EAMGyF,IANH,CAMQ,OANR,EAMiB,CAAC1F,EAAEC,MAAF,IAAY,CAAb,IAAkB4M,gBANnC,EAOGnH,IAPH,CAOQ,QAPR,EAOkB,CAACgF,EAAEzK,MAAF,IAAY,CAAb,IAAkB4M,gBAPpC;;QASIM,UAAJ,CAAeoG,WAAf,GAA6BtT,OAAOuT,KAApC;QACIrG,UAAJ,CAAesG,SAAf,GAA2BxT,OAAOwT,SAAlC;QACItG,UAAJ,CAAeuG,wBAAf,GAA0CzT,OAAO0T,SAAjD;QACIxG,UAAJ,CAAeyG,WAAf,GAA6B3T,OAAO4T,KAApC;QACI1G,UAAJ,CAAe3M,KAAf,CAAqBqM,gBAArB,EAAuCA,gBAAvC;QACI1J,OAAJ,CAAYoQ,WAAZ,GAA0BtT,OAAO6T,YAAjC;QACI3Q,OAAJ,CAAYsQ,SAAZ,GAAwBxT,OAAOwT,SAA/B;QACItQ,OAAJ,CAAYuQ,wBAAZ,GAAuCzT,OAAO0T,SAA9C;QACIxQ,OAAJ,CAAYyQ,WAAZ,GAA0B3T,OAAO4T,KAAjC;QACI1Q,OAAJ,CAAY3C,KAAZ,CAAkBqM,gBAAlB,EAAoCA,gBAApC;QACIkH,SAAJ,CAAcN,SAAd,GAA0BxT,OAAO+T,oBAAjC;QACID,SAAJ,CAAcvT,KAAd,CAAoBqM,gBAApB,EAAsCA,gBAAtC;QACIoH,MAAJ,CAAWR,SAAX,GAAuBxT,OAAOiU,eAA9B;QACID,MAAJ,CAAWE,WAAX,GAAyBlU,OAAOmU,iBAAhC;QACIH,MAAJ,CAAWI,UAAX,GAAwBpU,OAAOqU,gBAA/B;QACIL,MAAJ,CAAWzT,KAAX,CAAiBqM,gBAAjB,EAAmCA,gBAAnC;;WAEO,IAAP;GA1Hc;CAAlB;;ACJA,IAAMmF,YAAY,SAAZA,SAAY,CAAC/R,MAAD,EAASmB,EAAT,EAAauQ,KAAb;SAChB,YAAW;QACL,CAACvQ,GAAGmB,CAAH,EAAL,EAAa;SACRiD,UAAH;;;QAGIjD,IAAInB,GAAGmB,CAAH,EAAV;;;MAGEkD,MAAF,CAAS,OAAT,EACGC,IADH,CACQ,OADR,EACiB,OADjB,EAEGjD,IAFH,CAEQ,UAAS5B,CAAT,EAAY;UACZZ,OAAOyB,UAAP,CAAkBb,CAAlB,MAAyBkB,SAA7B,EAAwC;eAC/BL,UAAP,CAAkBb,CAAlB,EAAqB,OAArB,IAAgCgE,OAAOnC,OAAO,IAAP,CAAP,EAAqBL,MAArB,CAA4B,CAC1D,CAAC,CAAC,EAAF,EAAM,CAAN,CAD0D,EAE1D,CAAC,EAAD,EAAKpC,OAAOyB,UAAP,CAAkBb,CAAlB,EAAqBsB,MAArB,CAA4BzB,KAA5B,GAAoC,CAApC,CAAL,CAF0D,CAA5B,CAAhC;eAIO,IAAP,EAAamC,IAAb,CACE5C,OAAOyB,UAAP,CAAkBb,CAAlB,EAAqB,OAArB,EACGsE,EADH,CACM,OADN,EACe,YAAW;cAClB9B,MAAM+B,WAAN,KAAsB,IAAtB,IAA8B,CAAC/B,MAAM+B,WAAN,CAAkBmP,OAArD,EAA8D;eACzDtR,UAAH;;SAHN,EAMGkC,EANH,CAMM,OANN,EAMe,YAAW;cAClB,CAAC9B,MAAM+B,WAAN,CAAkBmP,OAAvB,EAAgC;eAC3BzS,KAAH;;SARN,EAWGqD,EAXH,CAWM,KAXN,EAWa,YAAW;;;;;cAKhB9B,MAAM+B,WAAN,CAAkBmP,OAAtB,EAA+B;gBACzBC,OAAO9R,OAAO,IAAP,EACRA,MADQ,CACD,YADC,EAER2M,KAFQ,GAEA,CAFA,EAEGoF,SAFd;mBAGOD,KAAKjH,OAAL,CACL,mBADK,EAEL,2BACE,aADF,GAEEtN,OAAOoB,OAAP,CAAezB,MAFjB,GAGE,GALG,CAAP;gBAOI8U,MAAMhS,OAAO,IAAP,EAAa2M,KAAb,GAAqB,CAArB,EAAwBC,QAAlC;gBACIxN,QAAQ;kBACN7B,OAAOoB,OAAP,CAAezB,MADT;sBAEFoC,eAAe,IAAf,CAFE;oBAGJwS,IAHI;oBAIJE;aAJR;mBAMOrT,OAAP,CAAeN,IAAf,CAAoBe,KAApB;mBACOY,OAAO,IAAP,EAAa2M,KAAb,GAAqB,CAArB,EAAwBsF,UAA/B,EACGjS,MADH,CACU,OADV,EAEG2M,KAFH,GAEW,CAFX,EAEcoF,SAFd,IAE2BD,IAF3B;eAGG1S,KAAH;mBACOJ,UAAP,CAAkBb,CAAlB,EAAqBiB,KAArB,CAA2BgB,IAA3B,CAAgCJ,OAAO,IAAP,EAAa,IAAb,CAAhC;mBACO,IAAP,EACGA,MADH,CACU,YADV,EAEGgD,IAFH,CAEQ,OAFR,EAEiB,cAFjB;eAGGsM,SAAH;WA3BF,MA4BO;eACFlQ,KAAH;;SA7CN,CADF;eAkDO,IAAP,EAAaqD,EAAb,CAAgB,UAAhB,EAA4B,YAAW;aAClClC,UAAH,CAAcpC,CAAd;SADF;;KA1DN;;UAgEMmR,SAAN,GAAkB,IAAlB;WACO,IAAP;GA1Ec;CAAlB;;ACDA,IAAM4C,cAAc,SAAdA,WAAc,CAAC3U,MAAD,EAASmB,EAAT;SAClB,UAASyT,MAAT,EAAiBzR,IAAjB,EAAuB;QACf0R,IAAI1R,QAAQ,QAAlB;QACI,OAAOyR,MAAP,KAAkB,WAAtB,EAAmC;eACxB,IAAT;;;;QAIE,CAACrT,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+B9B,MAApC,EAA4C;SACvCmV,gBAAH;;OAEC1C,SAAH;;;QAGM2C,SAASxT,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+BiC,MAA/B,CACb;aAAK1D,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBL,IAArB,IAA6B0R,CAAlC;KADa,CAAf;;QAIID,MAAJ,EAAY;UACNrC,UAAUnQ,OACZ2S,OACG3V,GADH,CACO;eAAKY,OAAOyB,UAAP,CAAkBb,CAAlB,EAAqBsB,MAArB,CAA4B1B,MAA5B,EAAL;OADP,EAEGkB,MAFH,CAEU,UAACE,GAAD,EAAMD,GAAN;eAAcC,IAAIrC,MAAJ,CAAWoC,GAAX,CAAd;OAFV,CADY,CAAd;;aAMOhB,OAAP,CAAe,aAAK;eACXc,UAAP,CAAkBb,CAAlB,EAAqBsB,MAArB,CAA4B1B,MAA5B,CAAmC+R,OAAnC;OADF;KAPF,MAUO;aACE5R,OAAP,CAAe,aAAK;eACXc,UAAP,CAAkBb,CAAlB,EAAqBsB,MAArB,CAA4B1B,MAA5B,CAAmC4B,OAAOpC,OAAOpB,IAAd,EAAoB;iBAAK,CAACgC,EAAE0G,CAAF,CAAN;SAApB,CAAnC;OADF;;;;QAMEtH,OAAOgV,eAAP,KAA2B,IAA/B,EAAqC;SAChCA,eAAH,CAAmBhV,OAAOgV,eAA1B;;;WAGK,IAAP;GAvCgB;CAApB;;ACFA,IAAMC,uBAAuB,SAAvBA,oBAAuB,CAACxT,UAAD,EAAagQ,QAAb;SAA0B;WACrDlQ,OAAOC,IAAP,CAAYC,UAAZ,EAAwBrC,GAAxB,CAA4B,aAAK;UACzBiJ,IAAIoJ,SAAS7Q,CAAT,CAAV;UACM0H,IAAI7G,WAAWb,CAAX,EAAcsB,MAAd,CAAqBgT,IAAItU,CAAJ,CAArB,CAAV;aACO,CAACyH,CAAD,EAAIC,CAAJ,CAAP;KAHF,CADqD;GAA1B;CAA7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA,IAAM6M,UAAU,SAAVA,OAAU;SAAKvU,MAAM,IAAN,IAAcA,MAAMkB,SAAzB;CAAhB;;AAEA,IAAMsT,yBAAyB,SAAzBA,sBAAyB,CAACpV,MAAD,EAASmB,EAAT;SAC7B,UAAS6H,IAAT,EAAe;QACPqM,QAAQlU,GAAGmU,oBAAH,CAAwBtV,OAAOpB,IAA/B,CAAd;WACOoK,OAAOA,IAAP,GAAczH,OAAOC,IAAP,CAAY6T,KAAZ,CAArB;;WAEOrM,KAAKtH,MAAL,CAAY,UAACC,GAAD,EAAMC,GAAN,EAAWf,CAAX,EAAiB;UAC5ByG,IAAItH,OAAOyB,UAAP,CAAkBG,GAAlB,IAAyB5B,OAAOyB,UAAP,CAAkBG,GAAlB,CAAzB,GAAkD,EAA5D;UACIA,GAAJ,iBACK0F,CADL;gBAEU6N,QAAQ7N,EAAEiO,MAAV,IAAoBjO,EAAEiO,MAAtB,GAA+B,MAFzC;eAGSJ,QAAQ7N,EAAEkO,KAAV,IAAmBlO,EAAEkO,KAArB,GAA6B,CAHtC;uBAIiBL,QAAQ7N,EAAEmO,aAAV,IAA2BnO,EAAEmO,aAA7B,GAA6C,CAJ9D;uBAKiBN,QAAQ7N,EAAEoO,aAAV,IAA2BpO,EAAEoO,aAA7B,GAA6C,CAL9D;qBAMeP,QAAQ7N,EAAEqO,WAAV,IAAyBrO,EAAEqO,WAA3B,GAAyC,CANxD;cAOQR,QAAQ7N,EAAEnE,IAAV,IAAkBmE,EAAEnE,IAApB,GAA2BkS,MAAMzT,GAAN,CAPnC;eAQSuT,QAAQ7N,EAAEsO,KAAV,IAAmBtO,EAAEsO,KAArB,GAA6B/U;;;aAG/Bc,GAAP;KAbK,EAcJ,EAdI,CAAP;GAL2B;CAA/B;;ACOA;;;;;;;;;;AAUA,IAAM4D,aAAa,SAAbA,UAAa,CAACvF,MAAD,EAASmB,EAAT,EAAa0J,MAAb,EAAqB6G,KAArB,EAA4BlN,IAA5B;SACjB,YAAW;QACLrD,GAAGmB,CAAH,OAAWR,SAAf,EAA0B;SACrB+T,UAAH;;;OAGCC,EAAH,GAAQ3U,GAAGsI,GAAH,CACLlH,SADK,CACK,YADL,EAEL3D,IAFK,CAEAuC,GAAG2J,uBAAH,EAFA,EAE8B,UAASlK,CAAT,EAAY;aACvCA,CAAP;KAHI,EAKLsF,KALK,GAMLV,MANK,CAME,OANF,EAOLC,IAPK,CAOA,OAPA,EAOS,WAPT,EAQLA,IARK,CAQA,WARA,EAQa,UAAS7E,CAAT,EAAY;aACtB,eAAeiK,OAAOjK,CAAP,CAAf,GAA2B,GAAlC;KATI,CAAR;;OAYGkV,EAAH,CACGtQ,MADH,CACU,OADV,EAEGC,IAFH,CAEQ,OAFR,EAEiB,MAFjB,EAGGA,IAHH,CAGQ,WAHR,EAGqB,gBAHrB,EAIGjD,IAJH,CAIQ,UAAS5B,CAAT,EAAY;UACZgR,cAAcnP,OAAO,IAAP,EAAaG,IAAb,CAChBzB,GAAG0Q,eAAH,CAAmBrN,IAAnB,EAAyBxE,OAAOyB,UAAP,CAAkBb,CAAlB,CAAzB,CADgB,CAAlB;;kBAKG2B,SADH,CACa,MADb,EAEGmD,KAFH,CAES,MAFT,EAEiB,MAFjB,EAGGA,KAHH,CAGS,QAHT,EAGmB,MAHnB,EAIGA,KAJH,CAIS,iBAJT,EAI4B,YAJ5B;;kBAOGnD,SADH,CACa,MADb,EAEGmD,KAFH,CAES,MAFT,EAEiB,MAFjB,EAGGA,KAHH,CAGS,QAHT,EAGmB,MAHnB,EAIGA,KAJH,CAIS,iBAJT,EAI4B,YAJ5B;KAfJ,EAsBGF,MAtBH,CAsBU,UAtBV,EAuBGC,IAvBH,CAuBQ,aAvBR,EAuBuB,QAvBvB,EAwBGA,IAxBH,CAwBQ,GAxBR,EAwBa,CAxBb,EAyBGA,IAzBH,CA0BI,WA1BJ,EA2BI,4BAA4BzF,OAAOsR,sBAAnC,GAA4D,GA3BhE,EA6BG7L,IA7BH,CA6BQ,GA7BR,EA6Ba,CA7Bb,EA8BGA,IA9BH,CA8BQ,OA9BR,EA8BiB,OA9BjB,EA+BGqM,IA/BH,CA+BQnB,gBAAgB3Q,MAAhB,CA/BR,EAgCGkF,EAhCH,CAgCM,UAhCN,EAgCkB2L,qBAAqB7Q,MAArB,EAA6BmB,EAA7B,EAAiCqD,IAAjC,CAhClB,EAiCGU,EAjCH,CAiCM,OAjCN,EAiCeiM,aAAanR,MAAb,EAAqBmB,EAArB,CAjCf;;QAmCInB,OAAOkS,kBAAP,KAA8B,KAAlC,EAAyC;SACpCzI,GAAH,CACGjE,MADH,CACU,MADV,EAEGC,IAFH,CAEQ,IAFR,EAEc,CAFd,EAGGA,IAHH,CAGQ,IAHR,EAGc,IAAIzF,OAAOmS,yBAAP,CAAiC3H,GAHnD,EAIG/E,IAJH,CAIQ,IAJR,EAIc1F,EAAEC,MAAF,CAJd,EAKGyF,IALH,CAKQ,IALR,EAKc,IAAIzF,OAAOmS,yBAAP,CAAiC3H,GALnD,EAMG/E,IANH,CAMQ,cANR,EAMwB,CANxB,EAOGA,IAPH,CAOQ,QAPR,EAOkB,MAPlB,EAQGA,IARH,CAQQ,MARR,EAQgB,MARhB,EASGA,IATH,CASQ,iBATR,EAS2B,YAT3B;KADF,MAWO,IAAIzF,OAAOkS,kBAAP,KAA8B,QAAlC,EAA4C;SAC9CzI,GAAH,CACGjE,MADH,CACU,MADV,EAEGC,IAFH,CAEQ,IAFR,EAEc,CAFd,EAGGA,IAHH,CAGQ,IAHR,EAGcgF,EAAEzK,MAAF,IAAY,CAAZ,GAAgBA,OAAOmS,yBAAP,CAAiCxH,MAH/D,EAIGlF,IAJH,CAIQ,IAJR,EAIc1F,EAAEC,MAAF,CAJd,EAKGyF,IALH,CAKQ,IALR,EAKcgF,EAAEzK,MAAF,IAAY,CAAZ,GAAgBA,OAAOmS,yBAAP,CAAiCxH,MAL/D,EAMGlF,IANH,CAMQ,cANR,EAMwB,CANxB,EAOGA,IAPH,CAOQ,QAPR,EAOkB,MAPlB,EAQGA,IARH,CAQQ,MARR,EAQgB,MARhB,EASGA,IATH,CASQ,iBATR,EAS2B,YAT3B;;;UAYIsQ,IAAN,GAAa,IAAb;WACO,IAAP;GA9Ee;CAAnB;;;;;ACfA,IAAMC,WAAW,SAAXA,QAAW,CAAChW,MAAD,EAASmB,EAAT,EAAasQ,QAAb;SAA0B,cAAM;QACzCwE,IAAIC,MAAM,GAAhB;QACM7D,MAAMlR,GAAGkR,GAAH,CAAO8D,IAAnB;QACMxK,aAAa,CAAnB;QACME,WAAW,IAAIpD,KAAKiD,EAA1B;QACIiI,WAAJ,GAAkBjL,IAAI,CAAC,IAAID,KAAK2N,GAAL,CAASpW,OAAOpB,IAAP,CAAYe,MAArB,EAA6B,IAAI,CAAjC,CAAL,EAA0C,CAA1C,CAAJ,CAAlB;WACOf,IAAP,CAAY+B,OAAZ,CAAoB,aAAK;cACfX,OAAOyB,UAAf,EAA2Bd,OAA3B,CAAmC,UAAC6C,CAAD,EAAI3C,CAAJ,EAAU;YACvCwV,SAAJ;YACIzK,GAAJ,CACE6F,SAASjO,CAAT,CADF,EAEExD,OAAOyB,UAAP,CAAkB+B,EAAEwK,GAApB,EAAyB9L,MAAzB,CAAgCtB,EAAE4C,CAAF,CAAhC,CAFF,EAGEyS,CAHF,EAIEtK,UAJF,EAKEE,QALF;YAOIyK,MAAJ;YACIC,IAAJ;OAVF;KADF;WAcO9O,OAAP;GApBe;CAAjB;;ACFA,IAAMoK,kBAAkB,SAAlBA,eAAkB,CAACrN,IAAD,EAAOvB,SAAP,EAAqB;MACvCuT,gBAAJ;;UAEQvT,UAAUsS,MAAlB;SACO,MAAL;gBACYkB,SAASxT,UAAUf,MAAnB,CAAV;;SAEG,OAAL;gBACYwU,UAAUzT,UAAUf,MAApB,CAAV;;SAEG,KAAL;gBACYyU,QAAQ1T,UAAUf,MAAlB,CAAV;;SAEG,QAAL;gBACY0U,WAAW3T,UAAUf,MAArB,CAAV;;;gBAGUuU,SAASxT,UAAUf,MAAnB,CAAV;;;;UAKDsT,KADH,CACSvS,UAAUuS,KADnB,EAEGqB,UAFH,CAEc5T,UAAU4T,UAFxB,EAGGC,aAHH,CAGiB7T,UAAUwS,aAH3B,EAIGsB,aAJH,CAIiB9T,UAAUyS,aAJ3B,EAKGC,WALH,CAKe1S,UAAU0S,WALzB,EAMGqB,UANH,CAMc/T,UAAU+T,UANxB;;SAQOR,OAAP;CA7BF;;ACGA;AACA,IAAMxE,cAAc,SAAdA,WAAc,CAAChS,MAAD,EAASmB,EAAT,EAAa0J,MAAb,EAAqB4G,QAArB,EAA+BwF,QAA/B,EAAyCvF,KAAzC;SAClB,YAAW;QACLvQ,GAAGmB,CAAH,OAAWR,SAAf,EAA0BX,GAAGoE,UAAH;QACpBjD,IAAInB,GAAGmB,CAAH,EAAV;;MAEEoD,KAAF,CAAQ,QAAR,EAAkB,MAAlB,EAA0B9C,IAA1B,CACEsH,OACGhF,EADH,CACM,OADN,EACe,UAAStE,CAAT,EAAY;eACdA,CAAT,IAAc,KAAKsW,UAAL,GAAkBrM,OAAOjK,CAAP,CAAhC;KAFJ,EAIGsE,EAJH,CAIM,MAJN,EAIc,UAAStE,CAAT,EAAY;eACbA,CAAT,IAAc6H,KAAKC,GAAL,CACZ3I,EAAEC,MAAF,CADY,EAEZyI,KAAKE,GAAL,CAAS,CAAT,EAAa,KAAKuO,UAAL,IAAmB9T,MAAM+T,EAAtC,CAFY,CAAd;SAIGC,cAAH;aACO5W,MAAP,CAAcW,GAAG2J,uBAAH,EAAd;SACGjM,MAAH;QACE4G,IAAF,CAAO,WAAP,EAAoB;eAAK,eAAegM,SAAS7Q,CAAT,CAAf,GAA6B,GAAlC;OAApB;KAZJ,EAcGsE,EAdH,CAcM,KAdN,EAca,UAAStE,CAAT,EAAY;aACd,KAAKsW,UAAZ;aACOD,SAASrW,CAAT,CAAP;aACO,IAAP,EACGoQ,UADH,GAEGvL,IAFH,CAEQ,WAFR,EAEqB,eAAeoF,OAAOjK,CAAP,CAAf,GAA2B,GAFhD;SAGG/B,MAAH;SACGwY,YAAH;KArBJ,CADF;UAyBMrF,WAAN,GAAoB,IAApB;WACO,IAAP;GA/BgB;CAApB;;ACNA;;AAEA,IAAMsF,SAAS,SAATA,MAAS,CAACtX,MAAD,EAASmB,EAAT,EAAauQ,KAAb,EAAoBtN,MAApB,EAA+B;SACrC,YAAW;;OAEb9D,SAAH,CACGmC,MADH,CACU,KADV,EAEGgD,IAFH,CAEQ,OAFR,EAEiBzF,OAAOC,KAFxB,EAGGwF,IAHH,CAGQ,QAHR,EAGkBzF,OAAO0K,MAHzB;OAIGjB,GAAH,CAAOhE,IAAP,CACE,WADF,EAEE,eAAezF,OAAOE,MAAP,CAAcE,IAA7B,GAAoC,GAApC,GAA0CJ,OAAOE,MAAP,CAAcsK,GAAxD,GAA8D,GAFhE;;;QAMIkH,MAAMK,SAAV,EAAqB5Q,GAAG6B,UAAH;;;OAGlBoP,SAAH;;;QAGIjR,GAAGmB,CAAH,EAAJ,EAAYnB,GAAGoE,UAAH;QACRmM,MAAMK,SAAV,EAAqB5Q,GAAG4Q,SAAH;QACjBL,MAAMM,WAAV,EAAuB7Q,GAAG6Q,WAAH;;WAEhBpP,IAAP,CAAY,QAAZ,EAAsB,IAAtB,EAA4B;aACnB5C,OAAOC,KADY;cAElBD,OAAO0K,MAFW;cAGlB1K,OAAOE;KAHjB;;WAMO,IAAP;GA5BF;CADF;;ACFA;;;AAGA,IAAMqX,UAAU,SAAVA,OAAU,CAACvX,MAAD,EAASmB,EAAT,EAAa0J,MAAb;SAAwB,mBAAW;QAC3C2M,WAAWrW,GAAG2J,uBAAH,GAA6B,CAA7B,CAAjB;;OAEG2M,uBAAH,CAA2BC,OAA3B;;;;QAIMC,YAAYH,aAAarW,GAAG2J,uBAAH,GAA6B,CAA7B,CAA/B;;QAEI6M,SAAJ,EAAe;aACNnX,MAAP,CAAcW,GAAG2J,uBAAH,EAAd;UACM8M,cAAc5X,OAAO4X,WAAP,CAAmBvY,KAAnB,CAAyB,CAAzB,CAApB;SACGwY,WAAH;;UAEM7D,SAAShU,OAAOgU,MAAP,CAAc3U,KAAd,CAAoB,CAApB,CAAf;SACGyY,MAAH;;UAEMxV,IAAInB,GAAGmB,CAAH,EAAV;QACE0O,UAAF,GACGC,QADH,CACY,IADZ,EAEGxL,IAFH,CAEQ,WAFR,EAEqB;eAAK,eAAeoF,OAAOjK,CAAP,CAAf,GAA2B,GAAhC;OAFrB;SAGG/B,MAAH;;;UAGI+Y,YAAYjY,MAAZ,KAAuB,CAA3B,EAA8B;WACzBmU,SAAH,CAAa8D,WAAb;;UAEE5D,OAAOrU,MAAP,KAAkB,CAAtB,EAAyB;WACpBoY,IAAH,CAAQ/D,MAAR;;;GA5BU;CAAhB;;ACHA,IAAMoD,iBAAiB,SAAjBA,cAAiB,CAACpX,MAAD,EAASyR,QAAT;SAAsB,YAAM;QAC3CuG,OAAOzW,OAAO0W,MAAP,CAAc,EAAd,EAAkBjY,OAAOyB,UAAzB,CAAb;QACMyW,qBAAqB3W,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+BsR,IAA/B,CACzB,UAACzH,CAAD,EAAIjF,CAAJ;aAAWoL,SAASnG,CAAT,IAAcmG,SAASpL,CAAT,CAAd,KAA8B,CAA9B,GAAkC,CAAlC,GAAsCoL,SAASnG,CAAT,IAAcmG,SAASpL,CAAT,CAA/D;KADyB,CAA3B;WAGO5E,UAAP,GAAoB,EAApB;uBACmBd,OAAnB,CAA2B,UAAC6C,CAAD,EAAI3C,CAAJ,EAAU;aAC5BY,UAAP,CAAkB+B,CAAlB,IAAuBwU,KAAKxU,CAAL,CAAvB;aACO/B,UAAP,CAAkB+B,CAAlB,EAAqBoS,KAArB,GAA6B/U,CAA7B;KAFF;GANqB;CAAvB;;ACAA,IAAM4W,0BAA0B,SAA1BA,uBAA0B;SAAU,mBAAW;QAC7CO,OAAOzW,OAAO0W,MAAP,CAAc,EAAd,EAAkBjY,OAAOyB,UAAzB,CAAb;QACMyW,qBAAqB3W,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+BsR,IAA/B,CAAoC,UAACzH,CAAD,EAAIjF,CAAJ,EAAU;UACjE8R,kBACJnY,OAAOyB,UAAP,CAAkB6J,CAAlB,EAAqBpJ,MAArB,CAA4BwV,QAAQpM,CAAR,CAA5B,IACAtL,OAAOyB,UAAP,CAAkB4E,CAAlB,EAAqBnE,MAArB,CAA4BwV,QAAQrR,CAAR,CAA5B,CAFF;;;;;aAOO8R,oBAAoB,CAApB,GAAwB7M,EAAE8M,aAAF,CAAgB/R,CAAhB,CAAxB,GAA6C8R,eAApD;KARyB,CAA3B;WAUO1W,UAAP,GAAoB,EAApB;uBACmBd,OAAnB,CAA2B,UAAC6C,CAAD,EAAI3C,CAAJ,EAAU;aAC5BY,UAAP,CAAkB+B,CAAlB,IAAuBwU,KAAKxU,CAAL,CAAvB;aACO/B,UAAP,CAAkB+B,CAAlB,EAAqBoS,KAArB,GAA6B/U,CAA7B;KAFF;GAb8B;CAAhC;;ACAA,IAAMwX,YAAY,SAAZA,SAAY,CAACrY,MAAD,EAASsD,UAAT,EAAwB;MACpCtD,OAAOkD,OAAP,IAAkBlD,OAAOkD,OAAP,CAAevD,MAAf,KAA0BK,OAAOpB,IAAP,CAAYe,MAA5D,EACE,OAAO,IAAP;;MAEI2Y,SAAShV,WAAWiN,WAAX,GAAyBgI,UAAzB,EAAf;;OAEK,IAAIvK,GAAT,IAAgBsK,MAAhB,EAAwB;QAClBA,OAAOrT,cAAP,CAAsB+I,GAAtB,CAAJ,EAAgC;aACvB,IAAP;;;SAGG,KAAP;CAXF;;ACIA,IAAMnO,QAAQ,SAARA,KAAQ,CAACG,MAAD,EAASmB,EAAT,EAAakR,GAAb,EAAkB/O,UAAlB;SACZ,UAASkV,KAAT,EAAgB;QACVA,KAAJ,EAAWC,SAAX,CAAqB,CAArB,EAAwB,CAAxB,EAA2B1Y,EAAEC,MAAF,IAAY,CAAvC,EAA0CyK,EAAEzK,MAAF,IAAY,CAAtD;;;;;QAKIwY,UAAU,SAAV,IAAuBH,UAAUrY,MAAV,EAAkBsD,UAAlB,CAA3B,EAA0D;UACpDJ,OAAJ,CAAY4K,SAAZ,GAAwB3M,GAAGb,SAAH,CAAaoF,KAAb,CAAmB,kBAAnB,CAAxB;UACIxC,OAAJ,CAAYyQ,WAAZ,GAA0B,IAAI3T,OAAO0Y,cAArC;UACIxV,OAAJ,CAAY6K,QAAZ,CAAqB,CAArB,EAAwB,CAAxB,EAA2BhO,EAAEC,MAAF,IAAY,CAAvC,EAA0CyK,EAAEzK,MAAF,IAAY,CAAtD;UACIkD,OAAJ,CAAYyQ,WAAZ,GAA0B3T,OAAO4T,KAAjC;;WAEK,IAAP;GAbU;CAAd;;ACJO,IAAM+E,YAAY,IAAlB;;ICKMC,MAAb;oBAEiBC,QAAb,EACA;;;aACSC,WAAL,CAAiBD,QAAjB;;;;;0BAGDhY,CAPP,EAOSuG,CAPT,EAQI;gBACQvG,IAAI,CAAJ,IAASA,IAAI,KAAKgY,QAAL,CAAclZ,MAA3B,IAAqCyH,IAAI,CAAzC,IAA8CA,IAAI,KAAKyR,QAAL,CAAc,CAAd,EAAiBlZ,MAAvE,EACA;uBACW,IAAP;;mBAEG,KAAKkZ,QAAL,CAAchY,IAAE,CAAhB,EAAmBuG,IAAE,CAArB,CAAP;;;;4BAGCvG,CAhBT,EAiBI;gBACQA,IAAI,KAAKgY,QAAL,CAAclZ,MAAtB,EACA;uBACW,IAAP;;mBAEG,IAAIoZ,MAAJ,CAAW,KAAKF,QAAL,CAAchY,IAAE,CAAhB,CAAX,CAAP;;;;4BAGCuG,CAzBT,EA0BI;gBACQ,KAAKyR,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,IAAP;;gBAEAyH,IAAI,KAAKyR,QAAL,CAAc,CAAd,EAAiBlZ,MAAzB,EACA;uBACW,IAAP;;gBAEAqZ,MAAM,EAAV;gBAAcC,IAAI,KAAKJ,QAAL,CAAclZ,MAAhC;iBACK,IAAIkB,IAAI,CAAb,EAAgBA,IAAIoY,CAApB,EAAuBpY,GAAvB,EACA;oBACQC,IAAJ,CAAS,KAAK+X,QAAL,CAAchY,CAAd,EAAiBuG,IAAE,CAAnB,CAAT;;mBAEG,IAAI2R,MAAJ,CAAWC,GAAX,CAAP;;;;qCAIJ;gBACQE,OAAQ,KAAKL,QAAL,CAAclZ,MAAd,KAAyB,CAA1B,GAA+B,CAA/B,GAAmC,KAAKkZ,QAAL,CAAc,CAAd,EAAiBlZ,MAA/D;mBACO,EAACwZ,MAAM,KAAKN,QAAL,CAAclZ,MAArB,EAA6BuZ,MAAMA,IAAnC,EAAP;;;;+BAIJ;mBACW,KAAKL,QAAL,CAAclZ,MAArB;;;;+BAIJ;gBACQ,KAAKkZ,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,CAAP;;mBAEG,KAAKkZ,QAAL,CAAc,CAAd,EAAiBlZ,MAAxB;;;;4BAGCyZ,MA/DT,EAgEI;gBACQC,IAAID,OAAOP,QAAP,IAAmBO,MAA3B;gBACI,CAACC,EAAE,CAAF,CAAD,IAAS,OAAOA,EAAE,CAAF,EAAK,CAAL,CAAP,KAAoB,WAAjC,EACA;oBACQ,IAAIT,MAAJ,CAAWS,CAAX,EAAcR,QAAlB;;gBAEA,KAAKA,QAAL,CAAclZ,MAAd,KAAyB,CAAzB,IAA8B0Z,EAAE1Z,MAAF,KAAa,CAA/C,EACA;uBACW,KAAKkZ,QAAL,CAAclZ,MAAd,KAAyB0Z,EAAE1Z,MAAlC;;gBAEA,KAAKkZ,QAAL,CAAclZ,MAAd,KAAyB0Z,EAAE1Z,MAA/B,EACA;uBACW,KAAP;;gBAEA,KAAKkZ,QAAL,CAAc,CAAd,EAAiBlZ,MAAjB,KAA4B0Z,EAAE,CAAF,EAAK1Z,MAArC,EACA;uBACW,KAAP;;gBAEAkB,IAAI,KAAKgY,QAAL,CAAclZ,MAAtB;gBAA8B2Z,KAAK,KAAKT,QAAL,CAAc,CAAd,EAAiBlZ,MAApD;gBAA4DyH,CAA5D;mBACOvG,GAAP,EACA;oBACQyY,EAAJ;uBACOlS,GAAP,EACA;wBACQqB,KAAK8Q,GAAL,CAAS,KAAKV,QAAL,CAAchY,CAAd,EAAiBuG,CAAjB,IAAsBiS,EAAExY,CAAF,EAAKuG,CAAL,CAA/B,IAA0CuR,SAA9C,EACA;+BACW,KAAP;;;;mBAIL,IAAP;;;;8BAIJ;mBACW,IAAIC,MAAJ,CAAW,KAAKC,QAAhB,CAAP;;;;4BAGCW,EAtGT,EAsGa5L,OAtGb,EAuGI;gBACQ,KAAKiL,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,IAAIiZ,MAAJ,CAAW,EAAX,CAAP;;gBAEAa,MAAM,EAAV;gBAAc5Y,IAAI,KAAKgY,QAAL,CAAclZ,MAAhC;gBAAwC2Z,KAAK,KAAKT,QAAL,CAAc,CAAd,EAAiBlZ,MAA9D;gBAAsEyH,CAAtE;mBACOvG,GAAP,EACA;oBACQyY,EAAJ;oBACIzY,CAAJ,IAAS,EAAT;uBACOuG,GAAP,EACA;wBACQvG,CAAJ,EAAOuG,CAAP,IAAYoS,GAAG5W,IAAH,CAAQgL,OAAR,EAAiB,KAAKiL,QAAL,CAAchY,CAAd,EAAiBuG,CAAjB,CAAjB,EAAsCvG,IAAI,CAA1C,EAA6CuG,IAAI,CAAjD,CAAZ;;;mBAGD,IAAIwR,MAAJ,CAAWa,GAAX,CAAP;;;;qCAGUL,MAzHlB,EA0HI;gBACQC,IAAID,OAAOP,QAAP,IAAmBO,MAA3B;gBACI,OAAOC,EAAE,CAAF,EAAK,CAAL,CAAP,KAAoB,WAAxB,EACA;oBACQ,IAAIT,MAAJ,CAAWS,CAAX,EAAcR,QAAlB;;gBAEA,KAAKA,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW0Z,EAAE1Z,MAAF,KAAa,CAApB;;mBAEI,KAAKkZ,QAAL,CAAclZ,MAAd,KAAyB0Z,EAAE1Z,MAA3B,IAAqC,KAAKkZ,QAAL,CAAc,CAAd,EAAiBlZ,MAAjB,KAA4B0Z,EAAE,CAAF,EAAK1Z,MAA9E;;;;4BAGCyZ,MAvIT,EAwII;gBACQ,KAAKP,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,KAAKP,GAAL,CAAS,UAASiJ,CAAT,EACZ;2BACWA,CAAP;iBAFD,CAAP;;gBAKAgR,IAAID,OAAOP,QAAP,IAAmBO,MAA3B;gBACI,OAAOC,EAAE,CAAF,EAAK,CAAL,CAAP,KAAoB,WAAxB,EACA;oBACQ,IAAIT,MAAJ,CAAWS,CAAX,EAAcR,QAAlB;;gBAEA,CAAC,KAAKa,YAAL,CAAkBL,CAAlB,CAAL,EACA;uBACW,IAAP;;mBAEG,KAAKja,GAAL,CAAS,UAASiJ,CAAT,EAAYxH,CAAZ,EAAeuG,CAAf,EACZ;uBACWiB,IAAIgR,EAAExY,IAAE,CAAJ,EAAOuG,IAAE,CAAT,CAAX;aAFD,CAAP;;;;iCAMMgS,MA/Jd,EAgKI;gBACQ,KAAKP,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,KAAKP,GAAL,CAAS,UAASiJ,CAAT,EAChB;2BACWA,CAAP;iBAFG,CAAP;;gBAKAgR,IAAID,OAAOP,QAAP,IAAmBO,MAA3B;gBACI,OAAOC,EAAE,CAAF,EAAK,CAAL,CAAP,KAAoB,WAAxB,EACA;oBACQ,IAAIT,MAAJ,CAAWS,CAAX,EAAcR,QAAlB;;gBAEA,CAAC,KAAKa,YAAL,CAAkBL,CAAlB,CAAL,EACA;uBACW,IAAP;;mBAEG,KAAKja,GAAL,CAAS,UAASiJ,CAAT,EAAYxH,CAAZ,EAAeuG,CAAf,EACZ;uBACWiB,IAAIgR,EAAExY,IAAE,CAAJ,EAAOuG,IAAE,CAAT,CAAX;aAFD,CAAP;;;;4CAMiBgS,MAvLzB,EAwLI;gBACQ,KAAKP,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,KAAP;;gBAEA0Z,IAAID,OAAOP,QAAP,IAAmBO,MAA3B;gBACI,OAAOC,EAAE,CAAF,EAAK,CAAL,CAAP,KAAoB,WAAxB,EACA;oBACQ,IAAIT,MAAJ,CAAWS,CAAX,EAAcR,QAAlB;;;mBAGI,KAAKA,QAAL,CAAc,CAAd,EAAiBlZ,MAAjB,KAA4B0Z,EAAE1Z,MAAtC;;;;iCAGMyZ,MAtMd,EAuMI;gBACQ,KAAKP,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,IAAP;;gBAEA,CAACyZ,OAAOP,QAAZ,EACA;uBACW,KAAKzZ,GAAL,CAAS,UAASiJ,CAAT,EAChB;2BACWA,IAAI+Q,MAAX;iBAFG,CAAP;;gBAKAO,eAAeP,OAAOQ,OAAP,GAAiB,IAAjB,GAAwB,KAA3C;gBACIP,IAAID,OAAOP,QAAP,IAAmBO,MAA3B;gBACI,OAAOC,EAAE,CAAF,EAAK,CAAL,CAAP,KAAoB,WAAxB,EACA;oBACQ,IAAIT,MAAJ,CAAWS,CAAX,EAAcR,QAAlB;;gBAEA,CAAC,KAAKgB,mBAAL,CAAyBR,CAAzB,CAAL,EACA;uBACW,IAAP;;gBAEAxY,IAAI,KAAKgY,QAAL,CAAclZ,MAAtB;gBAA8B2Z,KAAKD,EAAE,CAAF,EAAK1Z,MAAxC;gBAAgDyH,CAAhD;gBACI8R,OAAO,KAAKL,QAAL,CAAc,CAAd,EAAiBlZ,MAA5B;gBAAoCqM,CAApC;gBAAuC6M,WAAW,EAAlD;gBAAsDiB,GAAtD;mBACOjZ,GAAP,EACA;oBACQyY,EAAJ;yBACSzY,CAAT,IAAc,EAAd;uBACOuG,GAAP,EACA;wBACQ8R,IAAJ;0BACM,CAAN;2BACOlN,GAAP,EACA;+BACW,KAAK6M,QAAL,CAAchY,CAAd,EAAiBmL,CAAjB,IAAsBqN,EAAErN,CAAF,EAAK5E,CAAL,CAA7B;;6BAEKvG,CAAT,EAAYuG,CAAZ,IAAiB0S,GAAjB;;;gBAGJT,IAAI,IAAIT,MAAJ,CAAWC,QAAX,CAAR;mBACOc,eAAeN,EAAEL,GAAF,CAAM,CAAN,CAAf,GAA0BK,CAAjC;;;;8BAGG/N,CAlPX,EAkPcjF,CAlPd,EAkPiB2F,CAlPjB,EAkPoBpL,CAlPpB,EAmPI;gBACQ,KAAKiY,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,IAAP;;gBAEAkZ,WAAW,EAAf;gBAAmBkB,KAAK/N,CAAxB;gBAA2BnL,CAA3B;gBAA8ByY,EAA9B;gBAAkClS,CAAlC;gBACI+R,OAAO,KAAKN,QAAL,CAAclZ,MAAzB;gBAAiCuZ,OAAO,KAAKL,QAAL,CAAc,CAAd,EAAiBlZ,MAAzD;mBACOoa,IAAP,EACA;oBACQ/N,IAAI+N,EAAJ,GAAS,CAAb;yBACSlZ,CAAT,IAAc,EAAd;qBACKD,CAAL;uBACO0Y,IAAP,EACA;wBACQ1Y,IAAI0Y,EAAJ,GAAS,CAAb;6BACSzY,CAAT,EAAYuG,CAAZ,IAAiB,KAAKyR,QAAL,CAAc,CAACvN,IAAEzK,CAAF,GAAI,CAAL,IAAQsY,IAAtB,EAA4B,CAAC9S,IAAEe,CAAF,GAAI,CAAL,IAAQ8R,IAApC,CAAjB;;;mBAGD,IAAIN,MAAJ,CAAWC,QAAX,CAAP;;;;oCAIJ;gBACQ,KAAKA,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,IAAIiZ,MAAJ,CAAW,EAAX,CAAP;;gBAEAO,OAAO,KAAKN,QAAL,CAAclZ,MAAzB;gBAAiCkB,CAAjC;gBAAoCqY,OAAO,KAAKL,QAAL,CAAc,CAAd,EAAiBlZ,MAA5D;gBAAoEyH,CAApE;gBACIyR,WAAW,EAAf;gBAAmBhY,IAAIqY,IAAvB;mBACOrY,GAAP,EACA;oBACQsY,IAAJ;yBACStY,CAAT,IAAc,EAAd;uBACOuG,GAAP,EACA;6BACavG,CAAT,EAAYuG,CAAZ,IAAiB,KAAKyR,QAAL,CAAczR,CAAd,EAAiBvG,CAAjB,CAAjB;;;mBAGD,IAAI+X,MAAJ,CAAWC,QAAX,CAAP;;;;mCAIJ;gBACQK,OAAQ,KAAKL,QAAL,CAAclZ,MAAd,KAAyB,CAA1B,GAA+B,CAA/B,GAAmC,KAAKkZ,QAAL,CAAc,CAAd,EAAiBlZ,MAA/D;mBACQ,KAAKkZ,QAAL,CAAclZ,MAAd,KAAyBuZ,IAAjC;;;;8BAIJ;gBACQ,KAAKL,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,IAAP;;gBAEAqa,IAAI,CAAR;gBAAWnZ,IAAI,KAAKgY,QAAL,CAAclZ,MAA7B;gBAAqC2Z,KAAK,KAAKT,QAAL,CAAc,CAAd,EAAiBlZ,MAA3D;gBAAmEyH,CAAnE;mBACOvG,GAAP,EACA;oBACQyY,EAAJ;uBACOlS,GAAP,EACA;wBACQqB,KAAK8Q,GAAL,CAAS,KAAKV,QAAL,CAAchY,CAAd,EAAiBuG,CAAjB,CAAT,IAAgCqB,KAAK8Q,GAAL,CAASS,CAAT,CAApC,EACA;4BACQ,KAAKnB,QAAL,CAAchY,CAAd,EAAiBuG,CAAjB,CAAJ;;;;mBAIL4S,CAAP;;;;gCAGK3R,CAvTb,EAwTI;gBACQ,KAAKwQ,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,IAAP;;gBAEcoa,KAAK,KAAKlB,QAAL,CAAclZ,MAArC;gBAA6CkB,CAA7C;gBAAgDyY,KAAK,KAAKT,QAAL,CAAc,CAAd,EAAiBlZ,MAAtE;gBAA8EyH,CAA9E;iBACKvG,IAAI,CAAT,EAAYA,IAAIkZ,EAAhB,EAAoBlZ,GAApB,EACA;qBACSuG,IAAI,CAAT,EAAYA,IAAIkS,EAAhB,EAAoBlS,GAApB,EACA;wBACQ,KAAKyR,QAAL,CAAchY,CAAd,EAAiBuG,CAAjB,MAAwBiB,CAA5B,EACA;+BACW;+BACAxH,IAAE,CADF;+BAEAuG,IAAE;yBAFT;;;;mBAOL,IAAP;;;;mCAIJ;gBACQ,CAAC,KAAK6S,QAAV,EACA;uBACW,IAAP;;gBAEAR,MAAM,EAAV;gBAAcR,IAAI,KAAKJ,QAAL,CAAclZ,MAAhC;iBACK,IAAIkB,IAAI,CAAb,EAAgBA,IAAIoY,CAApB,EAAuBpY,GAAvB,EACA;oBACQC,IAAJ,CAAS,KAAK+X,QAAL,CAAchY,CAAd,EAAiBA,CAAjB,CAAT;;mBAEG,IAAIkY,MAAJ,CAAWU,GAAX,CAAP;;;;4CAIJ;gBACQ,KAAKZ,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,IAAIiZ,MAAJ,CAAW,EAAX,CAAP;;gBAEAS,IAAI,KAAKa,GAAL,EAAR;gBAAoBT,GAApB;gBACIR,IAAI,KAAKJ,QAAL,CAAclZ,MAAtB;gBAA8BkB,CAA9B;gBAAiCuG,CAAjC;gBAAoC+S,KAAK,KAAKtB,QAAL,CAAc,CAAd,EAAiBlZ,MAA1D;gBAAkE6D,CAAlE;iBACK3C,IAAI,CAAT,EAAYA,IAAIoY,CAAhB,EAAmBpY,GAAnB,EACA;oBACQwY,EAAER,QAAF,CAAWhY,CAAX,EAAcA,CAAd,MAAqB,CAAzB,EACA;yBACSuG,IAAIvG,IAAI,CAAb,EAAgBuG,IAAI6R,CAApB,EAAuB7R,GAAvB,EACA;4BACQiS,EAAER,QAAF,CAAWzR,CAAX,EAAcvG,CAAd,MAAqB,CAAzB,EACA;kCACU,EAAN;iCACK2C,IAAI,CAAT,EAAYA,IAAI2W,EAAhB,EAAoB3W,GAApB,EACA;oCACQ1C,IAAJ,CAASuY,EAAER,QAAF,CAAWhY,CAAX,EAAc2C,CAAd,IAAmB6V,EAAER,QAAF,CAAWzR,CAAX,EAAc5D,CAAd,CAA5B;;8BAEFqV,QAAF,CAAWhY,CAAX,IAAgB4Y,GAAhB;;;;;oBAKRJ,EAAER,QAAF,CAAWhY,CAAX,EAAcA,CAAd,MAAqB,CAAzB,EACA;yBACSuG,IAAIvG,IAAI,CAAb,EAAgBuG,IAAI6R,CAApB,EAAuB7R,GAAvB,EACA;4BACQgT,aAAaf,EAAER,QAAF,CAAWzR,CAAX,EAAcvG,CAAd,IAAmBwY,EAAER,QAAF,CAAWhY,CAAX,EAAcA,CAAd,CAApC;8BACM,EAAN;6BACK2C,IAAI,CAAT,EAAYA,IAAI2W,EAAhB,EAAoB3W,GAApB,EACA;;;;;gCAKQ1C,IAAJ,CAAS0C,KAAK3C,CAAL,GAAS,CAAT,GAAawY,EAAER,QAAF,CAAWzR,CAAX,EAAc5D,CAAd,IAAmB6V,EAAER,QAAF,CAAWhY,CAAX,EAAc2C,CAAd,IAAmB4W,UAA5D;;0BAEFvB,QAAF,CAAWzR,CAAX,IAAgBqS,GAAhB;;;;mBAILJ,CAAP;;;;sCAIJ;gBACQ,KAAKR,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,CAAP;;gBAEA,CAAC,KAAKsa,QAAL,EAAL,EACA;uBACW,IAAP;;gBAEAZ,IAAI,KAAKgB,iBAAL,EAAR;gBACIC,MAAMjB,EAAER,QAAF,CAAW,CAAX,EAAc,CAAd,CAAV;gBAA4BI,IAAII,EAAER,QAAF,CAAWlZ,MAA3C;iBACK,IAAIkB,IAAI,CAAb,EAAgBA,IAAIoY,CAApB,EAAuBpY,GAAvB,EACA;sBACUyZ,MAAMjB,EAAER,QAAF,CAAWhY,CAAX,EAAcA,CAAd,CAAZ;;mBAEGyZ,GAAP;;;;qCAIJ;mBACY,KAAKL,QAAL,MAAmB,KAAKM,WAAL,OAAuB,CAAlD;;;;gCAIJ;gBACQ,KAAK1B,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,CAAP;;gBAEA,CAAC,KAAKsa,QAAL,EAAL,EACA;uBACW,IAAP;;gBAEAO,KAAK,KAAK3B,QAAL,CAAc,CAAd,EAAiB,CAAjB,CAAT;gBAA8BI,IAAI,KAAKJ,QAAL,CAAclZ,MAAhD;iBACK,IAAIkB,IAAI,CAAb,EAAgBA,IAAIoY,CAApB,EAAuBpY,GAAvB,EACA;sBACU,KAAKgY,QAAL,CAAchY,CAAd,EAAiBA,CAAjB,CAAN;;mBAEG2Z,EAAP;;;;+BAIJ;gBACQ,KAAK3B,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,CAAP;;gBAEA0Z,IAAI,KAAKgB,iBAAL,EAAR;gBAAkCI,OAAO,CAAzC;gBACI5Z,IAAI,KAAKgY,QAAL,CAAclZ,MAAtB;gBAA8B2Z,KAAK,KAAKT,QAAL,CAAc,CAAd,EAAiBlZ,MAApD;gBAA4DyH,CAA5D;mBACOvG,GAAP,EACA;oBACQyY,EAAJ;uBACOlS,GAAP,EACA;wBACQqB,KAAK8Q,GAAL,CAASF,EAAER,QAAF,CAAWhY,CAAX,EAAcuG,CAAd,CAAT,IAA6BuR,SAAjC,EACA;;;;;;mBAMD8B,IAAP;;;;gCAGKrB,MA5cb,EA6cI;gBACQ,KAAKP,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,KAAKua,GAAL,EAAP;;gBAEAb,IAAID,OAAOP,QAAP,IAAmBO,MAA3B;gBACI,OAAOC,EAAE,CAAF,EAAK,CAAL,CAAP,KAAoB,WAAxB,EACA;oBACQ,IAAIT,MAAJ,CAAWS,CAAX,EAAcR,QAAlB;;gBAEA6B,IAAI,KAAKR,GAAL,EAAR;gBAAoBhB,OAAOwB,EAAE7B,QAAF,CAAW,CAAX,EAAclZ,MAAzC;gBACIkB,IAAI6Z,EAAE7B,QAAF,CAAWlZ,MAAnB;gBAA2B2Z,KAAKD,EAAE,CAAF,EAAK1Z,MAArC;gBAA6CyH,CAA7C;gBACIvG,MAAMwY,EAAE1Z,MAAZ,EACA;uBACW,IAAP;;mBAEGkB,GAAP,EACA;oBACQyY,EAAJ;uBACOlS,GAAP,EACA;sBACMyR,QAAF,CAAWhY,CAAX,EAAcqY,OAAO9R,CAArB,IAA0BiS,EAAExY,CAAF,EAAKuG,CAAL,CAA1B;;;mBAGDsT,CAAP;;;;kCAIJ;gBACQ,KAAK7B,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;uBACW,IAAP;;gBAEA,CAAC,KAAKsa,QAAL,EAAD,IAAoB,KAAKU,UAAL,EAAxB,EACA;uBACW,IAAP;;gBAEA1B,IAAI,KAAKJ,QAAL,CAAclZ,MAAtB;gBAA8BkB,IAAGoY,CAAjC;gBAAoC7R,CAApC;gBACIiS,IAAI,KAAKuB,OAAL,CAAahC,OAAOiC,CAAP,CAAS5B,CAAT,CAAb,EAA0BoB,iBAA1B,EAAR;gBACIF,KAAKd,EAAER,QAAF,CAAW,CAAX,EAAclZ,MAAvB;gBAA+B6D,CAA/B;gBAAkCiW,GAAlC;gBAAuCqB,OAAvC;gBACIC,mBAAmB,EAAvB;gBAA2BC,WAA3B;;;mBAGOna,GAAP,EACA;;sBAEU,EAAN;iCACiBA,CAAjB,IAAsB,EAAtB;0BACUwY,EAAER,QAAF,CAAWhY,CAAX,EAAcA,CAAd,CAAV;qBACK2C,IAAI,CAAT,EAAYA,IAAI2W,EAAhB,EAAoB3W,GAApB,EACA;kCACkB6V,EAAER,QAAF,CAAWhY,CAAX,EAAc2C,CAAd,IAAmBsX,OAAjC;wBACIha,IAAJ,CAASka,WAAT;;;wBAGIxX,KAAKyV,CAAT,EACA;yCACqBpY,CAAjB,EAAoBC,IAApB,CAAyBka,WAAzB;;;kBAGNnC,QAAF,CAAWhY,CAAX,IAAgB4Y,GAAhB;;;oBAGI5Y,CAAJ;uBACOuG,GAAP,EACA;0BACU,EAAN;yBACK5D,IAAI,CAAT,EAAYA,IAAI2W,EAAhB,EAAoB3W,GAApB,EACA;4BACQ1C,IAAJ,CAASuY,EAAER,QAAF,CAAWzR,CAAX,EAAc5D,CAAd,IAAmB6V,EAAER,QAAF,CAAWhY,CAAX,EAAc2C,CAAd,IAAmB6V,EAAER,QAAF,CAAWzR,CAAX,EAAcvG,CAAd,CAA/C;;sBAEFgY,QAAF,CAAWzR,CAAX,IAAgBqS,GAAhB;;;mBAGD,IAAIb,MAAJ,CAAWmC,gBAAX,CAAP;;;;gCAIJ;mBACW,KAAK3b,GAAL,CAAS,UAASiJ,CAAT,EACZ;uBACWI,KAAKwS,KAAL,CAAW5S,CAAX,CAAP;aAFD,CAAP;;;;+BAMIA,CAliBZ,EAmiBI;mBACW,KAAKjJ,GAAL,CAAS,UAASoE,CAAT,EACZ;uBACYiF,KAAK8Q,GAAL,CAAS/V,IAAI6E,CAAb,KAAmBsQ,SAApB,GAAiCtQ,CAAjC,GAAqC7E,CAA5C;aAFD,CAAP;;;;kCAOJ;gBACQ0X,cAAc,EAAlB;gBACIjC,IAAI,KAAKJ,QAAL,CAAclZ,MAAtB;gBACIsZ,MAAM,CAAV,EAAa,OAAO,IAAP;iBACR,IAAIpY,IAAI,CAAb,EAAgBA,IAAIoY,CAApB,EAAuBpY,GAAvB,EACA;4BACgBC,IAAZ,CAAiB,IAAIiY,MAAJ,CAAW,KAAKF,QAAL,CAAchY,CAAd,CAAX,EAA6Bsa,OAA7B,EAAjB;;mBAEGD,YAAYE,IAAZ,CAAiB,IAAjB,CAAP;;;;oCAGS3B,GAtjBjB,EAujBI;gBACQ5Y,CAAJ;gBAAOuG,CAAP;gBAAUyR,WAAWY,IAAIZ,QAAJ,IAAgBY,GAArC;gBACIZ,SAAS,CAAT,KAAe,OAAOA,SAAS,CAAT,EAAY,CAAZ,CAAP,KAA2B,WAA9C,EACA;oBACQA,SAASlZ,MAAb;qBACKkZ,QAAL,GAAgB,EAAhB;uBACOhY,GAAP,EACA;wBACQgY,SAAShY,CAAT,EAAYlB,MAAhB;yBACKkZ,QAAL,CAAchY,CAAd,IAAmB,EAAnB;2BACOuG,GAAP,EACA;6BACSyR,QAAL,CAAchY,CAAd,EAAiBuG,CAAjB,IAAsByR,SAAShY,CAAT,EAAYuG,CAAZ,CAAtB;;;uBAGD,IAAP;;gBAEA6R,IAAIJ,SAASlZ,MAAjB;iBACKkZ,QAAL,GAAgB,EAAhB;iBACKhY,IAAI,CAAT,EAAYA,IAAIoY,CAAhB,EAAmBpY,GAAnB,EACA;qBACSgY,QAAL,CAAc/X,IAAd,CAAmB,CAAC+X,SAAShY,CAAT,CAAD,CAAnB;;mBAEG,IAAP;;;;;;;kCAKJ;gBACQwa,SAAS,EAAb;gBACI,KAAKxC,QAAL,CAAclZ,MAAd,IAAwB,CAA5B,EACA;uBACW,EAAP;;;iBAIC,IAAIyH,IAAI,CAAb,EAAgBA,IAAI,KAAKyR,QAAL,CAAc,CAAd,EAAiBlZ,MAArC,EAA6CyH,GAA7C,EACA;qBACS,IAAIvG,IAAI,CAAb,EAAgBA,IAAI,KAAKgY,QAAL,CAAclZ,MAAlC,EAA0CkB,GAA1C,EACA;2BACWC,IAAP,CAAY,KAAK+X,QAAL,CAAchY,CAAd,EAAiBuG,CAAjB,CAAZ;;;mBAGDiU,MAAP;;;;;;;oCAKJ;gBACQ,KAAKxC,QAAL,CAAclZ,MAAd,IAAwB,CAAxB,IAA6B,KAAKkZ,QAAL,CAAc,CAAd,EAAiBlZ,MAAjB,IAA2B,CAA5D,EACA;uBACW,IAAP;;;gBAGA,KAAKkZ,QAAL,CAAclZ,MAAd,GAAuB,CAAvB,IAA4B,KAAKkZ,QAAL,CAAc,CAAd,EAAiBlZ,MAAjB,GAA0B,CAA1D,EACA;uBACW,IAAP;;;iBAGC,IAAIkB,IAAI,CAAb,EAAgBA,IAAI,KAAKgY,QAAL,CAAclZ,MAAlC,EAA0CkB,GAA1C,EACA;qBACS,IAAIuG,IAAI,KAAKyR,QAAL,CAAchY,CAAd,EAAiBlB,MAA9B,EAAsCyH,IAAI,CAA1C,EAA6CA,GAA7C,EACA;wBACQvG,KAAKuG,CAAT,EACA;6BACSyR,QAAL,CAAchY,CAAd,EAAiBC,IAAjB,CAAsB,CAAtB;qBAFJ,MAKA;6BACS+X,QAAL,CAAchY,CAAd,EAAiBC,IAAjB,CAAsB,CAAtB;;;;;iBAKP,IAAID,IAAI,KAAKgY,QAAL,CAAclZ,MAA3B,EAAmCkB,IAAI,CAAvC,EAA0CA,GAA1C,EACA;oBACQA,KAAK,CAAT,EACA;yBACSgY,QAAL,CAAc/X,IAAd,CAAmB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAnB;iBAFJ,MAIK,IAAID,KAAK,CAAT,EACL;yBACSgY,QAAL,CAAc/X,IAAd,CAAmB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAnB;iBAFC,MAIA,IAAID,KAAK,CAAT,EACL;yBACSgY,QAAL,CAAc/X,IAAd,CAAmB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAnB;iBAFC,MAIA,IAAID,KAAK,CAAT,EACL;yBACSgY,QAAL,CAAc/X,IAAd,CAAmB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAnB;;;;mBAID,IAAP;;;;;;;kCAKJ;gBACQ,KAAK+X,QAAL,CAAclZ,MAAd,IAAwB,CAAxB,IAA6B,KAAKkZ,QAAL,CAAc,CAAd,EAAiBlZ,MAAjB,IAA2B,CAA5D,EACA;uBACW,IAAP;;;mBAGG,IAAIiZ,MAAJ,CAAW,CAAC,CAAC,KAAKC,QAAL,CAAc,CAAd,EAAiB,CAAjB,CAAD,EAAsB,KAAKA,QAAL,CAAc,CAAd,EAAiB,CAAjB,CAAtB,EAA2C,KAAKA,QAAL,CAAc,CAAd,EAAiB,CAAjB,CAA3C,CAAD,EACI,CAAC,KAAKA,QAAL,CAAc,CAAd,EAAiB,CAAjB,CAAD,EAAsB,KAAKA,QAAL,CAAc,CAAd,EAAiB,CAAjB,CAAtB,EAA2C,KAAKA,QAAL,CAAc,CAAd,EAAiB,CAAjB,CAA3C,CADJ,EAEI,CAAC,KAAKA,QAAL,CAAc,CAAd,EAAiB,CAAjB,CAAD,EAAsB,KAAKA,QAAL,CAAc,CAAd,EAAiB,CAAjB,CAAtB,EAA2C,KAAKA,QAAL,CAAc,CAAd,EAAiB,CAAjB,CAA3C,CAFJ,CAAX,CAAP;;;;;;AAMRD,OAAOiC,CAAP,GAAW,UAAS5B,CAAT,EACX;QACQQ,MAAM,EAAV;QAAc5Y,IAAIoY,CAAlB;QAAqB7R,CAArB;WACOvG,GAAP,EACA;YACQoY,CAAJ;YACIpY,CAAJ,IAAS,EAAT;eACOuG,GAAP,EACA;gBACQvG,CAAJ,EAAOuG,CAAP,IAAavG,MAAMuG,CAAP,GAAY,CAAZ,GAAgB,CAA5B;;;WAGD,IAAIwR,MAAJ,CAAWa,GAAX,CAAP;CAZJ;;AAeAb,OAAO0C,QAAP,GAAkB,UAASzC,QAAT,EAClB;QACQhY,IAAIgY,SAASlZ,MAAjB;QACI0Z,IAAIT,OAAOiC,CAAP,CAASha,CAAT,CAAR;WACOA,GAAP,EACA;UACMgY,QAAF,CAAWhY,CAAX,EAAcA,CAAd,IAAmBgY,SAAShY,CAAT,CAAnB;;WAEGwY,CAAP;CARJ;;AAWAT,OAAO2C,QAAP,GAAkB,UAASC,KAAT,EAAgBlQ,CAAhB,EAClB;QACQ,CAACA,CAAL,EACA;eACW,IAAIsN,MAAJ,CAAW,CACd,CAACnQ,KAAKgT,GAAL,CAASD,KAAT,CAAD,EAAmB,CAAC/S,KAAKiT,GAAL,CAASF,KAAT,CAApB,CADc,EAEd,CAAC/S,KAAKiT,GAAL,CAASF,KAAT,CAAD,EAAoB/S,KAAKgT,GAAL,CAASD,KAAT,CAApB,CAFc,CAAX,CAAP;;QAKAhX,OAAO8G,EAAE4O,GAAF,EAAX;QACI1V,KAAKqU,QAAL,CAAclZ,MAAd,KAAyB,CAA7B,EACA;eACW,IAAP;;QAEAgc,MAAMnX,KAAKoV,OAAL,EAAV;QACIvR,IAAI7D,KAAKqU,QAAL,CAAc,CAAd,IAAiB8C,GAAzB;QAA8BrT,IAAI9D,KAAKqU,QAAL,CAAc,CAAd,IAAiB8C,GAAnD;QAAwDvL,IAAI5L,KAAKqU,QAAL,CAAc,CAAd,IAAiB8C,GAA7E;QACIC,IAAInT,KAAKiT,GAAL,CAASF,KAAT,CAAR;QAAyBxP,IAAIvD,KAAKgT,GAAL,CAASD,KAAT,CAA7B;QAA8C3G,IAAI,IAAI7I,CAAtD;;;;WAIO,IAAI4M,MAAJ,CAAW,CACd,CAAE/D,IAAExM,CAAF,GAAIA,CAAJ,GAAQ2D,CAAV,EAAa6I,IAAExM,CAAF,GAAIC,CAAJ,GAAQsT,IAAExL,CAAvB,EAA0ByE,IAAExM,CAAF,GAAI+H,CAAJ,GAAQwL,IAAEtT,CAApC,CADc,EAEd,CAAEuM,IAAExM,CAAF,GAAIC,CAAJ,GAAQsT,IAAExL,CAAZ,EAAeyE,IAAEvM,CAAF,GAAIA,CAAJ,GAAQ0D,CAAvB,EAA0B6I,IAAEvM,CAAF,GAAI8H,CAAJ,GAAQwL,IAAEvT,CAApC,CAFc,EAGd,CAAEwM,IAAExM,CAAF,GAAI+H,CAAJ,GAAQwL,IAAEtT,CAAZ,EAAeuM,IAAEvM,CAAF,GAAI8H,CAAJ,GAAQwL,IAAEvT,CAAzB,EAA4BwM,IAAEzE,CAAF,GAAIA,CAAJ,GAAQpE,CAApC,CAHc,CAAX,CAAP;CApBJ;;AA2BA4M,OAAOiD,SAAP,GAAmB,UAAShH,CAAT,EACnB;QACQ7I,IAAIvD,KAAKgT,GAAL,CAAS5G,CAAT,CAAR;QAAqB+G,IAAInT,KAAKiT,GAAL,CAAS7G,CAAT,CAAzB;WACO,IAAI+D,MAAJ,CAAW,CACd,CAAG,CAAH,EAAO,CAAP,EAAW,CAAX,CADc,EAEd,CAAG,CAAH,EAAO5M,CAAP,EAAU,CAAC4P,CAAX,CAFc,EAGd,CAAG,CAAH,EAAOA,CAAP,EAAW5P,CAAX,CAHc,CAAX,CAAP;CAHJ;AASA4M,OAAOkD,SAAP,GAAmB,UAASjH,CAAT,EACnB;QACQ7I,IAAIvD,KAAKgT,GAAL,CAAS5G,CAAT,CAAR;QAAqB+G,IAAInT,KAAKiT,GAAL,CAAS7G,CAAT,CAAzB;WACO,IAAI+D,MAAJ,CAAW,CACd,CAAG5M,CAAH,EAAO,CAAP,EAAW4P,CAAX,CADc,EAEd,CAAG,CAAH,EAAO,CAAP,EAAW,CAAX,CAFc,EAGd,CAAE,CAACA,CAAH,EAAO,CAAP,EAAW5P,CAAX,CAHc,CAAX,CAAP;CAHJ;AASA4M,OAAOmD,SAAP,GAAmB,UAASlH,CAAT,EACnB;QACQ7I,IAAIvD,KAAKgT,GAAL,CAAS5G,CAAT,CAAR;QAAqB+G,IAAInT,KAAKiT,GAAL,CAAS7G,CAAT,CAAzB;WACO,IAAI+D,MAAJ,CAAW,CACd,CAAG5M,CAAH,EAAM,CAAC4P,CAAP,EAAW,CAAX,CADc,EAEd,CAAGA,CAAH,EAAO5P,CAAP,EAAW,CAAX,CAFc,EAGd,CAAG,CAAH,EAAO,CAAP,EAAW,CAAX,CAHc,CAAX,CAAP;CAHJ;;AAUA4M,OAAOoD,MAAP,GAAgB,UAAS/C,CAAT,EAAYe,CAAZ,EAChB;WACWpB,OAAOqD,IAAP,CAAYhD,CAAZ,EAAee,CAAf,EAAkB5a,GAAlB,CAAsB,YACzB;eACWqJ,KAAKyT,MAAL,EAAP;KAFD,CAAP;CAFJ;;;AASAtD,OAAOuD,WAAP,GAAqB,UAAUC,CAAV,EACrB;QACQA,EAAEvD,QAAF,CAAWlZ,MAAX,IAAqB,CAAzB,EACA;YACQsW,IAAI2C,OAAOiC,CAAP,CAAS,CAAT,CAAR;UACEhC,QAAF,CAAW,CAAX,EAAc,CAAd,IAAmBuD,EAAEvD,QAAF,CAAW,CAAX,CAAnB;UACEA,QAAF,CAAW,CAAX,EAAc,CAAd,IAAmBuD,EAAEvD,QAAF,CAAW,CAAX,CAAnB;eACO5C,CAAP;;;QAGAmG,EAAEvD,QAAF,CAAWlZ,MAAX,IAAqB,CAAzB,EACA;YACQsW,IAAI2C,OAAOiC,CAAP,CAAS,CAAT,CAAR;UACEhC,QAAF,CAAW,CAAX,EAAc,CAAd,IAAmBuD,EAAEvD,QAAF,CAAW,CAAX,CAAnB;UACEA,QAAF,CAAW,CAAX,EAAc,CAAd,IAAmBuD,EAAEvD,QAAF,CAAW,CAAX,CAAnB;UACEA,QAAF,CAAW,CAAX,EAAc,CAAd,IAAmBuD,EAAEvD,QAAF,CAAW,CAAX,CAAnB;eACO5C,CAAP;;;UAGE,gCAAN;CAnBJ;;AAsBA2C,OAAOqD,IAAP,GAAc,UAAShD,CAAT,EAAYe,CAAZ,EACd;QACQP,MAAM,EAAV;QAAc5Y,IAAIoY,CAAlB;QAAqB7R,CAArB;WACOvG,GAAP,EACA;YACQmZ,CAAJ;YACInZ,CAAJ,IAAS,EAAT;eACOuG,GAAP,EACA;gBACQvG,CAAJ,EAAOuG,CAAP,IAAY,CAAZ;;;WAGD,IAAIwR,MAAJ,CAAWa,GAAX,CAAP;CAZJ;;AAeAb,OAAO5T,SAAP,CAAiBqX,iBAAjB,GAAqCzD,OAAO5T,SAAP,CAAiBqV,iBAAtD;AACAzB,OAAO5T,SAAP,CAAiBsV,GAAjB,GAAuB1B,OAAO5T,SAAP,CAAiBuV,WAAxC;AACA3B,OAAO5T,SAAP,CAAiBwV,EAAjB,GAAsB5B,OAAO5T,SAAP,CAAiBsX,KAAvC;AACA1D,OAAO5T,SAAP,CAAiBuX,EAAjB,GAAsB3D,OAAO5T,SAAP,CAAiByV,IAAvC;AACA7B,OAAO5T,SAAP,CAAiBwX,GAAjB,GAAuB5D,OAAO5T,SAAP,CAAiByX,OAAxC;AACA7D,OAAO5T,SAAP,CAAiBqD,CAAjB,GAAqBuQ,OAAO5T,SAAP,CAAiB0X,QAAtC;;IC1yBa3D,MAAb;oBAEiBF,QAAb,EACA;;;aACSC,WAAL,CAAiBD,QAAjB;;;;;0BAGDhY,CAPP,EAQI;mBACYA,IAAI,CAAJ,IAASA,IAAI,KAAKgY,QAAL,CAAclZ,MAA5B,GAAsC,IAAtC,GAA6C,KAAKkZ,QAAL,CAAchY,IAAE,CAAhB,CAApD;;;;qCAIJ;mBACW,KAAKgY,QAAL,CAAclZ,MAArB;;;;kCAIJ;mBACW8I,KAAK8C,IAAL,CAAU,KAAKoR,GAAL,CAAS,IAAT,CAAV,CAAP;;;;4BAGCC,MAtBT,EAuBI;gBACQ3D,IAAI,KAAKJ,QAAL,CAAclZ,MAAtB;gBACIkd,IAAID,OAAO/D,QAAP,IAAmB+D,MAA3B;gBACI3D,MAAM4D,EAAEld,MAAZ,EACA;uBACW,KAAP;;mBAEGsZ,GAAP,EACA;oBACQxQ,KAAK8Q,GAAL,CAAS,KAAKV,QAAL,CAAcI,CAAd,IAAmB4D,EAAE5D,CAAF,CAA5B,IAAoCN,SAAxC,EACA;2BACW,KAAP;;;mBAGD,IAAP;;;;8BAGG;mBACI,IAAII,MAAJ,CAAW,KAAKF,QAAhB,CAAP;;;;4BAGCW,EA5CT,EA4Ca5L,OA5Cb,EA6CI;gBACQiL,WAAW,EAAf;iBACKrW,IAAL,CAAU,UAAS6F,CAAT,EAAYxH,CAAZ,EACN;yBACaC,IAAT,CAAc0Y,GAAG5W,IAAH,CAAQgL,OAAR,EAAiBvF,CAAjB,EAAoBxH,CAApB,CAAd;aAFR;mBAIO,IAAIkY,MAAJ,CAAWF,QAAX,CAAP;;;;gCAGKW,EAtDb,EAsDiB5L,OAtDjB,EAuDI;gBACQqL,IAAI,KAAKJ,QAAL,CAAclZ,MAAtB;iBACK,IAAIkB,IAAI,CAAb,EAAgBA,IAAIoY,CAApB,EAAuBpY,GAAvB,EACA;mBACO+B,IAAH,CAAQgL,OAAR,EAAiB,KAAKiL,QAAL,CAAchY,CAAd,CAAjB,EAAmCA,IAAE,CAArC;;;;;uCAKR;gBACQoV,IAAI,KAAK2D,OAAL,EAAR;gBACI3D,MAAM,CAAV,EACA;uBACW,KAAKiE,GAAL,EAAP;;mBAEG,KAAK9a,GAAL,CAAS,UAASiJ,CAAT,EACZ;uBACWA,IAAE4N,CAAT;aAFD,CAAP;;;;kCAMO2G,MA5Ef,EA6EI;gBACQC,IAAID,OAAO/D,QAAP,IAAmB+D,MAA3B;gBACI3D,IAAI,KAAKJ,QAAL,CAAclZ,MAAtB;gBACIsZ,MAAM4D,EAAEld,MAAZ,EACA;uBACW,IAAP;;gBAEAgd,MAAM,CAAV;gBAAaG,OAAO,CAApB;gBAAuBC,OAAO,CAA9B;;iBAEKva,IAAL,CAAU,UAAS6F,CAAT,EAAYxH,CAAZ,EACN;uBACWwH,IAAIwU,EAAEhc,IAAE,CAAJ,CAAX;wBACQwH,IAAIA,CAAZ;wBACQwU,EAAEhc,IAAE,CAAJ,IAASgc,EAAEhc,IAAE,CAAJ,CAAjB;aAJR;mBAMO4H,KAAK8C,IAAL,CAAUuR,IAAV,CAAP,CAAwBC,OAAOtU,KAAK8C,IAAL,CAAUwR,IAAV,CAAP;gBACpBD,OAAKC,IAAL,KAAc,CAAlB,EACA;uBACW,IAAP;;gBAEAvB,QAAQmB,OAAOG,OAAKC,IAAZ,CAAZ;gBACIvB,QAAQ,CAAC,CAAb,EACA;wBACY,CAAC,CAAT;;gBAEAA,QAAQ,CAAZ,EACA;wBACY,CAAR;;mBAEG/S,KAAKuU,IAAL,CAAUxB,KAAV,CAAP;;;;qCAGUoB,MA7GlB,EA8GI;gBACQnR,QAAQ,KAAKwR,SAAL,CAAeL,MAAf,CAAZ;mBACQnR,UAAU,IAAX,GAAmB,IAAnB,GAA2BA,SAASkN,SAA3C;;;;yCAGciE,MAnHtB,EAoHI;gBACQnR,QAAQ,KAAKwR,SAAL,CAAeL,MAAf,CAAZ;mBACQnR,UAAU,IAAX,GAAmB,IAAnB,GAA2BhD,KAAK8Q,GAAL,CAAS9N,QAAQhD,KAAKiD,EAAtB,KAA6BiN,SAA/D;;;;0CAGeiE,MAzHvB,EA0HI;gBACQD,MAAM,KAAKA,GAAL,CAASC,MAAT,CAAV;mBACQD,QAAQ,IAAT,GAAiB,IAAjB,GAAyBlU,KAAK8Q,GAAL,CAASoD,GAAT,KAAiBhE,SAAjD;;;;4BAGCiE,MA/HT,EAgII;gBACQC,IAAID,OAAO/D,QAAP,IAAmB+D,MAA3B;gBACI,KAAK/D,QAAL,CAAclZ,MAAd,KAAyBkd,EAAEld,MAA/B,EACA;uBACW,IAAP;;mBAEG,KAAKP,GAAL,CAAS,UAASiJ,CAAT,EAAYxH,CAAZ,EAAe;uBAASwH,IAAIwU,EAAEhc,IAAE,CAAJ,CAAX;aAA1B,CAAP;;;;iCAGM+b,MAzId,EA0II;gBACQC,IAAID,OAAO/D,QAAP,IAAmB+D,MAA3B;gBACI,KAAK/D,QAAL,CAAclZ,MAAd,KAAyBkd,EAAEld,MAA/B,EACA;uBACW,IAAP;;mBAEG,KAAKP,GAAL,CAAS,UAASiJ,CAAT,EAAYxH,CAAZ,EACZ;uBACWwH,IAAIwU,EAAEhc,IAAE,CAAJ,CAAX;aAFD,CAAP;;;;iCAMMyG,CAtJd,EAuJI;mBACW,KAAKlI,GAAL,CAAS,UAASiJ,CAAT,EACZ;uBACWA,IAAEf,CAAT;aAFD,CAAP;;;;4BAMCsV,MA9JT,EA+JI;gBACQC,IAAID,OAAO/D,QAAP,IAAmB+D,MAA3B;gBACOM,UAAU,CAAjB;gBAAoBjE,IAAI,KAAKJ,QAAL,CAAclZ,MAAtC;gBACIsZ,MAAM4D,EAAEld,MAAZ,EACA;uBACW,IAAP;;mBAEGsZ,GAAP,EACA;2BACe,KAAKJ,QAAL,CAAcI,CAAd,IAAmB4D,EAAE5D,CAAF,CAA9B;;mBAEGiE,OAAP;;;;8BAGGN,MA7KX,EA8KI;gBACQO,IAAIP,OAAO/D,QAAP,IAAmB+D,MAA3B;gBACI,KAAK/D,QAAL,CAAclZ,MAAd,KAAyB,CAAzB,IAA8Bwd,EAAExd,MAAF,KAAa,CAA/C,EACA;uBACW,IAAP;;gBAEAyd,IAAI,KAAKvE,QAAb;mBACO,IAAIE,MAAJ,CAAW,CACbqE,EAAE,CAAF,IAAOD,EAAE,CAAF,CAAR,GAAiBC,EAAE,CAAF,IAAOD,EAAE,CAAF,CADV,EAEbC,EAAE,CAAF,IAAOD,EAAE,CAAF,CAAR,GAAiBC,EAAE,CAAF,IAAOD,EAAE,CAAF,CAFV,EAGbC,EAAE,CAAF,IAAOD,EAAE,CAAF,CAAR,GAAiBC,EAAE,CAAF,IAAOD,EAAE,CAAF,CAHV,CAAX,CAAP;;;;8BAQJ;gBACQnD,IAAI,CAAR;gBAAWnZ,IAAI,KAAKgY,QAAL,CAAclZ,MAA7B;mBACOkB,GAAP,EACA;oBACQ4H,KAAK8Q,GAAL,CAAS,KAAKV,QAAL,CAAchY,CAAd,CAAT,IAA6B4H,KAAK8Q,GAAL,CAASS,CAAT,CAAjC,EACA;wBACQ,KAAKnB,QAAL,CAAchY,CAAd,CAAJ;;;mBAGDmZ,CAAP;;;;gCAGK3R,CAzMb,EA0MI;gBACQuN,QAAQ,IAAZ;gBAAkBqD,IAAI,KAAKJ,QAAL,CAAclZ,MAApC;iBACK,IAAIkB,IAAI,CAAb,EAAgBA,IAAIoY,CAApB,EAAuBpY,GAAvB,EACA;oBACQ+U,UAAU,IAAV,IAAkB,KAAKiD,QAAL,CAAchY,CAAd,MAAqBwH,CAA3C,EACA;4BACYxH,IAAI,CAAZ;;;mBAGD+U,KAAP;;;;2CAIJ;mBACWgD,OAAO0C,QAAP,CAAgB,KAAKzC,QAArB,CAAP;;;;gCAIJ;mBACW,KAAKzZ,GAAL,CAAS,UAASiJ,CAAT,EACZ;uBACWI,KAAKwS,KAAL,CAAW5S,CAAX,CAAP;aAFD,CAAP;;;;+BAMIA,CAnOZ,EAoOI;mBACW,KAAKjJ,GAAL,CAAS,UAASkJ,CAAT,EACZ;uBACYG,KAAK8Q,GAAL,CAASjR,IAAID,CAAb,KAAmBsQ,SAApB,GAAiCtQ,CAAjC,GAAqCC,CAA5C;aAFD,CAAP;;;;qCAMU+U,GA3OlB,EA4OI;gBACQA,IAAIC,MAAJ,IAAeD,IAAIE,KAAJ,IAAaF,IAAIG,GAApC,EACA;uBACWH,IAAII,YAAJ,CAAiB,IAAjB,CAAP;;gBAEAZ,IAAIQ,IAAIxE,QAAJ,IAAgBwE,GAAxB;gBACIR,EAAEld,MAAF,KAAa,KAAKkZ,QAAL,CAAclZ,MAA/B,EACA;uBACW,IAAP;;gBAEAma,MAAM,CAAV;gBAAa4D,IAAb;iBACKlb,IAAL,CAAU,UAAS6F,CAAT,EAAYxH,CAAZ,EACN;uBACWwH,IAAIwU,EAAEhc,IAAE,CAAJ,CAAX;uBACO6c,OAAOA,IAAd;aAHR;mBAKOjV,KAAK8C,IAAL,CAAUuO,GAAV,CAAP;;;;+BAGI6D,IA/PZ,EAgQI;mBACWA,KAAKC,QAAL,CAAc,IAAd,CAAP;;;;+BAGIC,KApQZ,EAqQI;mBACWA,MAAMD,QAAN,CAAe,IAAf,CAAP;;;;+BAGI/I,CAzQZ,EAyQewI,GAzQf,EA0QI;gBACQR,CAAJ;gBAAOiB,IAAI,IAAX;gBAAiBzV,CAAjB;gBAAoBC,CAApB;gBAAuB8H,CAAvB;gBACIyE,EAAE0F,WAAN,EACA;oBACQ1F,EAAEgE,QAAN;;oBAEI,KAAKA,QAAL,CAAclZ,MAAtB;qBAES,CAAL;;4BAEQ0d,IAAIxE,QAAJ,IAAgBwE,GAApB;4BACIR,EAAEld,MAAF,KAAa,CAAjB,EACA;mCACW,IAAP;;4BAEA,CAACme,CAAL,EACA;gCACQlF,OAAO2C,QAAP,CAAgB1G,CAAhB,EAAmBgE,QAAvB;;4BAEA,KAAKA,QAAL,CAAc,CAAd,IAAmBgE,EAAE,CAAF,CAAvB;4BACI,KAAKhE,QAAL,CAAc,CAAd,IAAmBgE,EAAE,CAAF,CAAvB;+BACO,IAAI9D,MAAJ,CAAW,CACd8D,EAAE,CAAF,IAAOiB,EAAE,CAAF,EAAK,CAAL,IAAUzV,CAAjB,GAAqByV,EAAE,CAAF,EAAK,CAAL,IAAUxV,CADjB,EAEduU,EAAE,CAAF,IAAOiB,EAAE,CAAF,EAAK,CAAL,IAAUzV,CAAjB,GAAqByV,EAAE,CAAF,EAAK,CAAL,IAAUxV,CAFjB,CAAX,CAAP;;;qBAMC,CAAL;;4BAEQ,CAAC+U,IAAIU,SAAT,EACA;mCACW,IAAP;;4BAEAC,IAAIX,IAAIY,cAAJ,CAAmB,IAAnB,EAAyBpF,QAAjC;4BACI,CAACiF,CAAL,EACA;gCACQlF,OAAO2C,QAAP,CAAgB1G,CAAhB,EAAmBwI,IAAIU,SAAvB,EAAkClF,QAAtC;;4BAEA,KAAKA,QAAL,CAAc,CAAd,IAAmBmF,EAAE,CAAF,CAAvB;4BACI,KAAKnF,QAAL,CAAc,CAAd,IAAmBmF,EAAE,CAAF,CAAvB;4BACI,KAAKnF,QAAL,CAAc,CAAd,IAAmBmF,EAAE,CAAF,CAAvB;+BACO,IAAIjF,MAAJ,CAAW,CACdiF,EAAE,CAAF,IAAOF,EAAE,CAAF,EAAK,CAAL,IAAUzV,CAAjB,GAAqByV,EAAE,CAAF,EAAK,CAAL,IAAUxV,CAA/B,GAAmCwV,EAAE,CAAF,EAAK,CAAL,IAAU1N,CAD/B,EAEd4N,EAAE,CAAF,IAAOF,EAAE,CAAF,EAAK,CAAL,IAAUzV,CAAjB,GAAqByV,EAAE,CAAF,EAAK,CAAL,IAAUxV,CAA/B,GAAmCwV,EAAE,CAAF,EAAK,CAAL,IAAU1N,CAF/B,EAGd4N,EAAE,CAAF,IAAOF,EAAE,CAAF,EAAK,CAAL,IAAUzV,CAAjB,GAAqByV,EAAE,CAAF,EAAK,CAAL,IAAUxV,CAA/B,GAAmCwV,EAAE,CAAF,EAAK,CAAL,IAAU1N,CAH/B,CAAX,CAAP;;;;;+BASO,IAAP;;;;;;qCAKEiN,GAjUlB,EAkUI;gBACQA,IAAIC,MAAR,EACA;;oBAEQY,IAAI,KAAKrF,QAAL,CAAcxZ,KAAd,EAAR;oBACI2e,IAAIX,IAAIY,cAAJ,CAAmBC,CAAnB,EAAsBrF,QAA9B;uBACO,IAAIE,MAAJ,CAAW,CAACiF,EAAE,CAAF,KAAQA,EAAE,CAAF,IAAOE,EAAE,CAAF,CAAf,CAAD,EAAuBF,EAAE,CAAF,KAAQA,EAAE,CAAF,IAAOE,EAAE,CAAF,CAAf,CAAvB,EAA6CF,EAAE,CAAF,KAAQA,EAAE,CAAF,KAAQE,EAAE,CAAF,KAAQ,CAAhB,CAAR,CAA7C,CAAX,CAAP;aALJ,MAQA;;oBAEQC,IAAId,IAAIxE,QAAJ,IAAgBwE,GAAxB;oBACI,KAAKxE,QAAL,CAAclZ,MAAd,KAAyBwe,EAAExe,MAA/B,EACA;2BACW,IAAP;;uBAEG,KAAKP,GAAL,CAAS,UAASiJ,CAAT,EAAYxH,CAAZ,EAAe;2BAASsd,EAAEtd,IAAE,CAAJ,KAAUsd,EAAEtd,IAAE,CAAJ,IAASwH,CAAnB,CAAP;iBAA1B,CAAP;;;;;+BAKR;gBACQwU,IAAI,KAAK3C,GAAL,EAAR;oBACQ2C,EAAEhE,QAAF,CAAWlZ,MAAnB;qBAES,CAAL;;;;qBAIK,CAAL;;0BAEMkZ,QAAF,CAAW/X,IAAX,CAAgB,CAAhB;;;;;+BAKO,IAAP;;;mBAGD+b,CAAP;;;;kCAIJ;mBACW,MAAM,KAAKhE,QAAL,CAAcuC,IAAd,CAAmB,IAAnB,CAAN,GAAiC,GAAxC;;;;oCAGS3B,GAjXjB,EAkXI;iBACSZ,QAAL,GAAgB,CAACY,IAAIZ,QAAJ,IAAgBY,GAAjB,EAAsBpa,KAAtB,EAAhB;mBACO,IAAP;;;;;;;kCAKJ;mBACW,KAAKwZ,QAAZ;;;;;;AAIRE,OAAOiD,MAAP,GAAgB,UAAS/C,CAAT,EAChB;QACQJ,WAAW,EAAf;WACOI,GAAP,EACA;iBACanY,IAAT,CAAc2H,KAAKyT,MAAL,EAAd;;WAEG,IAAInD,MAAJ,CAAWF,QAAX,CAAP;CAPJ;;AAUAE,OAAOkD,IAAP,GAAc,UAAShD,CAAT,EACd;QACQJ,WAAW,EAAf;WACOI,GAAP,EACA;iBACanY,IAAT,CAAc,CAAd;;WAEG,IAAIiY,MAAJ,CAAWF,QAAX,CAAP;CAPJ;;AAUAE,OAAO/T,SAAP,CAAiBqD,CAAjB,GAAqB0Q,OAAO/T,SAAP,CAAiB0X,QAAtC;AACA3D,OAAO/T,SAAP,CAAiBxC,IAAjB,GAAwBuW,OAAO/T,SAAP,CAAiBrE,OAAzC;;AAEAoY,OAAOlY,CAAP,GAAW,IAAIkY,MAAJ,CAAW,CAAC,CAAD,EAAG,CAAH,EAAK,CAAL,CAAX,CAAX;AACAA,OAAO3R,CAAP,GAAW,IAAI2R,MAAJ,CAAW,CAAC,CAAD,EAAG,CAAH,EAAK,CAAL,CAAX,CAAX;AACAA,OAAOzR,CAAP,GAAW,IAAIyR,MAAJ,CAAW,CAAC,CAAD,EAAG,CAAH,EAAK,CAAL,CAAX,CAAX;;AC1ZA,IAAMqF,mBAAmB,SAAnBA,gBAAmB,CAACpe,MAAD,EAASyR,QAAT,EAAmByD,GAAnB,EAA2B;MAC5CmJ,YAAY,EAAlB;;MAEM7a,IAAIjC,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,CAAV;MACMyX,OAAO1V,EAAE7D,MAAf;MACM2L,IAAI,GAAV,CALkD;OAM7C,IAAIzK,IAAI,CAAb,EAAgBA,IAAIqY,IAApB,EAA0B,EAAErY,CAA5B,EAA+B;;QAEvBwH,IAAIoJ,SAASjO,EAAE3C,CAAF,CAAT,CAAV;QACMyH,IAAItI,OAAOyB,UAAP,CAAkB+B,EAAE3C,CAAF,CAAlB,EAAwBqB,MAAxB,CAA+BgT,IAAI1R,EAAE3C,CAAF,CAAJ,CAA/B,CAAV;cACUC,IAAV,CAAe,IAAIiY,MAAJ,CAAW,CAAC1Q,CAAD,EAAIC,CAAJ,CAAX,CAAf;;;QAGIzH,IAAIqY,OAAO,CAAf,EAAkB;UACVoF,KAAKjW,IAAIiD,KAAKmG,SAASjO,EAAE3C,IAAI,CAAN,CAAT,IAAqBwH,CAA1B,CAAf;UACIkW,KAAKjW,IAAIgD,KAAKtL,OAAOyB,UAAP,CAAkB+B,EAAE3C,IAAI,CAAN,CAAlB,EAA4BqB,MAA5B,CAAmCgT,IAAI1R,EAAE3C,IAAI,CAAN,CAAJ,CAAnC,IAAoDyH,CAAzD,CAAb;UACItI,OAAOgV,eAAP,KAA2B,IAA/B,EAAqC;YAC7BwJ,eAAexe,OAAOye,gBAAP,CAClBC,GADkB,CAEjB1e,OAAOyB,UAAP,CAAkBzB,OAAOgV,eAAzB,EAA0C9S,MAA1C,CACEgT,IAAIlV,OAAOgV,eAAX,CADF,CAFiB,EAMlB0J,GANkB,CAMdlb,EAAE3C,CAAF,CANc,CAArB;YAOM8d,gBAAgB3e,OAAOye,gBAAP,CACnBC,GADmB,CAElB1e,OAAOyB,UAAP,CAAkBzB,OAAOgV,eAAzB,EAA0C9S,MAA1C,CACEgT,IAAIlV,OAAOgV,eAAX,CADF,CAFkB,EAMnB0J,GANmB,CAMflb,EAAE3C,IAAI,CAAN,CANe,CAAtB;YAOI+d,WAAW,OAAOJ,eAAeG,aAAtB,CAAf;aACKC,WAAW,CAAC,IAAI5e,OAAO6e,gBAAZ,KAAiCN,KAAKK,QAAtC,CAAhB;;gBAEQ9d,IAAV,CAAe,IAAIiY,MAAJ,CAAW,CAACuF,EAAD,EAAKC,EAAL,CAAX,CAAf;;;;SAIGF,SAAP;CAtCF;;ACAA,IAAMS,uBAAuB,SAAvBA,oBAAuB,CAACC,UAAD,EAAaV,SAAb,EAA2B;MAChDnF,OAAOmF,UAAU1e,MAAvB;MACM2L,IAAIyT,UAAV;MACMC,MAAM,EAAZ;;MAEIle,IAAJ,CAASud,UAAU,CAAV,CAAT;MACIvd,IAAJ,CACE,IAAIiY,MAAJ,CAAW,CACTsF,UAAU,CAAV,EAAaxX,CAAb,CAAe,CAAf,IAAoByE,IAAI,CAAJ,IAAS+S,UAAU,CAAV,EAAaxX,CAAb,CAAe,CAAf,IAAoBwX,UAAU,CAAV,EAAaxX,CAAb,CAAe,CAAf,CAA7B,CADX,EAETwX,UAAU,CAAV,EAAaxX,CAAb,CAAe,CAAf,CAFS,CAAX,CADF;OAMK,IAAImS,MAAM,CAAf,EAAkBA,MAAME,OAAO,CAA/B,EAAkC,EAAEF,GAApC,EAAyC;QACnCiG,MAAMZ,UAAUrF,GAAV,CAAV;QACI5Y,OAAOie,UAAUrF,MAAM,CAAhB,CAAX;QACI7Y,QAAQke,UAAUrF,MAAM,CAAhB,CAAZ;;QAEIkG,OAAO9e,KAAK+e,QAAL,CAAchf,KAAd,CAAX;QACIW,IAAJ,CAASme,IAAI3f,GAAJ,CAAQ4f,KAAK7W,CAAL,CAAOiD,CAAP,CAAR,CAAT;QACIxK,IAAJ,CAASme,GAAT;QACIne,IAAJ,CAASme,IAAIE,QAAJ,CAAaD,KAAK7W,CAAL,CAAOiD,CAAP,CAAb,CAAT;;;MAGExK,IAAJ,CACE,IAAIiY,MAAJ,CAAW,CACTsF,UAAUnF,OAAO,CAAjB,EAAoBrS,CAApB,CAAsB,CAAtB,IACEyE,IAAI,CAAJ,IAAS+S,UAAUnF,OAAO,CAAjB,EAAoBrS,CAApB,CAAsB,CAAtB,IAA2BwX,UAAUnF,OAAO,CAAjB,EAAoBrS,CAApB,CAAsB,CAAtB,CAApC,CAFO,EAGTwX,UAAUnF,OAAO,CAAjB,EAAoBrS,CAApB,CAAsB,CAAtB,CAHS,CAAX,CADF;MAOI/F,IAAJ,CAASud,UAAUnF,OAAO,CAAjB,CAAT;;SAEO8F,GAAP;CAhCF;;ACFA;AACA;AAIA,IAAMI,cAAc,SAAdA,WAAc,CAACpf,MAAD,EAASyR,QAAT,EAAmB7Q,CAAnB,EAAsByR,GAAtB,EAA8B;MAC1CgM,YAAYD,iBAAiBpe,MAAjB,EAAyByR,QAAzB,EAAmC7Q,CAAnC,CAAlB;MACMoe,MAAMF,qBAAqB9e,OAAO+e,UAA5B,EAAwCV,SAAxC,CAAZ;;MAEIgB,MAAJ,CAAWL,IAAI,CAAJ,EAAOnY,CAAP,CAAS,CAAT,CAAX,EAAwBmY,IAAI,CAAJ,EAAOnY,CAAP,CAAS,CAAT,CAAxB;;OAEK,IAAIhG,IAAI,CAAb,EAAgBA,IAAIme,IAAIrf,MAAxB,EAAgCkB,KAAK,CAArC,EAAwC;QAClCb,OAAOsf,iBAAX,EAA8B;WACvB,IAAIlY,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;YACtB2G,QAAJ,CAAaiR,IAAIne,IAAIuG,CAAR,EAAWP,CAAX,CAAa,CAAb,CAAb,EAA8BmY,IAAIne,IAAIuG,CAAR,EAAWP,CAAX,CAAa,CAAb,CAA9B,EAA+C,CAA/C,EAAkD,CAAlD;;;QAGA0Y,aAAJ,CACEP,IAAIne,CAAJ,EAAOgG,CAAP,CAAS,CAAT,CADF,EAEEmY,IAAIne,CAAJ,EAAOgG,CAAP,CAAS,CAAT,CAFF,EAGEmY,IAAIne,IAAI,CAAR,EAAWgG,CAAX,CAAa,CAAb,CAHF,EAIEmY,IAAIne,IAAI,CAAR,EAAWgG,CAAX,CAAa,CAAb,CAJF,EAKEmY,IAAIne,IAAI,CAAR,EAAWgG,CAAX,CAAa,CAAb,CALF,EAMEmY,IAAIne,IAAI,CAAR,EAAWgG,CAAX,CAAa,CAAb,CANF;;CAZJ;;;AAwBA,IAAM2Y,kBAAkB,SAAlBA,eAAkB,SAAU;MAC5Bxf,OAAOkS,kBAAP,KAA8B,QAAlC,EAA4C;WACnCzH,EAAEzK,MAAF,IAAY,CAAnB;GADF,MAEO,IAAIA,OAAOkS,kBAAP,KAA8B,KAAlC,EAAyC;WACvC,CAAP;GADK,MAEA;YACGuN,GAAR,CACE,kFADF;;SAIKhV,EAAEzK,MAAF,IAAY,CAAnB;CAVF;;AAaA,IAAM0f,aAAa,SAAbA,UAAa,CAAC1f,MAAD,EAASyR,QAAT,EAAmB7Q,CAAnB,EAAsByR,GAAtB,EAA8B;SACxC7Q,IAAP,CAAYxB,OAAOyB,UAAnB,EACGrC,GADH,CACO;WAAK,CACRqS,SAASjO,CAAT,CADQ,EAER5C,EAAE4C,CAAF,MAAS1B,SAAT,GACI0d,gBAAgBxf,MAAhB,CADJ,GAEIA,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BtB,EAAE4C,CAAF,CAA5B,CAJI,CAAL;GADP,EAOGuP,IAPH,CAOQ,UAACzH,CAAD,EAAIjF,CAAJ;WAAUiF,EAAE,CAAF,IAAOjF,EAAE,CAAF,CAAjB;GAPR,EAQG1F,OARH,CAQW,UAAC6C,CAAD,EAAI3C,CAAJ,EAAU;UACX,CAAN,GAAUwR,IAAIgN,MAAJ,CAAW7b,EAAE,CAAF,CAAX,EAAiBA,EAAE,CAAF,CAAjB,CAAV,GAAmC6O,IAAIsN,MAAJ,CAAWnc,EAAE,CAAF,CAAX,EAAiBA,EAAE,CAAF,CAAjB,CAAnC;GATJ;CADF;;;AAeA,IAAMoc,YAAY,SAAZA,SAAY,CAAC5f,MAAD,EAASyR,QAAT,EAAmB7Q,CAAnB,EAAsByR,GAAtB,EAA8B;MAC1CgE,SAAJ;MAEGrW,OAAOgV,eAAP,KAA2B,IAA3B,IAAmChV,OAAO6e,gBAAP,GAA0B,CAA9D,IACA7e,OAAO+e,UAAP,GAAoB,CAFtB,EAGE;gBACY/e,MAAZ,EAAoByR,QAApB,EAA8B7Q,CAA9B,EAAiCyR,GAAjC;GAJF,MAKO;eACMrS,MAAX,EAAmByR,QAAnB,EAA6B7Q,CAA7B,EAAgCyR,GAAhC;;MAEEiE,MAAJ;CAVF;;ACzDA,IAAMuJ,WAAW,SAAXA,QAAW;SAAM,OAAOzD,CAAP,KAAa,UAAb,GAA0BA,CAA1B,GAA8B;WAAMA,CAAN;GAApC;CAAjB;;ACGA,IAAM0D,WAAW,SAAXA,QAAW,CAAC9f,MAAD,EAASqS,GAAT,EAAcZ,QAAd;SAA2B,UAAC7Q,CAAD,EAAIC,CAAJ,EAAU;QAChDmT,MAAJ,CAAWV,WAAX,GAAyByM,SAAQ/f,OAAOuT,KAAf,EAAsB3S,CAAtB,EAAyBC,CAAzB,CAAzB;WACO+e,UAAU5f,MAAV,EAAkByR,QAAlB,EAA4B7Q,CAA5B,EAA+ByR,IAAI2B,MAAnC,CAAP;GAFe;CAAjB;;AAKA,IAAMgM,sBAAsB,SAAtBA,mBAAsB,CAAChgB,MAAD,EAASmB,EAAT,EAAakR,GAAb,EAAkBZ,QAAlB;SAA+B,YAAM;OAC5D5R,KAAH,CAAS,QAAT;;QAEIG,OAAOgU,MAAP,CAAcrU,MAAlB,EAA0B;aACjBqU,MAAP,CAAcrT,OAAd,CAAsBmf,SAAS9f,MAAT,EAAiBqS,GAAjB,EAAsBZ,QAAtB,CAAtB;;GAJwB;CAA5B;;AAQA,IAAMwO,oBAAoB,SAApBA,iBAAoB,CAACjgB,MAAD,EAASkgB,WAAT;SAAyB,YAAM;QACnDlgB,OAAOgU,MAAX,EAAmB;kBACLhU,OAAOgU,MAAnB;KADF,MAEO;kBACO,EAAZ,EADK;;GAHiB;CAA1B;;AAQA,IAAMqD,eAAe,SAAfA,YAAe,CAACrX,MAAD,EAASmB,EAAT,EAAaiD,MAAb;SACnB,YAAW;QACL,CAAC7C,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+B9B,MAApC,EAA4CwB,GAAG2T,gBAAH;;OAEzCuC,YAAH,CAAgBrX,OAAOyQ,IAAvB;WACO7N,IAAP,CAAY,QAAZ,EAAsB,IAAtB;WACO,IAAP;GANiB;CAArB;;ACpBA,IAAMud,cAAc,SAAdA,WAAc,CAACngB,MAAD,EAASqS,GAAT,EAAcZ,QAAd;SAA2B,UAAC7Q,CAAD,EAAIC,CAAJ,EAAU;QACnDb,OAAO6T,YAAP,KAAwB,IAA5B,EAAkC;UAC5B3Q,OAAJ,CAAYoQ,WAAZ,GAA0ByM,SAAQ/f,OAAO6T,YAAf,EAA6BjT,CAA7B,EAAgCC,CAAhC,CAA1B;KADF,MAEO;UACDqC,OAAJ,CAAYoQ,WAAZ,GAA0ByM,SAAQ/f,OAAOuT,KAAf,EAAsB3S,CAAtB,EAAyBC,CAAzB,CAA1B;;WAEK+e,UAAU5f,MAAV,EAAkByR,QAAlB,EAA4B7Q,CAA5B,EAA+ByR,IAAInP,OAAnC,CAAP;GANkB;CAApB;;AASA,IAAMkd,uBAAuB,SAAvBA,oBAAuB,CAACpgB,MAAD,EAASqS,GAAT,EAAcZ,QAAd,EAAwBtQ,EAAxB,EAA4BmC,UAA5B;SAA2C,YAAM;OACzEzD,KAAH,CAAS,SAAT;;QAEIwY,UAAUrY,MAAV,EAAkBsD,UAAlB,KAAiCtD,OAAOkD,OAAP,KAAmB,KAAxD,EAA+D;aACtDA,OAAP,CAAevC,OAAf,CAAuBwf,YAAYngB,MAAZ,EAAoBqS,GAApB,EAAyBZ,QAAzB,CAAvB;;GAJyB;CAA7B;;AAQA,IAAM4O,qBAAqB,SAArBA,kBAAqB,CAACrgB,MAAD,EAASsD,UAAT,EAAqBgd,YAArB;SAAsC,YAAM;QACjEjI,UAAUrY,MAAV,EAAkBsD,UAAlB,CAAJ,EAAmC;mBACpBtD,OAAOkD,OAApB;KADF,MAEO;mBACQ,EAAb,EADK;;GAHkB;CAA3B;;AAQA,IAAMH,gBAAgB,SAAhBA,aAAgB,CAAC/C,MAAD,EAASmB,EAAT,EAAaiD,MAAb;SACpB,YAAW;QACL,CAAC7C,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+B9B,MAApC,EAA4CwB,GAAG2T,gBAAH;;OAEzC/R,aAAH,CAAiB/C,OAAOyQ,IAAxB;WACO7N,IAAP,CAAY,QAAZ,EAAsB,IAAtB;WACO,IAAP;GANkB;CAAtB;;AC3BA,IAAMI,eAAa,SAAbA,UAAa;SACjB,UAASC,SAAT,EAAoB;QACZsd,gBAAgB,EAAtB;SACK,IAAInZ,IAAI,CAAb,EAAgBA,IAAIpH,OAAOoB,OAAP,CAAezB,MAAnC,EAA2CyH,GAA3C,EAAgD;UAC1CpH,OAAOoB,OAAP,CAAegG,CAAf,EAAkBxI,IAAlB,KAA2BqE,SAA/B,EAA0C;sBAC1BnC,IAAd,CAAmBd,OAAOoB,OAAP,CAAegG,CAAf,CAAnB;;;;WAIGhG,OAAP,GAAiBmf,aAAjB;WACOrd,OAAP,GAAiB,KAAjB;;QAEI/B,GAAGmB,CAAH,OAAWR,SAAf,EAA0B;UAClBsN,QAAQjO,GACXmB,CADW,GAEXC,SAFW,CAED,QAFC,EAGX6M,KAHW,EAAd;WAIK,IAAIvO,IAAI,CAAb,EAAgBA,IAAIuO,MAAMzP,MAA1B,EAAkCkB,GAAlC,EAAuC;YACjCuO,MAAMvO,CAAN,EAASwO,QAAT,KAAsBpM,SAA1B,EAAqC;;iBAE5BR,OAAO2M,MAAMvO,CAAN,CAAP,EAAiBuO,KAAjB,GAAyB,CAAzB,EAA4BsF,UAAnC,EACGnS,SADH,CACa,QADb,EAEGqD,MAFH;iBAGOnE,UAAP,CAAkBwB,SAAlB,EAA6BpB,KAA7B,CAAmCgB,IAAnC,CAAwCJ,OAAO2M,MAAMvO,CAAN,CAAP,EAAiB,IAAjB,CAAxC;;;;;WAKC,IAAP;GA5Be;CAAnB;;ACFA;AACA,IAAM2f,SAAS,SAATA,MAAS,IAAK;SACX,GAAGvZ,QAAH,CACJrE,IADI,CACCwZ,CADD,EAEJqE,KAFI,CAEE,eAFF,EAEmB,CAFnB,EAGJC,WAHI,EAAP;CADF;;ACDA;AACA,IAAMzZ,WAAW,SAAXA,QAAW;SAAU;WACzB,2BACA1F,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+B9B,MAD/B,GAEA,eAFA,GAGA4B,OAAOC,IAAP,CAAYxB,OAAOpB,IAAP,CAAY,CAAZ,CAAZ,EAA4Be,MAH5B,GAIA,YAJA,GAKAK,OAAOpB,IAAP,CAAYe,MALZ,GAMA,OAPyB;GAAV;CAAjB;;ACDA;AACA,IAAMghB,gBAAgB,SAAhBA,aAAgB,MAAO;MACvBC,MAAM,EAAV;OACK,IAAI/f,IAAI,CAAb,EAAgBA,IAAIggB,IAAIlhB,MAAJ,GAAa,CAAjC,EAAoCkB,GAApC,EAAyC;QACnCC,IAAJ,CAAS,CAAC+f,IAAIhgB,CAAJ,CAAD,EAASggB,IAAIhgB,IAAI,CAAR,CAAT,CAAT;;SAEK+f,GAAP;CALF;;ACIA,IAAME,gBAAgB,SAAhBA,aAAgB,CAAC9gB,MAAD,EAASqS,GAAT,EAAcZ,QAAd;SAA2B,UAAC7Q,CAAD,EAAIC,CAAJ,EAAU;QACrDiT,SAAJ,CAAcR,WAAd,GAA4ByM,SAAQ/f,OAAOuT,KAAf,EAAsB3S,CAAtB,EAAyBC,CAAzB,CAA5B;WACO+e,UAAU5f,MAAV,EAAkByR,QAAlB,EAA4B7Q,CAA5B,EAA+ByR,IAAIyB,SAAnC,CAAP;GAFoB;CAAtB;;;AAMA,IAAMA,YAAY,SAAZA,SAAY,CAAC9T,MAAD,EAASmB,EAAT,EAAa8L,MAAb,EAAqB7I,MAArB,EAA6BiO,GAA7B,EAAkCZ,QAAlC;SAChB,YAAsB;QAAb7S,IAAa,uEAAN,IAAM;;QAChBA,SAAS,IAAb,EAAmB;aACVoB,OAAO4X,WAAd;;;WAGKA,WAAP,GAAqBhZ,IAArB;OACGiB,KAAH,CAAS,WAAT;cACU,CAACoN,OAAOC,UAAR,EAAoBD,OAAO/J,OAA3B,CAAV,EAA+C6d,OAA/C,CAAuD,OAAvD,EAAgE,IAAhE;SACKpgB,OAAL,CAAamgB,cAAc9gB,MAAd,EAAsBqS,GAAtB,EAA2BZ,QAA3B,CAAb;WACO7O,IAAP,CAAY,WAAZ,EAAyB,IAAzB,EAA+BhE,IAA/B;WACO,IAAP;GAXc;CAAlB;;ACTA;AACA,IAAMiZ,cAAc,SAAdA,WAAc,CAAC7X,MAAD,EAASmB,EAAT,EAAa8L,MAAb;SAClB,YAAW;WACF2K,WAAP,GAAqB,EAArB;OACG/X,KAAH,CAAS,WAAT;cACU,CAACoN,OAAOC,UAAR,EAAoBD,OAAO/J,OAA3B,CAAV,EAA+C6d,OAA/C,CAAuD,OAAvD,EAAgE,KAAhE;WACO,IAAP;GALgB;CAApB;;ACCA;AACA,IAAMhJ,OAAO,SAAPA,IAAO,CAAC/X,MAAD,EAASmB,EAAT,EAAa8L,MAAb,EAAqB7I,MAArB,EAA6BiO,GAA7B,EAAkCZ,QAAlC;SACX,YAAsB;QAAb7S,IAAa,uEAAN,IAAM;;QAChBA,SAAS,IAAb,EAAmB;aACVoB,OAAOgU,MAAd;;;;WAIKA,MAAP,GAAgBhU,OAAOgU,MAAP,CAAczU,MAAd,CAAqBX,IAArB,CAAhB;cACU,CAACqO,OAAOC,UAAR,EAAoBD,OAAO/J,OAA3B,CAAV,EAA+C6d,OAA/C,CAAuD,QAAvD,EAAiE,IAAjE;SACKpgB,OAAL,CAAamf,SAAS9f,MAAT,EAAiBqS,GAAjB,EAAsBZ,QAAtB,CAAb;WACO7O,IAAP,CAAY,MAAZ,EAAoB,IAApB,EAA0BhE,IAA1B;WACO,IAAP;GAXS;CAAb;;ACHA;AACA,IAAMkZ,SAAS,SAATA,MAAS,CAAC9X,MAAD,EAASmB,EAAT,EAAa8L,MAAb;SACb,YAAW;WACF+G,MAAP,GAAgB,EAAhB;OACGnU,KAAH,CAAS,QAAT;cACU,CAACoN,OAAOC,UAAR,EAAoBD,OAAO/J,OAA3B,CAAV,EAA+C6d,OAA/C,CAAuD,QAAvD,EAAiE,KAAjE;WACO,IAAP;GALW;CAAf;;ACHA,IAAMlL,aAAa,SAAbA,UAAa;SACjB,YAAW;OACNC,EAAH,CAAMlQ,MAAN;;WAEOzE,GAAG2U,EAAV;WACO,IAAP;GALe;CAAnB;;ACAA;;;;;;;;;;;AAWA,IAAMjX,SAAS,SAATA,MAAS,CAACmB,MAAD,EAASmB,EAAT,EAAaiD,MAAb;SACb,YAAW;;QAEL,CAAC7C,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+B9B,MAApC,EAA4C;SACvCmV,gBAAH;;OAEC1C,SAAH;;OAEGvT,MAAH,CAAUmB,OAAOyQ,IAAjB;;WAEO7N,IAAP,CAAY,QAAZ,EAAsB,IAAtB;WACO,IAAP;GAXW;CAAf;;ACRA,IAAMoe,iBAAiB,SAAjBA,cAAiB,CAAChhB,MAAD,EAASqS,GAAT,EAAcZ,QAAd;SAA2B,UAAC7Q,CAAD,EAAIC,CAAJ,EAAU;QACtDqM,UAAJ,CAAeoG,WAAf,GAA6ByM,SAAQ/f,OAAOuT,KAAf,EAAsB3S,CAAtB,EAAyBC,CAAzB,CAA7B;WACO+e,UAAU5f,MAAV,EAAkByR,QAAlB,EAA4B7Q,CAA5B,EAA+ByR,IAAInF,UAAnC,CAAP;GAFqB;CAAvB;;AAKA,IAAM+T,gBAAgB,SAAhBA,aAAgB,CAACjhB,MAAD,EAASmB,EAAT,EAAakR,GAAb,EAAkBZ,QAAlB;SAA+B,YAAM;OACtD5R,KAAH,CAAS,YAAT;OACGA,KAAH,CAAS,WAAT;;OAEGkD,aAAH,CAAiBme,OAAjB;OACG7J,YAAH,CAAgB6J,OAAhB;;WAEOtiB,IAAP,CAAY+B,OAAZ,CAAoBqgB,eAAehhB,MAAf,EAAuBqS,GAAvB,EAA4BZ,QAA5B,CAApB;GAPoB;CAAtB;;AAUA,IAAM0P,qBAAqB,SAArBA,kBAAqB,CAACnhB,MAAD,EAASmB,EAAT,EAAaigB,eAAb;SAAiC,YAAM;OAC7Dre,aAAH,CAAiBse,KAAjB;OACGhK,YAAH,CAAgBgK,KAAhB;oBACgBrhB,OAAOpB,IAAvB;GAHyB;CAA3B;;AChBA;AACA,IAAM0iB,sBAAsB,SAAtBA,mBAAsB;SAC1BC,WAAWnF,CAAX,KAAiBA,CAAjB,IAAsBA,MAAM,IAA5B,GAAmC,QAAnC,GAA8CoE,OAAOpE,CAAP,CADpB;CAA5B;;ACDA;AACA,IAAM9G,uBAAuB,SAAvBA,oBAAuB;SAC3B/T,OAAOC,IAAP,CAAY5C,KAAK,CAAL,CAAZ,EAAqB8C,MAArB,CAA4B,UAACC,GAAD,EAAMC,GAAN,EAAc;QAClCoM,MAAM3E,MAAM+D,OAAOxL,GAAP,CAAN,IAAqBA,GAArB,GAA2B4f,SAAS5f,GAAT,CAAvC;QACIoM,GAAJ,IAAWsT,oBAAoB1iB,KAAK,CAAL,EAAQgD,GAAR,CAApB,CAAX;;WAEOD,GAAP;GAJF,EAKG,EALH,CAD2B;CAA7B;;ACDA,IAAMmJ,0BAA0B,SAA1BA,uBAA0B;SAAU;WACxCvJ,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+BsR,IAA/B,CAAoC,UAAC1K,CAAD,EAAIC,CAAJ;aAClCmZ,UAAUzhB,OAAOyB,UAAP,CAAkB4G,CAAlB,EAAqBuN,KAA/B,EAAsC5V,OAAOyB,UAAP,CAAkB6G,CAAlB,EAAqBsN,KAA3D,CADkC;KAApC,CADwC;GAAV;CAAhC;;ACFA,IAAM8L,cAAc,SAAdA,WAAc;SAClB,YAAW;UACHA,WAAN,GAAoB,IAApB;WACO,IAAP;GAHgB;CAApB;;ACAA,IAAMC,UAAU,SAAVA,OAAU,CAACjQ,KAAD,EAAQvQ,EAAR;SACd,YAAW;UACHwgB,OAAN,GAAgB,IAAhB;OACGjJ,cAAH,CAAkB,GAAlB;OACG7Z,MAAH;WACO,IAAP;GALY;CAAhB;;ACEA;;;;;;;;AAQA,IAAM+iB,OAAO,SAAPA,IAAO,CAAC5hB,MAAD,EAASiN,MAAT,EAAiBoF,GAAjB,EAAyB;;;;;;;MAO9BlR,KAAK,SAALA,EAAK,CAASb,SAAT,EAAoB;gBACjBa,GAAGb,SAAH,GAAemC,OAAOnC,SAAP,CAA3B;;WAEOL,KAAP,GAAeK,UAAU+E,IAAV,GAAiBqI,WAAhC;WACOhD,MAAP,GAAgBpK,UAAU+E,IAAV,GAAiBsI,YAAjC;;KAEC,MAAD,EAAS,YAAT,EAAuB,SAAvB,EAAkC,QAAlC,EAA4C,WAA5C,EAAyDhN,OAAzD,CAAiE,iBAAS;aACjE6X,KAAP,IAAgBlY,UACbkF,MADa,CACN,QADM,EAEbC,IAFa,CAER,OAFQ,EAEC+S,KAFD,EAGbnT,IAHa,EAAhB;UAIImT,KAAJ,IAAavL,OAAOuL,KAAP,EAAc3K,UAAd,CAAyB,IAAzB,CAAb;KALF;;;OASGpE,GAAH,GAASnJ,UACNkF,MADM,CACC,KADD,EAENC,IAFM,CAED,OAFC,EAEQzF,OAAOC,KAFf,EAGNwF,IAHM,CAGD,QAHC,EAGSzF,OAAO0K,MAHhB,EAINhF,KAJM,CAIA,MAJA,EAIQ,iBAJR,EAKNA,KALM,CAKA,UALA,EAKY,UALZ,EAONF,MAPM,CAOC,OAPD,EAQNC,IARM,CASL,WATK,EAUL,eAAezF,OAAOE,MAAP,CAAcE,IAA7B,GAAoC,GAApC,GAA0CJ,OAAOE,MAAP,CAAcsK,GAAxD,GAA8D,GAVzD,CAAT;;WAaOrJ,EAAP;GA5BF;;;SAgCOA,EAAP;CAvCF;;ACVA,IAAM2P,OAAO,SAAPA,IAAO;SACX,UAASlQ,CAAT,EAAY;;WAEHa,UAAP,CAAkBb,CAAlB,EAAqBsB,MAArB,CAA4B1B,MAA5B,CACER,OAAOyB,UAAP,CAAkBb,CAAlB,EAAqBsB,MAArB,CAA4B1B,MAA5B,GAAqCsC,OAArC,EADF,EAFU;;WAMH,IAAP;GAPS;CAAb;;ACAA,IAAMgS,mBAAmB,SAAnBA,gBAAmB;SACvB,YAAW;OACNrT,UAAH,CAAcN,GAAGiU,sBAAH,EAAd;WACO,IAAP;GAHqB;CAAzB;;ACAA,IAAM7U,QAAQ,SAARA,KAAQ,CAACP,MAAD,EAASmB,EAAT;SACZ,UAASP,CAAT,EAAYJ,MAAZ,EAAoB;WACXiB,UAAP,CAAkBb,CAAlB,EAAqBsB,MAArB,CAA4B1B,MAA5B,CAAmCA,MAAnC;OACG3B,MAAH,CAAUqiB,OAAV;OACG1P,UAAH;;WAEO,IAAP;GANU;CAAd;;;;ACAA,IAAMqQ,gBAAgB;QACd,EADc;eAEP,EAFO;UAGZ,EAHY;cAIR,EAJQ;0BAKI,CALJ;WAMX,EANW;WAOX,KAPW;gBAQN,IARM;kBASJ,GATI;aAUT,GAVS;wBAWE,CAXF;QAYd,SAZc;mBAaH,CAbG;qBAcD,SAdC;oBAeF,EAfE;QAgBd,EAhBc;SAiBb,GAjBa;UAkBZ,GAlBY;UAmBZ,EAAErX,KAAK,EAAP,EAAWrK,OAAO,EAAlB,EAAsBwK,QAAQ,EAA9B,EAAkCvK,MAAM,EAAxC,EAnBY;sBAoBA,WApBA;6BAqBO,EAAEoK,KAAK,CAAP,EAAUrK,OAAO,CAAjB,EAAoBwK,QAAQ,CAA5B,EAA+BvK,MAAM,CAArC,EArBP;SAsBb,MAtBa;aAuBT,aAvBS;SAwBb,GAxBa;oBAyBF,GAzBE;mBA0BH,IA1BG;cA2BR,GA3BQ;qBA4BD,KA5BC;YA6BV,EA7BU;YA8BV,EA9BU;iBA+BL,IA/BK;gBAgCN;CAhChB;;;;ACOA,IAAM0hB,YAAY,SAAZA,SAAY,aAAc;MACxB9hB,SAASuB,OAAO0W,MAAP,CAAc,EAAd,EAAkB4J,aAAlB,EAAiCE,UAAjC,CAAf;;MAEIA,cAAcA,WAAWC,eAA7B,EAA8C;YACpCC,IAAR,CACE,oFADF;YAGQF,WAAWC,eAAnB,EAAoCrhB,OAApC,CAA4C,aAAK;UAC3CX,OAAOyB,UAAP,CAAkBb,EAAEoN,GAApB,CAAJ,EAA8B;eACrBvM,UAAP,CAAkBb,EAAEoN,GAApB,EAAyB4C,KAAzB,GAAiC5Q,OAAOyB,UAAP,CAAkBb,EAAEoN,GAApB,EAAyB4C,KAAzB,GAC7B5Q,OAAOyB,UAAP,CAAkBb,EAAEoN,GAApB,EAAyB4C,KADI,GAE7BhQ,EAAEnB,KAFN;OADF,MAIO;eACEgC,UAAP,CAAkBb,EAAEoN,GAApB,IAA2B;iBAClBpN,EAAEnB;SADX;;KANJ;;;MAaIyiB,aAAa,CACjB,QADiB,EAEjB,QAFiB,EAGjB,WAHiB,EAIjB,MAJiB,EAKjB,OALiB,EAMjB,UANiB,EAOjB,YAPiB,EAQjB,aARiB,EASjB3iB,MATiB,CASViC,KAAKxB,MAAL,CATU,CAAnB;;MAWMoE,SAAS+d,SAASC,KAAT,CAAe3a,OAAf,EAAqBya,UAArB,CAAf;MACExQ,QAAQ;eACK,KADL;iBAEO,KAFP;UAGA,KAHA;iBAIO,KAJP;WAKC;GANX;MAQE7G,SAAS4H,YARX;MASEwE,WAAW,EATb;MAUEzS,OAAOiS,WAAWjB,KAAX,CAAiB,CAAjB,CAVT;MAWEnD,MAAM,EAXR;MAYEpF,SAAS,EAZX;;MAcMpL,QAAQ;WACL;YACC;iBACK,iBAASV,EAAT,EAAa,EADlB;mBAEO,mBAASA,EAAT,EAAa,EAFpB;kBAGM,oBAAW;iBACZ,EAAP;SAJE;oBAMQ,sBAAW;iBACd,EAAP;;;KATM;UAaN,MAbM;eAcD,KAdC;iBAeC,uBAAW;aACf,KAAK2E,KAAL,CAAW,KAAK2K,IAAhB,CAAP;;GAhBJ;;SAoBO;kBAAA;kBAAA;0BAAA;gBAAA;kBAAA;sBAAA;cAAA;YAAA;kBAAA;;GAAP;CAjEF;;ACPA,IAAM4R,0BAA0B,SAA1BA,uBAA0B,CAACriB,MAAD,EAASY,CAAT,EAAe;MACvC6d,mBAAmB,IAAI6D,GAAJ,EAAzB;MACMC,gBAAgB,IAAID,GAAJ,EAAtB;;SAEO1jB,IAAP,CAAY+B,OAAZ,CAAoB,UAASuU,GAAT,EAAc;QAC5B/S,SAASnC,OAAOyB,UAAP,CAAkBb,CAAlB,EAAqBsB,MAArB,CAA4BgT,IAAItU,CAAJ,CAA5B,CAAb;QACI,CAAC2hB,cAAcC,GAAd,CAAkBrgB,MAAlB,CAAL,EAAgC;oBAChBsgB,GAAd,CAAkBtgB,MAAlB,EAA0B,CAA1B;;QAEEugB,QAAQH,cAAc7D,GAAd,CAAkBvc,MAAlB,CAAZ;kBACcsgB,GAAd,CAAkBtgB,MAAlB,EAA0BugB,QAAQ,CAAlC;GANF;;SASO9jB,IAAP,CAAY+B,OAAZ,CAAoB,UAASuU,GAAT,EAAc;WACzB1T,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+BrC,GAA/B,CAAmC,aAAK;UAClC+C,SAASnC,OAAOyB,UAAP,CAAkBb,CAAlB,EAAqBsB,MAArB,CAA4BgT,IAAItU,CAAJ,CAA5B,CAAb;UACI,CAAC6d,iBAAiB+D,GAAjB,CAAqBrgB,MAArB,CAAL,EAAmC;YAC3BwgB,OAAO,IAAIL,GAAJ,EAAb;yBACiBG,GAAjB,CAAqBtgB,MAArB,EAA6BwgB,IAA7B;;UAEE,CAAClE,iBAAiBC,GAAjB,CAAqBvc,MAArB,EAA6BqgB,GAA7B,CAAiChf,CAAjC,CAAL,EAA0C;yBACvBkb,GAAjB,CAAqBvc,MAArB,EAA6BsgB,GAA7B,CAAiCjf,CAAjC,EAAoC,CAApC;;UAEE/D,QAAQgf,iBAAiBC,GAAjB,CAAqBvc,MAArB,EAA6Buc,GAA7B,CAAiClb,CAAjC,CAAZ;eACSxD,OAAOyB,UAAP,CAAkB+B,CAAlB,EAAqBtB,MAArB,CAA4BgT,IAAI1R,CAAJ,CAA5B,IAAsC+e,cAAc7D,GAAd,CAAkBvc,MAAlB,CAA/C;uBACiBuc,GAAjB,CAAqBvc,MAArB,EAA6BsgB,GAA7B,CAAiCjf,CAAjC,EAAoC/D,KAApC;KAXF;GADF;;SAgBOgf,gBAAP;CA7BF;;;;ACKA,IAAMmE,UAAU,SAAVA,OAAU,CAAC/B,GAAD,EAAMgC,KAAN,EAAgB;QACxBliB,OAAN,CAAc,cAAM;WACXkgB,IAAIiC,EAAJ,CAAP;GADF;SAGOjC,GAAP;CAJF;;AAOA,IAAMkC,cAAc,SAAdA,WAAc,CAClB/iB,MADkB,EAElBqS,GAFkB,EAGlBlR,EAHkB,EAIlB0J,MAJkB,EAKlB6G,KALkB,EAMlB4O,YANkB,EAOlBJ,WAPkB,EAQlBkB,eARkB;SAUlBe,SACGC,KADH,CACS3a,OADT,EACelG,OAAOC,IAAP,CAAYxB,MAAZ,CADf,EAEGkF,EAFH,CAEM,WAFN,EAEmB,aAAK;QAChBgI,UAAJ,CAAeuG,wBAAf,GAA0C7S,EAAEnB,KAA5C;QACIyD,OAAJ,CAAYuQ,wBAAZ,GAAuC7S,EAAEnB,KAAzC;GAJJ,EAMGyF,EANH,CAMM,OANN,EAMe,aAAK;QACZgI,UAAJ,CAAeyG,WAAf,GAA6B/S,EAAEnB,KAA/B;QACIyD,OAAJ,CAAYyQ,WAAZ,GAA0B/S,EAAEnB,KAA5B;GARJ,EAUGyF,EAVH,CAUM,cAVN,EAUsB,aAAK;QACnBhC,OAAJ,CAAYoQ,WAAZ,GAA0B1S,EAAEnB,KAA5B;GAXJ,EAaGyF,EAbH,CAaM,OAbN,EAae;WAAK/D,GAAGmW,MAAH,EAAL;GAbf,EAcGpS,EAdH,CAcM,QAdN,EAcgB;WAAK/D,GAAGmW,MAAH,EAAL;GAdhB,EAeGpS,EAfH,CAeM,QAfN,EAegB;WAAK/D,GAAGmW,MAAH,EAAL;GAfhB,EAgBGpS,EAhBH,CAgBM,MAhBN,EAgBc,aAAK;iBACF1F,IAAb,CAAkBoB,EAAEnB,KAApB;gBACYD,IAAZ,CAAiBoB,EAAEnB,KAAnB;oBACgBD,IAAhB,CAAqBoB,EAAEnB,KAAvB;GAnBJ,EAqBGyF,EArBH,CAqBM,YArBN,EAqBoB,aAAK;WACdzD,UAAP,GAAoBN,GAAGiU,sBAAH,CAA0B7T,OAAOC,IAAP,CAAYZ,EAAEnB,KAAd,CAA1B,CAApB;WACOe,MAAP,CAAcW,GAAG2J,uBAAH,EAAd;OACGsM,cAAH;QACI1F,MAAMgQ,WAAV,EAAuB;SAClB7iB,MAAH,GAAY2S,UAAZ;;GA1BN,EA6BGtM,EA7BH,CA6BM,iBA7BN,EA6ByB,aAAK;QACtB,CAAC3D,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+B9B,MAApC,EAA4CwB,GAAG2T,gBAAH;OACzC1C,SAAH;QACI,OAAOxR,EAAEnB,KAAT,KAAmB,QAAvB,EAAiC;UAC3BmB,EAAEnB,KAAF,GAAU8B,OAAOC,IAAP,CAAYxB,OAAOyB,UAAnB,EAA+B9B,MAA7C,EAAqD;eAC5CqV,eAAP,GAAyBhV,OAAOyB,UAAP,CAAkBb,EAAEnB,KAApB,CAAzB;OADF,MAEO,IAAImB,EAAEnB,KAAF,GAAUO,OAAOgjB,QAAP,CAAgBrjB,MAA9B,EAAsC;eACpCqV,eAAP,GAAyBhV,OAAOgjB,QAAP,CAAgBpiB,EAAEnB,KAAlB,CAAzB;;KAJJ,MAMO;aACEuV,eAAP,GAAyBpU,EAAEnB,KAA3B;;;WAGKgf,gBAAP,GAA0B4D,wBACxBriB,MADwB,EAExBA,OAAOgV,eAFiB,CAA1B;QAIItD,MAAMgQ,WAAV,EAAuB;SAClB7iB,MAAH;;GA/CN,EAkDGqG,EAlDH,CAkDM,UAlDN,EAkDkB,aAAK;OAChBzD,UAAH,CAAcN,GAAGiU,sBAAH,EAAd;OACG3T,UAAH,CAAcmhB,QAAQ5iB,OAAOyB,UAAf,EAA2Bb,EAAEnB,KAA7B,CAAd;GApDJ,EAsDGyF,EAtDH,CAsDM,UAtDN,EAsDkB,aAAK;QACftE,EAAEnB,KAAF,IAAWmB,EAAEnB,KAAF,CAAQE,MAAvB,EAA+B;QAC3BF,KAAF,CAAQkB,OAAR,CAAgB,UAAS6D,IAAT,EAAe;AAC7BqM,AACD,OAFD;SAGGW,UAAH,CAAc,CAAd;;GA3DN,CAVkB;CAApB;;ACZA,IAAMyR,SAAS,SAATA,MAAS,CAAC5F,GAAD,EAAMnc,KAAN,EAAakD,MAAb,EAAqB8e,YAArB,EAAsC;SAC5C1hB,IAAP,CAAYN,KAAZ,EAAmBP,OAAnB,CAA2B,UAASqN,GAAT,EAAc;QACnCA,GAAJ,IAAW,UAAS3F,CAAT,EAAY;UACjB,CAAC3I,UAAUC,MAAf,EAAuB;eACduB,MAAM8M,GAAN,CAAP;;UAGAA,QAAQ,YAAR,IACAzM,OAAOyD,SAAP,CAAiBiC,QAAjB,CAA0BrE,IAA1B,CAA+ByF,CAA/B,MAAsC,gBAFxC,EAGE;gBACQ4Z,IAAR,CAAa,wDAAb;YACI5E,IAAIjI,sBAAJ,CAA2B/M,CAA3B,CAAJ;;UAEE8a,MAAMjiB,MAAM8M,GAAN,CAAV;YACMA,GAAN,IAAa3F,CAAb;mBACazF,IAAb,CAAkBoL,GAAlB,EAAuBqP,GAAvB,EAA4B,EAAE5d,OAAO4I,CAAT,EAAY+a,UAAUD,GAAtB,EAA5B;aACOvgB,IAAP,CAAYoL,GAAZ,EAAiBqP,GAAjB,EAAsB,EAAE5d,OAAO4I,CAAT,EAAY+a,UAAUD,GAAtB,EAAtB;aACO9F,GAAP;KAfF;GADF;CADF;;ACAA;AACA;AAGA,IAAMgG,YAAY,SAAZA,SAAY,CAACC,MAAD,EAASC,MAAT,EAAiBC,MAAjB;SAChB,YAAW;QACH/jB,QAAQ+jB,OAAOpB,KAAP,CAAamB,MAAb,EAAqB7jB,SAArB,CAAd;WACOD,UAAU8jB,MAAV,GAAmBD,MAAnB,GAA4B7jB,KAAnC;GAHc;CAAlB;;AAMA,IAAMgkB,UAAU,SAAVA,OAAU,CAACH,MAAD,EAASC,MAAT,EAAiBC,MAAjB,EAA4B;SACnCA,MAAP,IAAiBH,UAAUC,MAAV,EAAkBC,MAAlB,EAA0BA,OAAOC,MAAP,CAA1B,CAAjB;SACOF,MAAP;CAFF;;AAKA,IAAMI,aAAa,SAAbA,UAAa,CACjBC,EADiB,EAEjBtR,GAFiB,EAGjBlR,EAHiB,EAIjB0J,MAJiB,EAKjB6G,KALiB,EAMjB4O,YANiB,EAOjBJ,WAPiB,EAQjBkB,eARiB,EASjBhd,MATiB,EAUjBI,IAViB,EAWd;MACG0e,eAAeH,YACnBY,EADmB,EAEnBtR,GAFmB,EAGnBlR,EAHmB,EAInB0J,MAJmB,EAKnB6G,KALmB,EAMnB4O,YANmB,EAOnBJ,WAPmB,EAQnBkB,eARmB,CAArB;;;SAYOjgB,EAAP,EAAWwiB,EAAX,EAAevf,MAAf,EAAuB8e,YAAvB;;;;UAIQ/hB,EAAR,EAAYiD,MAAZ,EAAoB,IAApB;;UAGEjD,EADF,EAEEqD,IAFF,EAGE,OAHF,EAIE,QAJF,EAKE,YALF,EAME,eANF,EAOE,UAPF,EAQE,aARF,EASE,YATF;CA9BF;;ACfA;AACA;AAwEA,IAAMof,YAAY,SAAZA,SAAY,aAAc;MACxB1iB,QAAQ4gB,UAAUC,UAAV,CAAd;MAEE/hB,MAH4B,GAY1BkB,KAZ0B,CAG5BlB,MAH4B;MAI5BoE,MAJ4B,GAY1BlD,KAZ0B,CAI5BkD,MAJ4B;MAK5BsN,KAL4B,GAY1BxQ,KAZ0B,CAK5BwQ,KAL4B;MAM5B7G,MAN4B,GAY1B3J,KAZ0B,CAM5B2J,MAN4B;MAO5BoM,QAP4B,GAY1B/V,KAZ0B,CAO5B+V,QAP4B;MAQ5BzS,IAR4B,GAY1BtD,KAZ0B,CAQ5BsD,IAR4B;MAS5B6N,GAT4B,GAY1BnR,KAZ0B,CAS5BmR,GAT4B;MAU5BpF,MAV4B,GAY1B/L,KAZ0B,CAU5B+L,MAV4B;MAW5BpL,KAX4B,GAY1BX,KAZ0B,CAW5BW,KAX4B;;;MAcxBV,KAAKygB,KAAK5hB,MAAL,EAAaiN,MAAb,EAAqBoF,GAArB,CAAX;;MAEMZ,WAAW,SAAXA,QAAW,IAAK;QAChB5G,OAAOpK,KAAP,GAAed,MAAf,KAA0B,CAA9B,EAAiC;aACxBc,KAAP,CAAa,CAAC,CAAD,EAAIV,EAAEC,MAAF,CAAJ,CAAb,EAA6B,CAA7B;;WAEKiX,SAASrW,CAAT,KAAe,IAAf,GAAsBiK,OAAOjK,CAAP,CAAtB,GAAkCqW,SAASrW,CAAT,CAAzC;GAJF;;MAOM0f,eAAe9hB,YAAY2hB,YAAYngB,MAAZ,EAAoBqS,GAApB,EAAyBZ,QAAzB,CAAZ,EAClBjS,IADkB,CACb,EADa,EAElBK,KAFkB,CAEZ;WAAMsB,GAAGtB,KAAH,CAAS,SAAT,CAAN;GAFY,CAArB;;MAIMqgB,cAAc1hB,YAAYshB,SAAS9f,MAAT,EAAiBqS,GAAjB,EAAsBZ,QAAtB,CAAZ,EACjBjS,IADiB,CACZ,EADY,EAEjBK,KAFiB,CAEX;WAAMsB,GAAGtB,KAAH,CAAS,QAAT,CAAN;GAFW,CAApB;;MAIMuhB,kBAAkB5iB,YAAYwiB,eAAehhB,MAAf,EAAuBqS,GAAvB,EAA4BZ,QAA5B,CAAZ,EACrBjS,IADqB,CAChB,EADgB,EAErBK,KAFqB,CAEf,YAAW;OACbA,KAAH,CAAS,YAAT;OACGA,KAAH,CAAS,WAAT;GAJoB,CAAxB;;aAQEG,MADF,EAEEqS,GAFF,EAGElR,EAHF,EAIE0J,MAJF,EAKE6G,KALF,EAME4O,YANF,EAOEJ,WAPF,EAQEkB,eARF,EASEhd,MATF,EAUEI,IAVF;;;KAcGtD,KAAH,GAAWlB,MAAX;KACG0R,KAAH,GAAWA,KAAX;;KAEGU,SAAH,GAAeA,UAAUpS,MAAV,EAAkBmB,EAAlB,EAAsB0J,MAAtB,EAA8BwH,GAA9B,CAAf;KACG9R,KAAH,GAAWA,MAAMP,MAAN,EAAcmB,EAAd,CAAX;KACG2P,IAAH,GAAUA,KAAK9Q,MAAL,CAAV;KACG2U,WAAH,GAAiBA,YAAY3U,MAAZ,EAAoBmB,EAApB,CAAjB;KACG2T,gBAAH,GAAsBA,iBAAiB3T,EAAjB,CAAtB;;KAEGmU,oBAAH,GAA0BA,oBAA1B;KACGF,sBAAH,GAA4BA,uBAAuBpV,MAAvB,EAA+BmB,EAA/B,CAA5B;KACG2J,uBAAH,GAA6BA,wBAAwB9K,MAAxB,CAA7B;;;KAGGnB,MAAH,GAAYA,OAAOmB,MAAP,EAAemB,EAAf,EAAmBiD,MAAnB,CAAZ;KACGrB,aAAH,GAAmBA,cAAc/C,MAAd,EAAsBmB,EAAtB,EAA0BiD,MAA1B,CAAnB;KACGiT,YAAH,GAAkBA,aAAarX,MAAb,EAAqBmB,EAArB,EAAyBiD,MAAzB,CAAlB;KACGvF,MAAH,CAAUqiB,OAAV,GAAoBD,cAAcjhB,MAAd,EAAsBmB,EAAtB,EAA0BkR,GAA1B,EAA+BZ,QAA/B,CAApB;KACG5S,MAAH,CAAUwiB,KAAV,GAAkBF,mBAAmBnhB,MAAnB,EAA2BmB,EAA3B,EAA+BigB,eAA/B,CAAlB;KACGre,aAAH,CAAiBme,OAAjB,GAA2Bd,qBACzBpgB,MADyB,EAEzBqS,GAFyB,EAGzBZ,QAHyB,EAIzBtQ,EAJyB,EAKzBU,KALyB,CAA3B;KAOGkB,aAAH,CAAiBse,KAAjB,GAAyBhB,mBAAmBrgB,MAAnB,EAA2B6B,KAA3B,EAAkCye,YAAlC,CAAzB;KACGjJ,YAAH,CAAgB6J,OAAhB,GAA0BlB,oBAAoBhgB,MAApB,EAA4BmB,EAA5B,EAAgCkR,GAAhC,EAAqCZ,QAArC,CAA1B;KACG4F,YAAH,CAAgBgK,KAAhB,GAAwBpB,kBAAkBjgB,MAAlB,EAA0BkgB,WAA1B,CAAxB;;KAEG2D,sBAAH,GAA4B5O,qBAAqBjV,OAAOyB,UAA5B,EAAwCgQ,QAAxC,CAA5B;KACGkQ,OAAH,GAAaA,QAAQjQ,KAAR,EAAevQ,EAAf,CAAb;KACG6U,QAAH,GAAcA,SAAShW,MAAT,EAAiBmB,EAAjB,EAAqBsQ,QAArB,CAAd;KACG5R,KAAH,GAAWA,MAAMG,MAAN,EAAcmB,EAAd,EAAkBkR,GAAlB,EAAuBxQ,KAAvB,CAAX;KACG0D,UAAH,GAAgBA,WAAWvF,MAAX,EAAmBmB,EAAnB,EAAuB0J,MAAvB,EAA+B6G,KAA/B,EAAsClN,IAAtC,CAAhB;KACGqR,UAAH,GAAgBA,WAAW1U,EAAX,CAAhB;KACGqQ,UAAH,GAAgBA,WAAWxR,MAAX,EAAmBmB,EAAnB,EAAuBsQ,QAAvB,EAAiCjN,IAAjC,EAAuCkN,KAAvC,CAAhB;KACGG,eAAH,GAAqBA,eAArB;KACGE,SAAH,GAAeA,UAAU/R,MAAV,EAAkBmB,EAAlB,EAAsBuQ,KAAtB,CAAf;KACG1O,UAAH,GAAgBA,aAAWhD,MAAX,CAAhB;KACGqD,QAAH,GAAcA,WAASrD,MAAT,EAAiBmB,EAAjB,CAAd;KACG6Q,WAAH,GAAiBA,YAAYhS,MAAZ,EAAoBmB,EAApB,EAAwB0J,MAAxB,EAAgC4G,QAAhC,EAA0CwF,QAA1C,EAAoDvF,KAApD,CAAjB;;;;;KAKG6F,OAAH,GAAaA,QAAQvX,MAAR,EAAgBmB,EAAhB,EAAoB0J,MAApB,CAAb;KACG4M,uBAAH,GAA6BA,wBAAwBzX,MAAxB,CAA7B;KACGoX,cAAH,GAAoBA,eAAepX,MAAf,EAAuByR,QAAvB,CAApB;;;KAGGqS,cAAH,GAAoBnD,aAApB;KACGe,WAAH,GAAiBA,YAAYhQ,KAAZ,CAAjB;;;KAGG7G,MAAH,GAAYA,MAAZ;KACGwH,GAAH,GAASA,GAAT;KACGpF,MAAH,GAAYA,MAAZ;KACG3K,CAAH,GAAO;WAAMnB,GAAG2U,EAAT;GAAP;;;;KAIGwB,MAAH,GAAYA,OAAOtX,MAAP,EAAemB,EAAf,EAAmBuQ,KAAnB,EAA0BtN,MAA1B,CAAZ;;;KAGG0P,SAAH,GAAeA,UAAU9T,MAAV,EAAkBmB,EAAlB,EAAsB8L,MAAtB,EAA8B7I,MAA9B,EAAsCiO,GAAtC,EAA2CZ,QAA3C,CAAf;;KAEGoG,WAAH,GAAiBA,YAAY7X,MAAZ,EAAoBmB,EAApB,EAAwB8L,MAAxB,CAAjB;;;KAGG8K,IAAH,GAAUA,KAAK/X,MAAL,EAAamB,EAAb,EAAiB8L,MAAjB,EAAyB7I,MAAzB,EAAiCiO,GAAjC,EAAsCZ,QAAtC,CAAV;;KAEGqG,MAAH,GAAYA,OAAO9X,MAAP,EAAemB,EAAf,EAAmB8L,MAAnB,CAAZ;;;;KAIGP,YAAH,GAAkBA,YAAlB;;;;KAIGC,cAAH,GAAoBA,eAAexL,EAAf,CAApB;KACGuP,UAAH,GAAgB;WAAMnP,OAAO6H,mBAAP,CAA2BvH,MAAMiE,KAAjC,CAAN;GAAhB;KACG0K,SAAH,GAAeA,UAAU3O,KAAV,EAAiB7B,MAAjB,EAAyBmB,EAAzB,CAAf;;;gBAGcU,KAAd,EAAqB7B,MAArB,EAA6BmB,EAA7B,EAAiCiD,MAAjC;kBACgBvC,KAAhB,EAAuB7B,MAAvB,EAA+BmB,EAA/B,EAAmCiD,MAAnC,EAA2CyG,MAA3C;sBACoBhJ,KAApB,EAA2B7B,MAA3B,EAAmCmB,EAAnC,EAAuCiD,MAAvC,EAA+CyG,MAA/C;qBACmBhJ,KAAnB,EAA0B7B,MAA1B,EAAkCmB,EAAlC,EAAsCiD,MAAtC;;KAEG2f,OAAH,GAAaA,OAAb;;KAEG9c,QAAH,GAAcA,SAASjH,MAAT,CAAd;KACGwgB,MAAH,GAAYA,MAAZ;;KAEGc,mBAAH,GAAyBA,mBAAzB;;SAEOngB,EAAP;CArJF;;;;"} \ No newline at end of file diff --git a/dist/parcoords.js b/dist/parcoords.js index e316f6c..003a0f9 100644 --- a/dist/parcoords.js +++ b/dist/parcoords.js @@ -91,6 +91,7 @@ }; var invertByScale = function invertByScale(selection, scale) { + if (scale === null) return []; return typeof scale.invert === 'undefined' ? invertCategorical(selection, scale) : selection.map(function (d) { return scale.invert(d); }); @@ -283,10 +284,16 @@ var convertBrushArguments = function convertBrushArguments(args) { var args_array = Array.prototype.slice.call(args); var axis = args_array[0]; - // ordinal scales do not have invert - var yscale = config.dimensions[axis].yscale; var raw = d3Brush.brushSelection(args_array[2][0]) || []; + + // handle hidden axes which will not have a yscale + var yscale = null; + if (config.dimensions.hasOwnProperty(axis)) { + yscale = config.dimensions[axis].yscale; + } + + // ordinal scales do not have invert var scaled = invertByScale(raw, yscale); return { @@ -4058,7 +4065,7 @@ }; }; - var version = "2.2.4"; + var version = "2.2.5"; var DefaultConfig = { data: [], diff --git a/dist/parcoords.js.map b/dist/parcoords.js.map index 0a543ce..4e876ff 100644 --- a/dist/parcoords.js.map +++ b/dist/parcoords.js.map @@ -1 +1 @@ -{"version":3,"file":"parcoords.js","sources":["../src/util/renderQueue.js","../src/util/width.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","../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","../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","../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":["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","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 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 select(this).call(brushes[d].move, null);\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 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 // ordinal scales do not have invert\n const yscale = config.dimensions[axis].yscale;\n\n const raw = brushSelection(args_array[2][0]) || [];\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 (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 .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';\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\n if (typeof extents === 'undefined') {\n return Object.keys(config.dimensions).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 range = brushSelection(\n document.getElementById('brush-' + pos + '-' + i)\n );\n if (range !== null) {\n d = d.push(range);\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 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 });\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 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 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 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 brushFor(state, config, pc, events, brushGroup)(d, select(this));\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","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 } from 'd3-selection';\n\nconst flipAxisAndUpdatePCP = (config, pc, axis) =>\n function(dimension) {\n pc.flip(dimension);\n pc.brushReset(dimension);\n select(this.parentElement)\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","/** 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 = (dimensions, position) => row =>\n Object.keys(dimensions).map(d => {\n const x = position(d);\n const y = 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","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, selectAll } from 'd3-selection';\n\nconst brushReset = config =>\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 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.dimensions(pc.applyDimensionDefaults());\n pc.dimensions(without(config.dimensions, d.value));\n })\n .on('flipAxes', d => {\n if (d.value && d.value.length) {\n d.value.forEach(function(axis) {\n flipAxisAndUpdatePCP(config, pc, axis);\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 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.dimensions, 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);\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":["renderQueue","func","_queue","_rate","_invalidate","_clear","rq","data","render","valid","invalidate","doFrame","chunk","splice","map","requestAnimationFrame","slice","add","concat","rate","value","arguments","length","remaining","clear","w","config","width","margin","right","left","invertCategorical","selection","scale","domain","range","found","forEach","d","i","push","invertByScale","invert","brushExtents","state","pc","brushes","brushNodes","extents","Object","keys","dimensions","reduce","acc","cur","brush","undefined","brushSelection","raw","yScale","yscale","scaled","extent","brushSelections","g","selectAll","each","select","dim","yExtent","call","move","reverse","renderBrushed","brushReset","dimension","brushed","type","event","selected","brushGroup","is_brushed","p","actives","filter","_brushRange","within","date","bandwidth","number","string","predicate","every","some","Error","brushPredicate","brushUpdated","events","args","newSelection","brushFor","axis","_selector","brushRangeMax","_brush","brushY","convertBrushArguments","args_array","Array","prototype","node","on","sourceEvent","stopPropagation","install","createAxes","append","attr","style","uninstall","remove","install1DAxes","modes","brushState","drawBrushes","selector","id","enter","insert","indexOf","b","brushObject","exit","pos","axisBrushes","document","getElementById","dimExt","e","newBrush","lastBrushID","lastBrush","toString","yExtents","_bs","j","ext","f","k","axisBrush","_this","install1DMultiAxes","strumRect","containmentTest","strum","p1","minX","p2","m1","b1","m2","b2","x","y","y1","y2","Math","min","max","crossesStrum","strums","test","d1","dims","d2","point","ids","getOwnPropertyNames","isNaN","crossTest","removeStrum","active","svg","onDragEnd","drawStrum","activePoint","_svg","points","_line","circles","_drag","drag","ev","maxX","minY","maxY","onDrag","top","h","height","bottom","dimensionsForPoint","xscale","getOrderedDimensionKeys","onDragStart","mouse","consecutive","first","second","install2DStrums","hypothenuse","a","sqrt","signedAngle","angle","PI","startAngle","arc","endAngle","tmp","arcs","c","asin","outerRadius","p3","_path","d3Arc","innerRadius","sAngle","uAngle","installAngularBrush","intersection","mergeParcoords","devicePixelRatio","window","mergedCanvas","createElement","foregroundCanvas","canvas","foreground","canvasMarginLeft","Number","marginLeft","replace","textTopAdjust","canvasMarginTop","marginTop","clientWidth","clientHeight","context","getContext","fillStyle","fillRect","key","drawImage","DOMURL","URL","webkitURL","serializer","XMLSerializer","svgNodeCopy","cloneNode","setAttribute","getAttribute","svgStr","serializeToString","src","btoa","img","Image","onload","callback","ranges","nodes","__data__","values","ranger","includes","flipAxes","unshift","ii","dimRange","dimDomain","category","categoryIndex","categoryRangeValue","multiBrushData","idx","filtered","z","String","toUpperCase","currentMode","brushMode","mode","brushModes","dimensionLabels","title","flipAxisAndUpdatePCP","flip","parentElement","transition","duration","animationTime","rotateLabels","delta","deltaY","dimensionTitleRotation","preventDefault","updateAxes","position","flags","g_data","axisElement","applyAxisConfig","text","brushable","reorderable","getRange","nullValueSeparator","nullValueSeparatorPadding","autoscale","ctx","defaultScales","_extent","getTime","scalePoint","tempDate","val","scaleTime","scaleLinear","counts","sort","tempArr","pop","categoricalRange","addBy","scaleOrdinal","padding","strokeStyle","color","lineWidth","globalCompositeOperation","composite","globalAlpha","alpha","brushedColor","highlight","highlightedLineWidth","marked","markedLineWidth","shadowColor","markedShadowColor","shadowBlur","markedShadowBlur","ctrlKey","html","outerHTML","dat","parentNode","commonScale","global","t","detectDimensions","scales","bundleDimension","computeRealCentroids","row","isValid","applyDimensionDefaults","types","detectDimensionTypes","orient","ticks","innerTickSize","outerTickSize","tickPadding","index","removeAxes","_g","axes","axisDots","r","_r","dots","pow","entries","beginPath","stroke","fill","axisCfg","axisLeft","axisRight","axisTop","axisBottom","tickValues","tickSizeInner","tickSizeOuter","tickFormat","dragging","__origin__","dx","sortDimensions","renderMarked","resize","reorder","firstDim","sortDimensionsByRowData","rowdata","reordered","highlighted","unhighlight","unmark","mark","copy","assign","positionSortedKeys","pixelDifference","localeCompare","isBrushed","object","hasOwnProperty","layer","clearRect","alphaOnBrushed","PRECISION","Matrix","elements","setElements","Vector","col","n","cols","rows","matrix","M","nj","abs","fn","els","isSameSizeAs","returnVector","modulus","canMultiplyFromLeft","sum","ni","m","isSquare","dup","np","multiplier","toRightTriangular","det","determinant","tr","rank","T","isSingular","augment","I","divisor","inverse_elements","new_element","round","matrix_rows","inspect","join","result","Diagonal","Rotation","theta","cos","sin","mod","s","RotationX","RotationY","RotationZ","Random","Zero","random","Translation","v","toUpperTriangular","trace","rk","inv","inverse","multiply","dot","vector","V","mod1","mod2","acos","angleFrom","product","B","A","obj","anchor","start","end","distanceFrom","part","line","contains","plane","R","direction","C","pointClosestTo","P","Q","computeCentroids","centroids","cx","cy","leftCentroid","clusterCentroids","get","rightCentroid","centroid","bundlingStrength","computeControlPoints","smoothness","cps","mid","diff","subtract","singleCurve","moveTo","showControlPoints","bezierCurveTo","getNullPosition","console","log","singlePath","lineTo","colorPath","_functor","pathMark","functor","renderMarkedDefault","renderMarkedQueue","markedQueue","pathBrushed","renderBrushedDefault","renderBrushedQueue","brushedQueue","brushesToKeep","toType","match","toLowerCase","adjacentPairs","ret","arr","pathHighlight","classed","pathForeground","renderDefault","default","renderDefaultQueue","foregroundQueue","queue","toTypeCoerceNumbers","parseFloat","parseInt","ascending","interactive","shadows","init","DefaultConfig","hideAxis","initState","userConfig","dimensionTitles","warn","eventTypes","dispatch","apply","debug","None","computeClusterCentroids","Map","clusterCounts","has","set","count","_map","without","items","el","sideEffects","getset","side_effects","old","previous","d3_rebind","target","source","method","_rebind","bindEvents","__","ParCoords","compute_real_centroids","adjacent_pairs","install1DAxesMulti","version"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"parcoords.js","sources":["../src/util/renderQueue.js","../src/util/width.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","../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","../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","../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":["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","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 select(this).call(brushes[d].move, null);\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 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 (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 .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';\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\n if (typeof extents === 'undefined') {\n return Object.keys(config.dimensions).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 range = brushSelection(\n document.getElementById('brush-' + pos + '-' + i)\n );\n if (range !== null) {\n d = d.push(range);\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 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 });\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 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 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 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 brushFor(state, config, pc, events, brushGroup)(d, select(this));\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","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 } from 'd3-selection';\n\nconst flipAxisAndUpdatePCP = (config, pc, axis) =>\n function(dimension) {\n pc.flip(dimension);\n pc.brushReset(dimension);\n select(this.parentElement)\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","/** 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 = (dimensions, position) => row =>\n Object.keys(dimensions).map(d => {\n const x = position(d);\n const y = 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","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, selectAll } from 'd3-selection';\n\nconst brushReset = config =>\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 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.dimensions(pc.applyDimensionDefaults());\n pc.dimensions(without(config.dimensions, d.value));\n })\n .on('flipAxes', d => {\n if (d.value && d.value.length) {\n d.value.forEach(function(axis) {\n flipAxisAndUpdatePCP(config, pc, axis);\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 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.dimensions, 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);\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":["renderQueue","func","_queue","_rate","_invalidate","_clear","rq","data","render","valid","invalidate","doFrame","chunk","splice","map","requestAnimationFrame","slice","add","concat","rate","value","arguments","length","remaining","clear","w","config","width","margin","right","left","invertCategorical","selection","scale","domain","range","found","forEach","d","i","push","invertByScale","invert","brushExtents","state","pc","brushes","brushNodes","extents","Object","keys","dimensions","reduce","acc","cur","brush","undefined","brushSelection","raw","yScale","yscale","scaled","extent","brushSelections","g","selectAll","each","select","dim","yExtent","call","move","reverse","renderBrushed","brushReset","dimension","brushed","type","event","selected","brushGroup","is_brushed","p","actives","filter","_brushRange","within","date","bandwidth","number","string","predicate","every","some","Error","brushPredicate","brushUpdated","events","args","newSelection","brushFor","axis","_selector","brushRangeMax","_brush","brushY","convertBrushArguments","args_array","Array","prototype","hasOwnProperty","node","on","sourceEvent","stopPropagation","install","createAxes","append","attr","style","uninstall","remove","install1DAxes","modes","brushState","drawBrushes","selector","id","enter","insert","indexOf","b","brushObject","exit","pos","axisBrushes","document","getElementById","dimExt","e","newBrush","lastBrushID","lastBrush","toString","yExtents","_bs","j","ext","f","k","axisBrush","_this","install1DMultiAxes","strumRect","containmentTest","strum","p1","minX","p2","m1","b1","m2","b2","x","y","y1","y2","Math","min","max","crossesStrum","strums","test","d1","dims","d2","point","ids","getOwnPropertyNames","isNaN","crossTest","removeStrum","active","svg","onDragEnd","drawStrum","activePoint","_svg","points","_line","circles","_drag","drag","ev","maxX","minY","maxY","onDrag","top","h","height","bottom","dimensionsForPoint","xscale","getOrderedDimensionKeys","onDragStart","mouse","consecutive","first","second","install2DStrums","hypothenuse","a","sqrt","signedAngle","angle","PI","startAngle","arc","endAngle","tmp","arcs","c","asin","outerRadius","p3","_path","d3Arc","innerRadius","sAngle","uAngle","installAngularBrush","intersection","mergeParcoords","devicePixelRatio","window","mergedCanvas","createElement","foregroundCanvas","canvas","foreground","canvasMarginLeft","Number","marginLeft","replace","textTopAdjust","canvasMarginTop","marginTop","clientWidth","clientHeight","context","getContext","fillStyle","fillRect","key","drawImage","DOMURL","URL","webkitURL","serializer","XMLSerializer","svgNodeCopy","cloneNode","setAttribute","getAttribute","svgStr","serializeToString","src","btoa","img","Image","onload","callback","ranges","nodes","__data__","values","ranger","includes","flipAxes","unshift","ii","dimRange","dimDomain","category","categoryIndex","categoryRangeValue","multiBrushData","idx","filtered","z","String","toUpperCase","currentMode","brushMode","mode","brushModes","dimensionLabels","title","flipAxisAndUpdatePCP","flip","parentElement","transition","duration","animationTime","rotateLabels","delta","deltaY","dimensionTitleRotation","preventDefault","updateAxes","position","flags","g_data","axisElement","applyAxisConfig","text","brushable","reorderable","getRange","nullValueSeparator","nullValueSeparatorPadding","autoscale","ctx","defaultScales","_extent","getTime","scalePoint","tempDate","val","scaleTime","scaleLinear","counts","sort","tempArr","pop","categoricalRange","addBy","scaleOrdinal","padding","strokeStyle","color","lineWidth","globalCompositeOperation","composite","globalAlpha","alpha","brushedColor","highlight","highlightedLineWidth","marked","markedLineWidth","shadowColor","markedShadowColor","shadowBlur","markedShadowBlur","ctrlKey","html","outerHTML","dat","parentNode","commonScale","global","t","detectDimensions","scales","bundleDimension","computeRealCentroids","row","isValid","applyDimensionDefaults","types","detectDimensionTypes","orient","ticks","innerTickSize","outerTickSize","tickPadding","index","removeAxes","_g","axes","axisDots","r","_r","dots","pow","entries","beginPath","stroke","fill","axisCfg","axisLeft","axisRight","axisTop","axisBottom","tickValues","tickSizeInner","tickSizeOuter","tickFormat","dragging","__origin__","dx","sortDimensions","renderMarked","resize","reorder","firstDim","sortDimensionsByRowData","rowdata","reordered","highlighted","unhighlight","unmark","mark","copy","assign","positionSortedKeys","pixelDifference","localeCompare","isBrushed","object","layer","clearRect","alphaOnBrushed","PRECISION","Matrix","elements","setElements","Vector","col","n","cols","rows","matrix","M","nj","abs","fn","els","isSameSizeAs","returnVector","modulus","canMultiplyFromLeft","sum","ni","m","isSquare","dup","np","multiplier","toRightTriangular","det","determinant","tr","rank","T","isSingular","augment","I","divisor","inverse_elements","new_element","round","matrix_rows","inspect","join","result","Diagonal","Rotation","theta","cos","sin","mod","s","RotationX","RotationY","RotationZ","Random","Zero","random","Translation","v","toUpperTriangular","trace","rk","inv","inverse","multiply","dot","vector","V","mod1","mod2","acos","angleFrom","product","B","A","obj","anchor","start","end","distanceFrom","part","line","contains","plane","R","direction","C","pointClosestTo","P","Q","computeCentroids","centroids","cx","cy","leftCentroid","clusterCentroids","get","rightCentroid","centroid","bundlingStrength","computeControlPoints","smoothness","cps","mid","diff","subtract","singleCurve","moveTo","showControlPoints","bezierCurveTo","getNullPosition","console","log","singlePath","lineTo","colorPath","_functor","pathMark","functor","renderMarkedDefault","renderMarkedQueue","markedQueue","pathBrushed","renderBrushedDefault","renderBrushedQueue","brushedQueue","brushesToKeep","toType","match","toLowerCase","adjacentPairs","ret","arr","pathHighlight","classed","pathForeground","renderDefault","default","renderDefaultQueue","foregroundQueue","queue","toTypeCoerceNumbers","parseFloat","parseInt","ascending","interactive","shadows","init","DefaultConfig","hideAxis","initState","userConfig","dimensionTitles","warn","eventTypes","dispatch","apply","debug","None","computeClusterCentroids","Map","clusterCounts","has","set","count","_map","without","items","el","sideEffects","getset","side_effects","old","previous","d3_rebind","target","source","method","_rebind","bindEvents","__","ParCoords","compute_real_centroids","adjacent_pairs","install1DAxesMulti","version"],"mappings":"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"} \ No newline at end of file diff --git a/dist/parcoords.standalone.js b/dist/parcoords.standalone.js index 5343fc7..a58cafd 100644 --- a/dist/parcoords.standalone.js +++ b/dist/parcoords.standalone.js @@ -4079,6 +4079,7 @@ }; var invertByScale = function invertByScale(selection, scale) { + if (scale === null) return []; return typeof scale.invert === 'undefined' ? invertCategorical(selection, scale) : selection.map(function (d) { return scale.invert(d); }); @@ -4271,10 +4272,16 @@ var convertBrushArguments = function convertBrushArguments(args) { var args_array = Array.prototype.slice.call(args); var axis = args_array[0]; - // ordinal scales do not have invert - var yscale = config.dimensions[axis].yscale; var raw = brushSelection(args_array[2][0]) || []; + + // handle hidden axes which will not have a yscale + var yscale = null; + if (config.dimensions.hasOwnProperty(axis)) { + yscale = config.dimensions[axis].yscale; + } + + // ordinal scales do not have invert var scaled = invertByScale(raw, yscale); return { @@ -7650,6 +7657,8 @@ var saturday = weekday(6); var sundays = sunday.range; + var mondays = monday.range; + var thursdays = thursday.range; var month = newInterval(function (date) { date.setDate(1); @@ -7739,6 +7748,8 @@ var utcSaturday = utcWeekday(6); var utcSundays = utcSunday.range; + var utcMondays = utcMonday.range; + var utcThursdays = utcThursday.range; var utcMonth = newInterval(function (date) { date.setUTCDate(1); @@ -10794,7 +10805,7 @@ }; }; - var version = "2.2.4"; + var version = "2.2.5"; var DefaultConfig = { data: [], diff --git a/dist/parcoords.standalone.js.map b/dist/parcoords.standalone.js.map index 95f3c66..1f38d76 100644 --- a/dist/parcoords.standalone.js.map +++ b/dist/parcoords.standalone.js.map @@ -1 +1 @@ -{"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 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 select(this).call(brushes[d].move, null);\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 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 // ordinal scales do not have invert\n const yscale = config.dimensions[axis].yscale;\n\n const raw = brushSelection(args_array[2][0]) || [];\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 (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 .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';\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\n if (typeof extents === 'undefined') {\n return Object.keys(config.dimensions).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 range = brushSelection(\n document.getElementById('brush-' + pos + '-' + i)\n );\n if (range !== null) {\n d = d.push(range);\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 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 });\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 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 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 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 brushFor(state, config, pc, events, brushGroup)(d, select(this));\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 } from 'd3-selection';\n\nconst flipAxisAndUpdatePCP = (config, pc, axis) =>\n function(dimension) {\n pc.flip(dimension);\n pc.brushReset(dimension);\n select(this.parentElement)\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 = (dimensions, position) => row =>\n Object.keys(dimensions).map(d => {\n const x = position(d);\n const y = 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, selectAll } from 'd3-selection';\n\nconst brushReset = config =>\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 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.dimensions(pc.applyDimensionDefaults());\n pc.dimensions(without(config.dimensions, d.value));\n })\n .on('flipAxes', d => {\n if (d.value && d.value.length) {\n d.value.forEach(function(axis) {\n flipAxisAndUpdatePCP(config, pc, axis);\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 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.dimensions, 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);\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","dimExt","newBrush","lastBrushID","lastBrush","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","includes","flipAxes","unshift","ii","dimRange","dimDomain","category","categoryIndex","categoryRangeValue","multiBrushData","idx","filtered","String","toUpperCase","currentMode","brushMode","brushModes","dimensionLabels","title","flipAxisAndUpdatePCP","flip","parentElement","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","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","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","hideAxis","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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"} \ No newline at end of file +{"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 select(this).call(brushes[d].move, null);\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 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 (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 .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';\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\n if (typeof extents === 'undefined') {\n return Object.keys(config.dimensions).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 range = brushSelection(\n document.getElementById('brush-' + pos + '-' + i)\n );\n if (range !== null) {\n d = d.push(range);\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 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 });\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 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 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 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 brushFor(state, config, pc, events, brushGroup)(d, select(this));\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 } from 'd3-selection';\n\nconst flipAxisAndUpdatePCP = (config, pc, axis) =>\n function(dimension) {\n pc.flip(dimension);\n pc.brushReset(dimension);\n select(this.parentElement)\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 = (dimensions, position) => row =>\n Object.keys(dimensions).map(d => {\n const x = position(d);\n const y = 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, selectAll } from 'd3-selection';\n\nconst brushReset = config =>\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 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.dimensions(pc.applyDimensionDefaults());\n pc.dimensions(without(config.dimensions, d.value));\n })\n .on('flipAxes', d => {\n if (d.value && d.value.length) {\n d.value.forEach(function(axis) {\n flipAxisAndUpdatePCP(config, pc, axis);\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 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.dimensions, 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);\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","dimExt","newBrush","lastBrushID","lastBrush","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","includes","flipAxes","unshift","ii","dimRange","dimDomain","category","categoryIndex","categoryRangeValue","multiBrushData","idx","filtered","String","toUpperCase","currentMode","brushMode","brushModes","dimensionLabels","title","flipAxisAndUpdatePCP","flip","parentElement","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","hideAxis","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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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 040a6ea..a61d452 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "parcoord-es", - "version": "2.2.4", + "version": "2.2.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index d1bdcc1..9ee88a2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parcoord-es", - "version": "2.2.4", + "version": "2.2.5", "description": "ES6 module of Parallel Coordinates, based on d3 v5 modules", "main": "dist/parcoords.js", "module": "dist/parcoords.esm.js", diff --git a/src/brush/1d/brushFor.js b/src/brush/1d/brushFor.js index 5aef571..3f53bee 100644 --- a/src/brush/1d/brushFor.js +++ b/src/brush/1d/brushFor.js @@ -30,7 +30,7 @@ const brushFor = (state, config, pc, events, brushGroup) => ( // handle hidden axes which will not have a yscale let yscale = null; - if(config.dimensions.hasOwnProperty(axis)) { + if (config.dimensions.hasOwnProperty(axis)) { yscale = config.dimensions[axis].yscale; } diff --git a/src/brush/invertByScale.js b/src/brush/invertByScale.js index a8d1468..6d49075 100644 --- a/src/brush/invertByScale.js +++ b/src/brush/invertByScale.js @@ -14,7 +14,7 @@ const invertCategorical = (selection, scale) => { }; const invertByScale = (selection, scale) => { - if(scale === null) return []; + if (scale === null) return []; return typeof scale.invert === 'undefined' ? invertCategorical(selection, scale) : selection.map(d => scale.invert(d));