@jrkasprzyk/parcoord-es 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +160 -0
  3. package/dist/parcoords.css +61 -0
  4. package/dist/parcoords.esm.js +4132 -0
  5. package/dist/parcoords.esm.js.map +1 -0
  6. package/dist/parcoords.js +4130 -0
  7. package/dist/parcoords.js.map +1 -0
  8. package/dist/parcoords.standalone.js +11233 -0
  9. package/dist/parcoords.standalone.js.map +1 -0
  10. package/package.json +89 -0
  11. package/src/api/adjacentPairs.js +10 -0
  12. package/src/api/applyAxisConfig.js +35 -0
  13. package/src/api/applyDimensionDefaults.js +25 -0
  14. package/src/api/autoscale.js +133 -0
  15. package/src/api/axisDots.js +27 -0
  16. package/src/api/brushMode.js +50 -0
  17. package/src/api/brushReset.js +34 -0
  18. package/src/api/brushable.js +81 -0
  19. package/src/api/clear.js +21 -0
  20. package/src/api/commonScale.js +45 -0
  21. package/src/api/computeRealCentroids.js +8 -0
  22. package/src/api/createAxes.js +101 -0
  23. package/src/api/detectDimensionTypes.js +12 -0
  24. package/src/api/detectDimensions.js +7 -0
  25. package/src/api/flip.js +11 -0
  26. package/src/api/getOrderedDimensionKeys.js +8 -0
  27. package/src/api/highlight.js +26 -0
  28. package/src/api/init.js +53 -0
  29. package/src/api/interactive.js +7 -0
  30. package/src/api/intersection.js +16 -0
  31. package/src/api/mark.js +20 -0
  32. package/src/api/mergeParcoords.js +86 -0
  33. package/src/api/removeAxes.js +9 -0
  34. package/src/api/render.js +26 -0
  35. package/src/api/renderBrushed.js +39 -0
  36. package/src/api/renderDefault.js +27 -0
  37. package/src/api/renderMarked.js +34 -0
  38. package/src/api/reorder.js +37 -0
  39. package/src/api/reorderable.js +41 -0
  40. package/src/api/resize.js +36 -0
  41. package/src/api/scale.js +10 -0
  42. package/src/api/selected.js +209 -0
  43. package/src/api/shadows.js +9 -0
  44. package/src/api/sortDimensions.js +13 -0
  45. package/src/api/sortDimensionsByRowData.js +20 -0
  46. package/src/api/toString.js +11 -0
  47. package/src/api/toType.js +9 -0
  48. package/src/api/toTypeCoerceNumbers.js +7 -0
  49. package/src/api/unhighlight.js +12 -0
  50. package/src/api/unmark.js +12 -0
  51. package/src/api/updateAxes.js +103 -0
  52. package/src/bindEvents.js +60 -0
  53. package/src/brush/1d/brushExtents.js +73 -0
  54. package/src/brush/1d/brushFor.js +92 -0
  55. package/src/brush/1d/brushReset.js +36 -0
  56. package/src/brush/1d/index.js +20 -0
  57. package/src/brush/1d/install.js +41 -0
  58. package/src/brush/1d/selected.js +79 -0
  59. package/src/brush/1d/uninstall.js +12 -0
  60. package/src/brush/1d-multi/brushExtents.js +101 -0
  61. package/src/brush/1d-multi/brushFor.js +13 -0
  62. package/src/brush/1d-multi/brushReset.js +53 -0
  63. package/src/brush/1d-multi/drawBrushes.js +36 -0
  64. package/src/brush/1d-multi/index.js +20 -0
  65. package/src/brush/1d-multi/install.js +29 -0
  66. package/src/brush/1d-multi/newBrush.js +102 -0
  67. package/src/brush/1d-multi/selected.js +160 -0
  68. package/src/brush/1d-multi/uninstall.js +12 -0
  69. package/src/brush/angular/brushReset.js +14 -0
  70. package/src/brush/angular/index.js +19 -0
  71. package/src/brush/angular/install.js +141 -0
  72. package/src/brush/angular/onDrag.js +109 -0
  73. package/src/brush/angular/onDragEnd.js +30 -0
  74. package/src/brush/angular/onDragStart.js +38 -0
  75. package/src/brush/angular/removeStrum.js +12 -0
  76. package/src/brush/angular/selected.js +63 -0
  77. package/src/brush/angular/uninstall.js +17 -0
  78. package/src/brush/angular/util/hypothenuse.js +3 -0
  79. package/src/brush/consecutive.js +11 -0
  80. package/src/brush/dimensionsForPoint.js +32 -0
  81. package/src/brush/invertByScale.js +24 -0
  82. package/src/brush/strums/brushReset.js +14 -0
  83. package/src/brush/strums/index.js +19 -0
  84. package/src/brush/strums/install.js +81 -0
  85. package/src/brush/strums/onDrag.js +83 -0
  86. package/src/brush/strums/onDragEnd.js +20 -0
  87. package/src/brush/strums/onDragStart.js +33 -0
  88. package/src/brush/strums/removeStrum.js +10 -0
  89. package/src/brush/strums/selected.js +52 -0
  90. package/src/brush/strums/uninstall.js +16 -0
  91. package/src/index.js +226 -0
  92. package/src/parallel-coordinates.css +61 -0
  93. package/src/state/defaultConfig.js +36 -0
  94. package/src/state/index.js +86 -0
  95. package/src/state/sideEffects.js +89 -0
  96. package/src/util/colorPath.js +71 -0
  97. package/src/util/computeCentroids.js +44 -0
  98. package/src/util/computeClusterCentroids.js +33 -0
  99. package/src/util/computeControlPoints.js +38 -0
  100. package/src/util/dimensionLabels.js +11 -0
  101. package/src/util/flipAxisAndUpdatePCP.js +19 -0
  102. package/src/util/functor.js +3 -0
  103. package/src/util/getRange.js +24 -0
  104. package/src/util/getset.js +23 -0
  105. package/src/util/height.js +3 -0
  106. package/src/util/isBrushed.js +15 -0
  107. package/src/util/renderQueue.js +67 -0
  108. package/src/util/rotateLabels.js +18 -0
  109. package/src/util/width.js +3 -0
@@ -0,0 +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';\r\n\r\nconst renderQueue = function(func) {\r\n let _queue = [], // data to be rendered\r\n _rate = 1000, // number of calls per frame\r\n _invalidate = function() {}, // invalidate last render queue\r\n _clear = function() {}; // clearing function\r\n\r\n let rq = function(data) {\r\n if (data) rq.data(data);\r\n _invalidate();\r\n _clear();\r\n rq.render();\r\n };\r\n\r\n rq.render = function() {\r\n let valid = true;\r\n _invalidate = rq.invalidate = function() {\r\n valid = false;\r\n };\r\n\r\n function doFrame() {\r\n if (!valid) return true;\r\n let chunk = _queue.splice(0, _rate);\r\n chunk.map(func);\r\n requestAnimationFrame(doFrame);\r\n }\r\n\r\n doFrame();\r\n };\r\n\r\n rq.data = function(data) {\r\n _invalidate();\r\n _queue = data.slice(0); // creates a copy of the data\r\n return rq;\r\n };\r\n\r\n rq.add = function(data) {\r\n _queue = _queue.concat(data);\r\n };\r\n\r\n rq.rate = function(value) {\r\n if (!arguments.length) return _rate;\r\n _rate = value;\r\n return rq;\r\n };\r\n\r\n rq.remaining = function() {\r\n return _queue.length;\r\n };\r\n\r\n // clear the canvas\r\n rq.clear = function(func) {\r\n if (!arguments.length) {\r\n _clear();\r\n return rq;\r\n }\r\n _clear = func;\r\n return rq;\r\n };\r\n\r\n rq.invalidate = _invalidate;\r\n\r\n return rq;\r\n};\r\n\r\nexport default renderQueue;\r\n","const w = config => config.width - config.margin.right - config.margin.left;\r\n\r\nexport default w;\r\n","const invertCategorical = (selection, scale) => {\r\n if (selection.length === 0) {\r\n return [];\r\n }\r\n const domain = scale.domain();\r\n const range = scale.range();\r\n const found = [];\r\n range.forEach((d, i) => {\r\n if (d >= selection[0] && d <= selection[1]) {\r\n found.push(domain[i]);\r\n }\r\n });\r\n return found;\r\n};\r\n\r\nconst invertByScale = (selection, scale) => {\r\n if (scale === null) return [];\r\n return typeof scale.invert === 'undefined'\r\n ? invertCategorical(selection, scale)\r\n : selection.map(d => scale.invert(d));\r\n};\r\n\r\nexport default invertByScale;\r\nexport { invertByScale };\r\n","import { select } from 'd3-selection';\r\nimport { brushSelection } from 'd3-brush';\r\n\r\nimport invertByScale from '../invertByScale';\r\n\r\nconst brushExtents = (state, config, pc) => extents => {\r\n const { brushes, brushNodes } = state;\r\n\r\n if (typeof extents === 'undefined') {\r\n return Object.keys(config.dimensions).reduce((acc, cur) => {\r\n const brush = brushes[cur];\r\n //todo: brush check\r\n if (brush !== undefined && brushSelection(brushNodes[cur]) !== null) {\r\n const raw = brushSelection(brushNodes[cur]);\r\n const yScale = config.dimensions[cur].yscale;\r\n const scaled = invertByScale(raw, yScale);\r\n\r\n acc[cur] = {\r\n extent: brush.extent(),\r\n selection: {\r\n raw,\r\n scaled,\r\n },\r\n };\r\n }\r\n\r\n return acc;\r\n }, {});\r\n } else {\r\n //first get all the brush selections\r\n const brushSelections = {};\r\n pc.g()\r\n .selectAll('.brush')\r\n .each(function(d) {\r\n brushSelections[d] = select(this);\r\n });\r\n\r\n // loop over each dimension and update appropriately (if it was passed in through extents)\r\n Object.keys(config.dimensions).forEach(d => {\r\n if (extents[d] === undefined) {\r\n return;\r\n }\r\n\r\n const brush = brushes[d];\r\n if (brush !== undefined) {\r\n const dim = config.dimensions[d];\r\n const yExtent = extents[d].map(dim.yscale);\r\n\r\n //update the extent\r\n //sets the brushable extent to the specified array of points [[x0, y0], [x1, y1]]\r\n //we actually don't need this since we are using brush.move below\r\n //extents set the limits of the brush which means a user will not be able\r\n //to move or drag the brush beyond the limits set by brush.extent\r\n //brush.extent([[-15, yExtent[1]], [15, yExtent[0]]]);\r\n\r\n //redraw the brush\r\n //https://github.com/d3/d3-brush#brush_move\r\n // For an x-brush, it must be defined as [x0, x1]; for a y-brush, it must be defined as [y0, y1].\r\n brushSelections[d].call(brush).call(brush.move, yExtent.reverse());\r\n\r\n //fire some events\r\n // brush.event(brushSelections[d]);\r\n }\r\n });\r\n\r\n //redraw the chart\r\n pc.renderBrushed();\r\n\r\n return pc;\r\n }\r\n};\r\n\r\nexport default brushExtents;\r\n","import { select } from 'd3-selection';\r\n\r\nconst brushReset = (state, config, pc) => dimension => {\r\n const { brushes } = state;\r\n\r\n if (dimension === undefined) {\r\n config.brushed = false;\r\n if (pc.g() !== undefined && pc.g() !== null) {\r\n pc.g()\r\n .selectAll('.brush')\r\n .each(function(d) {\r\n if (brushes[d] !== undefined) {\r\n select(this).call(brushes[d].move, null);\r\n }\r\n });\r\n pc.renderBrushed();\r\n }\r\n } else {\r\n config.brushed = false;\r\n if (pc.g() !== undefined && pc.g() !== null) {\r\n pc.g()\r\n .selectAll('.brush')\r\n .each(function(d) {\r\n if (d !== dimension) return;\r\n select(this).call(brushes[d].move, null);\r\n if (typeof brushes[d].type === 'function') {\r\n brushes[d].event(select(this));\r\n }\r\n });\r\n pc.renderBrushed();\r\n }\r\n }\r\n return this;\r\n};\r\n\r\nexport default brushReset;\r\n","import { brushSelection } from 'd3-brush';\r\n//https://github.com/d3/d3-brush/issues/10\r\n\r\n// data within extents\r\nconst selected = (state, config, brushGroup) => () => {\r\n const { brushNodes } = state;\r\n const is_brushed = p =>\r\n brushNodes[p] && brushSelection(brushNodes[p]) !== null;\r\n\r\n const actives = Object.keys(config.dimensions).filter(is_brushed);\r\n const extents = actives.map(p => {\r\n const _brushRange = brushSelection(brushNodes[p]);\r\n\r\n if (typeof config.dimensions[p].yscale.invert === 'function') {\r\n return [\r\n config.dimensions[p].yscale.invert(_brushRange[1]),\r\n config.dimensions[p].yscale.invert(_brushRange[0]),\r\n ];\r\n } else {\r\n return _brushRange;\r\n }\r\n });\r\n // We don't want to return the full data set when there are no axes brushed.\r\n // Actually, when there are no axes brushed, by definition, no items are\r\n // selected. So, let's avoid the filtering and just return false.\r\n //if (actives.length === 0) return false;\r\n\r\n // Resolves broken examples for now. They expect to get the full dataset back from empty brushes\r\n if (actives.length === 0) return config.data;\r\n\r\n // test if within range\r\n const within = {\r\n date: (d, p, dimension) => {\r\n if (typeof config.dimensions[p].yscale.bandwidth === 'function') {\r\n // if it is ordinal\r\n return (\r\n extents[dimension][0] <= config.dimensions[p].yscale(d[p]) &&\r\n config.dimensions[p].yscale(d[p]) <= extents[dimension][1]\r\n );\r\n } else {\r\n return extents[dimension][0] <= d[p] && d[p] <= extents[dimension][1];\r\n }\r\n },\r\n number: (d, p, dimension) => {\r\n if (typeof config.dimensions[p].yscale.bandwidth === 'function') {\r\n // if it is ordinal\r\n return (\r\n extents[dimension][0] <= config.dimensions[p].yscale(d[p]) &&\r\n config.dimensions[p].yscale(d[p]) <= extents[dimension][1]\r\n );\r\n } else {\r\n return extents[dimension][0] <= d[p] && d[p] <= extents[dimension][1];\r\n }\r\n },\r\n string: (d, p, dimension) => {\r\n return (\r\n extents[dimension][0] <= config.dimensions[p].yscale(d[p]) &&\r\n config.dimensions[p].yscale(d[p]) <= extents[dimension][1]\r\n );\r\n },\r\n };\r\n\r\n return config.data.filter(d => {\r\n switch (brushGroup.predicate) {\r\n case 'AND':\r\n return actives.every(function(p, dimension) {\r\n return within[config.dimensions[p].type](d, p, dimension);\r\n });\r\n case 'OR':\r\n return actives.some(function(p, dimension) {\r\n return within[config.dimensions[p].type](d, p, dimension);\r\n });\r\n default:\r\n throw new Error('Unknown brush predicate ' + config.brushPredicate);\r\n }\r\n });\r\n};\r\n\r\nexport default selected;\r\n","import { brushY, brushSelection } from 'd3-brush';\r\nimport invertByScale from '../invertByScale';\r\nimport selected from './selected';\r\n\r\nconst brushUpdated = (config, pc, events, args) => newSelection => {\r\n config.brushed = newSelection;\r\n events.call('brush', pc, config.brushed, args);\r\n pc.renderBrushed();\r\n};\r\n\r\nconst brushFor = (state, config, pc, events, brushGroup) => (\r\n axis,\r\n _selector\r\n) => {\r\n // handle hidden axes which will not be a property of dimensions\r\n if (!config.dimensions.hasOwnProperty(axis)) {\r\n return () => {};\r\n }\r\n\r\n const brushRangeMax =\r\n config.dimensions[axis].type === 'string'\r\n ? config.dimensions[axis].yscale.range()[\r\n config.dimensions[axis].yscale.range().length - 1\r\n ]\r\n : config.dimensions[axis].yscale.range()[0];\r\n\r\n const _brush = brushY(_selector).extent([[-15, 0], [15, brushRangeMax]]);\r\n\r\n const convertBrushArguments = args => {\r\n const args_array = Array.prototype.slice.call(args);\r\n const axis = args_array[0];\r\n\r\n const raw = brushSelection(args_array[2][0]) || [];\r\n\r\n // handle hidden axes which will not have a yscale\r\n let yscale = null;\r\n if (config.dimensions.hasOwnProperty(axis)) {\r\n yscale = config.dimensions[axis].yscale;\r\n }\r\n\r\n // ordinal scales do not have invert\r\n const scaled = invertByScale(raw, yscale);\r\n\r\n return {\r\n axis: args_array[0],\r\n node: args_array[2][0],\r\n selection: {\r\n raw,\r\n scaled,\r\n },\r\n };\r\n };\r\n\r\n _brush\r\n .on('start', function(event) {\r\n if (event.sourceEvent !== null) {\r\n events.call(\r\n 'brushstart',\r\n pc,\r\n config.brushed,\r\n convertBrushArguments(arguments)\r\n );\r\n if (typeof event.sourceEvent.stopPropagation === 'function') {\r\n event.sourceEvent.stopPropagation();\r\n }\r\n }\r\n })\r\n .on('brush', function() {\r\n brushUpdated(\r\n config,\r\n pc,\r\n events,\r\n convertBrushArguments(arguments)\r\n )(selected(state, config, brushGroup)());\r\n })\r\n .on('end', function() {\r\n brushUpdated(config, pc, events)(selected(state, config, brushGroup)());\r\n events.call(\r\n 'brushend',\r\n pc,\r\n config.brushed,\r\n convertBrushArguments(arguments)\r\n );\r\n });\r\n\r\n state.brushes[axis] = _brush;\r\n state.brushNodes[axis] = _selector.node();\r\n\r\n return _brush;\r\n};\r\n\r\nexport default brushFor;\r\n","import { select } from 'd3-selection';\r\nimport brushExtents from './brushExtents';\r\nimport brushReset from './brushReset';\r\nimport brushFor from './brushFor';\r\n\r\nconst install = (state, config, pc, events, brushGroup) => () => {\r\n if (!pc.g()) {\r\n pc.createAxes();\r\n }\r\n\r\n // Add and store a brush for each axis.\r\n const brush = pc\r\n .g()\r\n .append('svg:g')\r\n .attr('class', 'brush')\r\n .each(function(d) {\r\n select(this).call(\r\n brushFor(state, config, pc, events, brushGroup)(d, select(this))\r\n );\r\n });\r\n brush\r\n .selectAll('rect')\r\n .style('visibility', null)\r\n .attr('x', -15)\r\n .attr('width', 30);\r\n\r\n brush.selectAll('rect.background').style('fill', 'transparent');\r\n\r\n brush\r\n .selectAll('rect.extent')\r\n .style('fill', 'rgba(255,255,255,0.25)')\r\n .style('stroke', 'rgba(0,0,0,0.6)');\r\n\r\n brush.selectAll('.resize rect').style('fill', 'rgba(0,0,0,0.1)');\r\n\r\n pc.brushExtents = brushExtents(state, config, pc);\r\n pc.brushReset = brushReset(state, config, pc);\r\n return pc;\r\n};\r\n\r\nexport default install;\r\n","const uninstall = (state, pc) => () => {\r\n if (pc.g() !== undefined && pc.g() !== null)\r\n pc.g()\r\n .selectAll('.brush')\r\n .remove();\r\n\r\n state.brushes = {};\r\n delete pc.brushExtents;\r\n delete pc.brushReset;\r\n};\r\n\r\nexport default uninstall;\r\n","import brushExtents from './brushExtents';\r\nimport install from './install';\r\nimport selected from './selected';\r\nimport uninstall from './uninstall';\r\n\r\nconst install1DAxes = (brushGroup, config, pc, events) => {\r\n const state = {\r\n brushes: {},\r\n brushNodes: {},\r\n };\r\n\r\n brushGroup.modes['1D-axes'] = {\r\n install: install(state, config, pc, events, brushGroup),\r\n uninstall: uninstall(state, pc),\r\n selected: selected(state, config, brushGroup),\r\n brushState: brushExtents(state, config, pc),\r\n };\r\n};\r\n\r\nexport default install1DAxes;\r\n","import { select } from 'd3-selection';\r\n\r\nconst drawBrushes = (brushes, config, pc, axis, selector) => {\r\n const brushSelection = selector.selectAll('.brush').data(brushes, d => d.id);\r\n\r\n brushSelection\r\n .enter()\r\n .insert('g', '.brush')\r\n .attr('class', 'brush')\r\n .attr('dimension', axis)\r\n .attr(\r\n 'id',\r\n b => 'brush-' + Object.keys(config.dimensions).indexOf(axis) + '-' + b.id\r\n )\r\n .each(function(brushObject) {\r\n brushObject.brush(select(this));\r\n });\r\n\r\n brushSelection.each(function(brushObject) {\r\n select(this)\r\n .attr('class', 'brush')\r\n .selectAll('.overlay')\r\n .style('pointer-events', function() {\r\n const brush = brushObject.brush;\r\n if (brushObject.id === brushes.length - 1 && brush !== undefined) {\r\n return 'all';\r\n } else {\r\n return 'none';\r\n }\r\n });\r\n });\r\n\r\n brushSelection.exit().remove();\r\n};\r\n\r\nexport default drawBrushes;\r\n","import { brushSelection } from 'd3-brush';\r\n\r\n// data within extents\r\nconst selected = (state, config, pc, events, brushGroup) => {\r\n const { brushes } = state;\r\n\r\n const is_brushed = (p, pos) => {\r\n const axisBrushes = brushes[p];\r\n\r\n for (let i = 0; i < axisBrushes.length; i++) {\r\n const brush = document.getElementById('brush-' + pos + '-' + i);\r\n\r\n if (brush && brushSelection(brush) !== null) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const actives = Object.keys(config.dimensions).filter(is_brushed);\r\n const extents = actives.map(p => {\r\n const axisBrushes = brushes[p];\r\n\r\n return axisBrushes\r\n .filter(d => !pc.hideAxis().includes(d))\r\n .map((d, i) =>\r\n brushSelection(\r\n document.getElementById(\r\n 'brush-' + Object.keys(config.dimensions).indexOf(p) + '-' + i\r\n )\r\n )\r\n )\r\n .map((d, i) => {\r\n if (d === null || d === undefined) {\r\n return null;\r\n } else if (typeof config.dimensions[p].yscale.invert === 'function') {\r\n return [\r\n config.dimensions[p].yscale.invert(d[1]),\r\n config.dimensions[p].yscale.invert(d[0]),\r\n ];\r\n } else {\r\n return d;\r\n }\r\n });\r\n });\r\n\r\n // We don't want to return the full data set when there are no axes brushed.\r\n // Actually, when there are no axes brushed, by definition, no items are\r\n // selected. So, let's avoid the filtering and just return false.\r\n //if (actives.length === 0) return false;\r\n\r\n // Resolves broken examples for now. They expect to get the full dataset back from empty brushes\r\n if (actives.length === 0) return config.data;\r\n\r\n // test if within range\r\n const within = {\r\n date: (d, p, i) => {\r\n const dimExt = extents[i];\r\n\r\n if (typeof config.dimensions[p].yscale.bandwidth === 'function') {\r\n // if it is ordinal\r\n for (const e of dimExt) {\r\n if (e === null || e === undefined) {\r\n continue;\r\n }\r\n\r\n if (\r\n e[0] <= config.dimensions[p].yscale(d[p]) &&\r\n config.dimensions[p].yscale(d[p]) <= e[1]\r\n ) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n } else {\r\n for (const e of dimExt) {\r\n if (e === null || e === undefined) {\r\n continue;\r\n }\r\n\r\n if (e[0] <= d[p] && d[p] <= e[1]) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n },\r\n number: (d, p, i) => {\r\n const dimExt = extents[i];\r\n\r\n if (typeof config.dimensions[p].yscale.bandwidth === 'function') {\r\n // if it is ordinal\r\n for (const e of dimExt) {\r\n if (e === null || e === undefined) {\r\n continue;\r\n }\r\n\r\n if (\r\n e[0] <= config.dimensions[p].yscale(d[p]) &&\r\n config.dimensions[p].yscale(d[p]) <= e[1]\r\n ) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n } else {\r\n for (const e of dimExt) {\r\n if (e === null || e === undefined) {\r\n continue;\r\n }\r\n\r\n if (e[0] <= d[p] && d[p] <= e[1]) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n },\r\n string: (d, p, i) => {\r\n const dimExt = extents[i];\r\n\r\n for (const e of dimExt) {\r\n if (e === null || e === undefined) {\r\n continue;\r\n }\r\n\r\n if (\r\n e[0] <= config.dimensions[p].yscale(d[p]) &&\r\n config.dimensions[p].yscale(d[p]) <= e[1]\r\n ) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n },\r\n };\r\n\r\n return config.data.filter(d => {\r\n switch (brushGroup.predicate) {\r\n case 'AND':\r\n return actives.every((p, i) =>\r\n within[config.dimensions[p].type](d, p, i)\r\n );\r\n case 'OR':\r\n return actives.some((p, i) =>\r\n within[config.dimensions[p].type](d, p, i)\r\n );\r\n default:\r\n throw new Error('Unknown brush predicate ' + config.brushPredicate);\r\n }\r\n });\r\n};\r\n\r\nexport default selected;\r\n","import { brushY, brushSelection } from 'd3-brush';\r\nimport { select } from 'd3-selection';\r\nimport drawBrushes from './drawBrushes';\r\nimport selected from './selected';\r\n\r\nconst brushUpdated = (config, pc, events) => newSelection => {\r\n config.brushed = newSelection;\r\n events.call('brush', pc, config.brushed);\r\n pc.renderBrushed();\r\n};\r\n\r\nconst newBrush = (state, config, pc, events, brushGroup) => (\r\n axis,\r\n _selector\r\n) => {\r\n const { brushes, brushNodes } = state;\r\n\r\n const brushRangeMax =\r\n config.dimensions[axis].type === 'string'\r\n ? config.dimensions[axis].yscale.range()[\r\n config.dimensions[axis].yscale.range().length - 1\r\n ]\r\n : config.dimensions[axis].yscale.range()[0];\r\n\r\n const brush = brushY().extent([[-15, 0], [15, brushRangeMax]]);\r\n const id = brushes[axis] ? brushes[axis].length : 0;\r\n const node =\r\n 'brush-' + Object.keys(config.dimensions).indexOf(axis) + '-' + id;\r\n\r\n if (brushes[axis]) {\r\n brushes[axis].push({\r\n id,\r\n brush,\r\n node,\r\n });\r\n } else {\r\n brushes[axis] = [{ id, brush, node }];\r\n }\r\n\r\n if (brushNodes[axis]) {\r\n brushNodes[axis].push({ id, node });\r\n } else {\r\n brushNodes[axis] = [{ id, node }];\r\n }\r\n\r\n brush\r\n .on('start', function(event) {\r\n if (event.sourceEvent !== null) {\r\n events.call('brushstart', pc, config.brushed);\r\n if (typeof event.sourceEvent.stopPropagation === 'function') {\r\n event.sourceEvent.stopPropagation();\r\n }\r\n }\r\n })\r\n .on('brush', function() {\r\n // record selections\r\n brushUpdated(\r\n config,\r\n pc,\r\n events\r\n )(selected(state, config, pc, events, brushGroup));\r\n })\r\n .on('end', function(event) {\r\n // Figure out if our latest brush has a selection\r\n const lastBrushID = brushes[axis][brushes[axis].length - 1].id;\r\n const lastBrush = document.getElementById(\r\n 'brush-' +\r\n Object.keys(config.dimensions).indexOf(axis) +\r\n '-' +\r\n lastBrushID\r\n );\r\n const selection = brushSelection(lastBrush);\r\n\r\n if (\r\n selection !== undefined &&\r\n selection !== null &&\r\n selection[0] !== selection[1]\r\n ) {\r\n newBrush(state, config, pc, events, brushGroup)(axis, _selector);\r\n\r\n drawBrushes(brushes[axis], config, pc, axis, _selector);\r\n\r\n brushUpdated(config, pc, events)(\r\n selected(state, config, pc, events, brushGroup)\r\n );\r\n } else {\r\n if (\r\n event.sourceEvent &&\r\n event.sourceEvent.toString() === '[object MouseEvent]' &&\r\n event.selection === null\r\n ) {\r\n pc.brushReset(axis);\r\n }\r\n }\r\n\r\n events.call('brushend', pc, config.brushed);\r\n });\r\n\r\n return brush;\r\n};\r\n\r\nexport default newBrush;\r\n","import { select } from 'd3-selection';\r\nimport { brushSelection } from 'd3-brush';\r\nimport newBrush from './newBrush';\r\nimport drawBrushes from './drawBrushes';\r\nimport invertByScale from '../invertByScale';\r\n\r\n/**\r\n *\r\n * extents are in format of [[2,6], [3,5]]\r\n *\r\n * * @param state\r\n * @param config\r\n * @param pc\r\n * @returns {Function}\r\n */\r\nconst brushExtents = (state, config, pc, events, brushGroup) => extents => {\r\n const { brushes } = state;\r\n const hiddenAxes = pc.hideAxis();\r\n\r\n if (typeof extents === 'undefined') {\r\n return Object.keys(config.dimensions)\r\n .filter(d => !hiddenAxes.includes(d))\r\n .reduce((acc, cur, pos) => {\r\n const axisBrushes = brushes[cur];\r\n\r\n if (axisBrushes === undefined || axisBrushes === null) {\r\n acc[cur] = [];\r\n } else {\r\n acc[cur] = axisBrushes.reduce((d, p, i) => {\r\n const raw = brushSelection(\r\n document.getElementById('brush-' + pos + '-' + i)\r\n );\r\n\r\n if (raw) {\r\n const yScale = config.dimensions[cur].yscale;\r\n const scaled = invertByScale(raw, yScale);\r\n\r\n d.push({\r\n extent: p.brush.extent(),\r\n selection: {\r\n raw,\r\n scaled,\r\n },\r\n });\r\n }\r\n return d;\r\n }, []);\r\n }\r\n\r\n return acc;\r\n }, {});\r\n } else {\r\n // //first get all the brush selections\r\n // loop over each dimension and update appropriately (if it was passed in through extents)\r\n Object.keys(config.dimensions).forEach((d, pos) => {\r\n if (extents[d] === undefined || extents[d] === null) {\r\n return;\r\n }\r\n\r\n const dim = config.dimensions[d];\r\n\r\n const yExtents = extents[d].map(e => e.map(dim.yscale));\r\n\r\n const _bs = yExtents.map((e, j) => {\r\n const _brush = newBrush(state, config, pc, events, brushGroup)(\r\n d,\r\n select('#brush-group-' + pos)\r\n );\r\n //update the extent\r\n //sets the brushable extent to the specified array of points [[x0, y0], [x1, y1]]\r\n _brush.extent([[-15, e[1]], [15, e[0]]]);\r\n\r\n return {\r\n id: j,\r\n brush: _brush,\r\n ext: e,\r\n };\r\n });\r\n\r\n brushes[d] = _bs;\r\n\r\n drawBrushes(_bs, config, pc, d, select('#brush-group-' + pos));\r\n\r\n //redraw the brush\r\n //https://github.com/d3/d3-brush#brush_move\r\n // For an x-brush, it must be defined as [x0, x1]; for a y-brush, it must be defined as [y0, y1].\r\n _bs.forEach((f, k) => {\r\n select('#brush-' + pos + '-' + k)\r\n .call(f.brush)\r\n .call(f.brush.move, f.ext.reverse());\r\n });\r\n });\r\n\r\n //redraw the chart\r\n pc.renderBrushed();\r\n\r\n return pc;\r\n }\r\n};\r\n\r\nexport default brushExtents;\r\n","import { select } from 'd3-selection';\r\nimport { brushSelection } from 'd3-brush';\r\n\r\nconst brushReset = (state, config, pc) => dimension => {\r\n const { brushes } = state;\r\n\r\n if (dimension === undefined) {\r\n if (pc.g() !== undefined && pc.g() !== null) {\r\n Object.keys(config.dimensions).forEach((d, pos) => {\r\n const axisBrush = brushes[d];\r\n\r\n // hidden axes will be undefined\r\n if (axisBrush) {\r\n axisBrush.forEach((e, i) => {\r\n const brush = document.getElementById('brush-' + pos + '-' + i);\r\n if (brush && brushSelection(brush) !== null) {\r\n pc.g()\r\n .select('#brush-' + pos + '-' + i)\r\n .call(e.brush.move, null);\r\n }\r\n });\r\n }\r\n });\r\n\r\n pc.renderBrushed();\r\n }\r\n } else {\r\n if (pc.g() !== undefined && pc.g() !== null) {\r\n const axisBrush = brushes[dimension];\r\n const pos = Object.keys(config.dimensions).indexOf(dimension);\r\n\r\n if (axisBrush) {\r\n axisBrush.forEach((e, i) => {\r\n const brush = document.getElementById('brush-' + pos + '-' + i);\r\n if (brushSelection(brush) !== null) {\r\n pc.g()\r\n .select('#brush-' + pos + '-' + i)\r\n .call(e.brush.move, null);\r\n\r\n if (typeof e.event === 'function') {\r\n e.event(select('#brush-' + pos + '-' + i));\r\n }\r\n }\r\n });\r\n }\r\n\r\n pc.renderBrushed();\r\n }\r\n }\r\n return this;\r\n};\r\n\r\nexport default brushReset;\r\n","import newBrush from './newBrush';\r\nimport drawBrushes from './drawBrushes';\r\n\r\nconst brushFor = (state, config, pc, events, brushGroup) => (\r\n axis,\r\n _selector\r\n) => {\r\n const { brushes } = state;\r\n newBrush(state, config, pc, events, brushGroup)(axis, _selector);\r\n drawBrushes(brushes[axis], config, pc, axis, _selector);\r\n};\r\n\r\nexport default brushFor;\r\n","import { select } from 'd3-selection';\r\nimport brushExtents from './brushExtents';\r\nimport brushReset from './brushReset';\r\nimport brushFor from './brushFor';\r\n\r\nconst install = (state, config, pc, events, brushGroup) => () => {\r\n if (!pc.g()) {\r\n pc.createAxes();\r\n }\r\n\r\n const hiddenAxes = pc.hideAxis();\r\n\r\n pc.g()\r\n .append('svg:g')\r\n .attr('id', (d, i) => 'brush-group-' + i)\r\n .attr('class', 'brush-group')\r\n .attr('dimension', d => d)\r\n .each(function(d) {\r\n if (!hiddenAxes.includes(d)) {\r\n brushFor(state, config, pc, events, brushGroup)(d, select(this));\r\n }\r\n });\r\n\r\n pc.brushExtents = brushExtents(state, config, pc, events, brushGroup);\r\n pc.brushReset = brushReset(state, config, pc);\r\n return pc;\r\n};\r\n\r\nexport default install;\r\n","const uninstall = (state, pc) => () => {\r\n if (pc.g() !== undefined && pc.g() !== null)\r\n pc.g()\r\n .selectAll('.brush-group')\r\n .remove();\r\n\r\n state.brushes = {};\r\n delete pc.brushExtents;\r\n delete pc.brushReset;\r\n};\r\n\r\nexport default uninstall;\r\n","import brushExtents from './brushExtents';\r\nimport install from './install';\r\nimport selected from './selected';\r\nimport uninstall from './uninstall';\r\n\r\nconst install1DMultiAxes = (brushGroup, config, pc, events) => {\r\n const state = {\r\n brushes: {},\r\n brushNodes: {},\r\n };\r\n\r\n brushGroup.modes['1D-axes-multi'] = {\r\n install: install(state, config, pc, events, brushGroup),\r\n uninstall: uninstall(state, pc),\r\n selected: selected(state, config, brushGroup),\r\n brushState: brushExtents(state, config, pc),\r\n };\r\n};\r\n\r\nexport default install1DMultiAxes;\r\n","const uninstall = (state, pc) => () => {\r\n pc.selection\r\n .select('svg')\r\n .select('g#strums')\r\n .remove();\r\n pc.selection\r\n .select('svg')\r\n .select('rect#strum-events')\r\n .remove();\r\n pc.on('axesreorder.strums', undefined);\r\n delete pc.brushReset;\r\n\r\n state.strumRect = undefined;\r\n};\r\n\r\nexport default uninstall;\r\n","// test if point falls between lines\r\nconst containmentTest = (strum, width) => p => {\r\n const p1 = [strum.p1[0] - strum.minX, strum.p1[1] - strum.minX],\r\n p2 = [strum.p2[0] - strum.minX, strum.p2[1] - strum.minX],\r\n m1 = 1 - width / p1[0],\r\n b1 = p1[1] * (1 - m1),\r\n m2 = 1 - width / p2[0],\r\n b2 = p2[1] * (1 - m2);\r\n\r\n const x = p[0],\r\n y = p[1],\r\n y1 = m1 * x + b1,\r\n y2 = m2 * x + b2;\r\n\r\n return y > Math.min(y1, y2) && y < Math.max(y1, y2);\r\n};\r\n\r\nconst crossesStrum = (state, config) => (d, id) => {\r\n let strum = state.strums[id],\r\n test = containmentTest(strum, state.strums.width(id)),\r\n d1 = strum.dims.left,\r\n d2 = strum.dims.right,\r\n y1 = config.dimensions[d1].yscale,\r\n y2 = config.dimensions[d2].yscale,\r\n point = [y1(d[d1]) - strum.minX, y2(d[d2]) - strum.minX];\r\n return test(point);\r\n};\r\n\r\nconst selected = (brushGroup, state, config) => {\r\n // Get the ids of the currently active strums.\r\n const ids = Object.getOwnPropertyNames(state.strums).filter(d => !isNaN(d)),\r\n brushed = config.data;\r\n\r\n if (ids.length === 0) {\r\n return brushed;\r\n }\r\n\r\n const crossTest = crossesStrum(state, config);\r\n\r\n return brushed.filter(d => {\r\n switch (brushGroup.predicate) {\r\n case 'AND':\r\n return ids.every(id => crossTest(d, id));\r\n case 'OR':\r\n return ids.some(id => crossTest(d, id));\r\n default:\r\n throw new Error('Unknown brush predicate ' + config.brushPredicate);\r\n }\r\n });\r\n};\r\n\r\nexport default selected;\r\n","const removeStrum = (state, pc) => {\r\n const strum = state.strums[state.strums.active],\r\n svg = pc.selection.select('svg').select('g#strums');\r\n\r\n delete state.strums[state.strums.active];\r\n svg.selectAll('line#strum-' + strum.dims.i).remove();\r\n svg.selectAll('circle#strum-' + strum.dims.i).remove();\r\n};\r\n\r\nexport default removeStrum;\r\n","import selected from './selected';\r\nimport removeStrum from './removeStrum';\r\n\r\nconst onDragEnd = (brushGroup, state, config, pc, events) => () => {\r\n const strum = state.strums[state.strums.active];\r\n\r\n // Okay, somewhat unexpected, but not totally unsurprising, a mousclick is\r\n // considered a drag without move. So we have to deal with that case\r\n if (strum && strum.p1[0] === strum.p2[0] && strum.p1[1] === strum.p2[1]) {\r\n removeStrum(state, pc);\r\n }\r\n\r\n const brushed = selected(brushGroup, state, config);\r\n state.strums.active = undefined;\r\n config.brushed = brushed;\r\n pc.renderBrushed();\r\n events.call('brushend', pc, config.brushed);\r\n};\r\n\r\nexport default onDragEnd;\r\n","import { select } from 'd3-selection';\r\nimport { drag } from 'd3-drag';\r\nimport onDragEnd from './onDragEnd';\r\n\r\nconst drawStrum = (\r\n brushGroup,\r\n state,\r\n config,\r\n pc,\r\n events,\r\n strum,\r\n activePoint\r\n) => {\r\n let _svg = pc.selection.select('svg').select('g#strums'),\r\n id = strum.dims.i,\r\n points = [strum.p1, strum.p2],\r\n _line = _svg.selectAll('line#strum-' + id).data([strum]),\r\n circles = _svg.selectAll('circle#strum-' + id).data(points),\r\n _drag = drag();\r\n\r\n _line\r\n .enter()\r\n .append('line')\r\n .attr('id', 'strum-' + id)\r\n .attr('class', 'strum');\r\n\r\n _line\r\n .attr('x1', d => d.p1[0])\r\n .attr('y1', d => d.p1[1])\r\n .attr('x2', d => d.p2[0])\r\n .attr('y2', d => d.p2[1])\r\n .attr('stroke', 'black')\r\n .attr('stroke-width', 2);\r\n\r\n _drag\r\n .on('drag', function(event, d) {\r\n const i = points.indexOf(d) + 1;\r\n strum['p' + i][0] = Math.min(Math.max(strum.minX + 1, event.x), strum.maxX);\r\n strum['p' + i][1] = Math.min(Math.max(strum.minY, event.y), strum.maxY);\r\n drawStrum(brushGroup, state, config, pc, events, strum, i - 1);\r\n })\r\n .on('end', onDragEnd(brushGroup, state, config, pc, events));\r\n\r\n circles\r\n .enter()\r\n .append('circle')\r\n .attr('id', 'strum-' + id)\r\n .attr('class', 'strum');\r\n\r\n circles\r\n .attr('cx', d => d[0])\r\n .attr('cy', d => d[1])\r\n .attr('r', 5)\r\n .style(\r\n 'opacity',\r\n (d, i) => (activePoint !== undefined && i === activePoint ? 0.8 : 0)\r\n )\r\n .on('mouseover', function() {\r\n select(this).style('opacity', 0.8);\r\n })\r\n .on('mouseout', function() {\r\n select(this).style('opacity', 0);\r\n })\r\n .call(_drag);\r\n};\r\n\r\nconst onDrag = (brushGroup, state, config, pc, events) => (event) => {\r\n const strum = state.strums[state.strums.active];\r\n\r\n // Make sure that the point is within the bounds\r\n strum.p2[0] = Math.min(\r\n Math.max(strum.minX + 1, event.x - config.margin.left),\r\n strum.maxX\r\n );\r\n strum.p2[1] = Math.min(\r\n Math.max(strum.minY, event.y - config.margin.top),\r\n strum.maxY\r\n );\r\n\r\n drawStrum(brushGroup, state, config, pc, events, strum, 1);\r\n};\r\n\r\nexport default onDrag;\r\n","const h = config => config.height - config.margin.top - config.margin.bottom;\r\n\r\nexport default h;\r\n","const dimensionsForPoint = (config, pc, xscale, p) => {\r\n const dims = { i: -1, left: undefined, right: undefined };\r\n Object.keys(config.dimensions).some((dim, i) => {\r\n if (xscale(dim) < p[0]) {\r\n dims.i = i;\r\n dims.left = dim;\r\n dims.right = Object.keys(config.dimensions)[\r\n pc.getOrderedDimensionKeys().indexOf(dim) + 1\r\n ];\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n if (dims.left === undefined) {\r\n // Event on the left side of the first axis.\r\n dims.i = 0;\r\n dims.left = pc.getOrderedDimensionKeys()[0];\r\n dims.right = pc.getOrderedDimensionKeys()[1];\r\n } else if (dims.right === undefined) {\r\n // Event on the right side of the last axis\r\n dims.i = Object.keys(config.dimensions).length - 1;\r\n dims.right = dims.left;\r\n dims.left = pc.getOrderedDimensionKeys()[\r\n Object.keys(config.dimensions).length - 2\r\n ];\r\n }\r\n\r\n return dims;\r\n};\r\n\r\nexport default dimensionsForPoint;\r\n","import { pointer } from 'd3-selection';\r\nimport h from '../../util/height';\r\nimport dimensionsForPoint from '../dimensionsForPoint';\r\n\r\n// First we need to determine between which two axes the sturm was started.\r\n// This will determine the freedom of movement, because a strum can\r\n// logically only happen between two axes, so no movement outside these axes\r\n// should be allowed.\r\nconst onDragStart = (state, config, pc, xscale) => (event) => {\r\n let p = pointer(event, state.strumRect.node());\r\n\r\n p[0] = p[0] - config.margin.left;\r\n p[1] = p[1] - config.margin.top;\r\n\r\n const dims = dimensionsForPoint(config, pc, xscale, p);\r\n const strum = {\r\n p1: p,\r\n dims: dims,\r\n minX: xscale(dims.left),\r\n maxX: xscale(dims.right),\r\n minY: 0,\r\n maxY: h(config),\r\n };\r\n\r\n // Make sure that the point is within the bounds\r\n strum.p1[0] = Math.min(Math.max(strum.minX, p[0]), strum.maxX);\r\n strum.p2 = strum.p1.slice();\r\n\r\n state.strums[dims.i] = strum;\r\n state.strums.active = dims.i;\r\n};\r\n\r\nexport default onDragStart;\r\n","import onDragEnd from './onDragEnd';\r\nimport removeStrum from './removeStrum';\r\n\r\nconst brushReset = (brushGroup, state, config, pc, events) => () => {\r\n const ids = Object.getOwnPropertyNames(state.strums).filter(d => !isNaN(d));\r\n\r\n ids.forEach(d => {\r\n state.strums.active = d;\r\n removeStrum(state, pc);\r\n });\r\n onDragEnd(brushGroup, state, config, pc, events)();\r\n};\r\n\r\nexport default brushReset;\r\n","// Checks if the first dimension is directly left of the second dimension.\r\nconst consecutive = dimensions => (first, second) => {\r\n const keys = Object.keys(dimensions);\r\n\r\n return keys.some(\r\n (d, i) =>\r\n d === first ? i + i < keys.length && dimensions[i + 1] === second : false\r\n );\r\n};\r\n\r\nexport default consecutive;\r\n","import { drag } from 'd3-drag';\r\nimport onDragEnd from './onDragEnd';\r\nimport onDrag from './onDrag';\r\nimport onDragStart from './onDragStart';\r\nimport removeStrum from './removeStrum';\r\nimport brushReset from './brushReset';\r\nimport w from '../../util/width';\r\nimport h from '../../util/height';\r\nimport consecutive from '../consecutive';\r\n\r\nconst install = (brushGroup, state, config, pc, events, xscale) => () => {\r\n if (pc.g() === undefined || pc.g() === null) {\r\n pc.createAxes();\r\n }\r\n\r\n const _drag = drag();\r\n\r\n // Map of current strums. Strums are stored per segment of the PC. A segment,\r\n // being the area between two axes. The left most area is indexed at 0.\r\n state.strums.active = undefined;\r\n // Returns the width of the PC segment where currently a strum is being\r\n // placed. NOTE: even though they are evenly spaced in our current\r\n // implementation, we keep for when non-even spaced segments are supported as\r\n // well.\r\n state.strums.width = id =>\r\n state.strums[id] === undefined\r\n ? undefined\r\n : state.strums[id].maxX - state.strums[id].minX;\r\n\r\n pc.on('axesreorder.strums', () => {\r\n const ids = Object.getOwnPropertyNames(state.strums).filter(d => !isNaN(d));\r\n\r\n if (ids.length > 0) {\r\n // We have some strums, which might need to be removed.\r\n ids.forEach(d => {\r\n const dims = state.strums[d].dims;\r\n state.strums.active = d;\r\n // If the two dimensions of the current strum are not next to each other\r\n // any more, than we'll need to remove the strum. Otherwise we keep it.\r\n if (!consecutive(config.dimensions)(dims.left, dims.right)) {\r\n removeStrum(state, pc);\r\n }\r\n });\r\n onDragEnd(brushGroup, state, config, pc, events)();\r\n }\r\n });\r\n\r\n // Add a new svg group in which we draw the strums.\r\n pc.selection\r\n .select('svg')\r\n .append('g')\r\n .attr('id', 'strums')\r\n .attr(\r\n 'transform',\r\n 'translate(' + config.margin.left + ',' + config.margin.top + ')'\r\n );\r\n\r\n // Install the required brushReset function\r\n pc.brushReset = brushReset(brushGroup, state, config, pc, events);\r\n\r\n _drag\r\n .on('start', onDragStart(state, config, pc, xscale))\r\n .on('drag', onDrag(brushGroup, state, config, pc, events))\r\n .on('end', onDragEnd(brushGroup, state, config, pc, events));\r\n\r\n // NOTE: The styling needs to be done here and not in the css. This is because\r\n // for 1D brushing, the canvas layers should not listen to\r\n // pointer-events._.\r\n state.strumRect = pc.selection\r\n .select('svg')\r\n .insert('rect', 'g#strums')\r\n .attr('id', 'strum-events')\r\n .attr('x', config.margin.left)\r\n .attr('y', config.margin.top)\r\n .attr('width', w(config))\r\n .attr('height', h(config) + 2)\r\n .style('opacity', 0)\r\n .call(_drag);\r\n};\r\n\r\nexport default install;\r\n","import uninstall from './uninstall';\r\nimport install from './install';\r\nimport selected from './selected';\r\n\r\nconst install2DStrums = (brushGroup, config, pc, events, xscale) => {\r\n const state = {\r\n strums: {},\r\n strumRect: {},\r\n };\r\n\r\n brushGroup.modes['2D-strums'] = {\r\n install: install(brushGroup, state, config, pc, events, xscale),\r\n uninstall: uninstall(state, pc),\r\n selected: selected(brushGroup, state, config),\r\n brushState: () => state.strums,\r\n };\r\n};\r\n\r\nexport default install2DStrums;\r\n","const uninstall = (state, pc) => () => {\r\n pc.selection\r\n .select('svg')\r\n .select('g#arcs')\r\n .remove();\r\n pc.selection\r\n .select('svg')\r\n .select('rect#arc-events')\r\n .remove();\r\n pc.on('axesreorder.arcs', undefined);\r\n\r\n delete pc.brushReset;\r\n\r\n state.strumRect = undefined;\r\n};\r\n\r\nexport default uninstall;\r\n","const hypothenuse = (a, b) => Math.sqrt(a * a + b * b);\r\n\r\nexport default hypothenuse;\r\n","import hypothenuse from './util/hypothenuse';\r\n\r\n// [0, 2*PI] -> [-PI/2, PI/2]\r\nconst signedAngle = angle =>\r\n angle > Math.PI ? 1.5 * Math.PI - angle : 0.5 * Math.PI - angle;\r\n\r\n/**\r\n * angles are stored in radians from in [0, 2*PI], where 0 in 12 o'clock.\r\n * However, one can only select lines from 0 to PI, so we compute the\r\n * 'signed' angle, where 0 is the horizontal line (3 o'clock), and +/- PI/2\r\n * are 12 and 6 o'clock respectively.\r\n */\r\nconst containmentTest = arc => a => {\r\n let startAngle = signedAngle(arc.startAngle);\r\n let endAngle = signedAngle(arc.endAngle);\r\n\r\n if (startAngle > endAngle) {\r\n const tmp = startAngle;\r\n startAngle = endAngle;\r\n endAngle = tmp;\r\n }\r\n\r\n // test if segment angle is contained in angle interval\r\n return a >= startAngle && a <= endAngle;\r\n};\r\n\r\nconst crossesStrum = (state, config) => (d, id) => {\r\n const arc = state.arcs[id],\r\n test = containmentTest(arc),\r\n d1 = arc.dims.left,\r\n d2 = arc.dims.right,\r\n y1 = config.dimensions[d1].yscale,\r\n y2 = config.dimensions[d2].yscale,\r\n a = state.arcs.width(id),\r\n b = y1(d[d1]) - y2(d[d2]),\r\n c = hypothenuse(a, b),\r\n angle = Math.asin(b / c); // rad in [-PI/2, PI/2]\r\n return test(angle);\r\n};\r\n\r\nconst selected = (brushGroup, state, config) => {\r\n const ids = Object.getOwnPropertyNames(state.arcs).filter(d => !isNaN(d));\r\n const brushed = config.data;\r\n\r\n if (ids.length === 0) {\r\n return brushed;\r\n }\r\n\r\n const crossTest = crossesStrum(state, config);\r\n\r\n return brushed.filter(d => {\r\n switch (brushGroup.predicate) {\r\n case 'AND':\r\n return ids.every(id => crossTest(d, id));\r\n case 'OR':\r\n return ids.some(id => crossTest(d, id));\r\n default:\r\n throw new Error('Unknown brush predicate ' + config.brushPredicate);\r\n }\r\n });\r\n};\r\n\r\nexport default selected;\r\n","const removeStrum = (state, pc) => {\r\n const arc = state.arcs[state.arcs.active],\r\n svg = pc.selection.select('svg').select('g#arcs');\r\n\r\n delete state.arcs[state.arcs.active];\r\n state.arcs.active = undefined;\r\n svg.selectAll('line#arc-' + arc.dims.i).remove();\r\n svg.selectAll('circle#arc-' + arc.dims.i).remove();\r\n svg.selectAll('path#arc-' + arc.dims.i).remove();\r\n};\r\n\r\nexport default removeStrum;\r\n","import selected from './selected';\r\nimport removeStrum from './removeStrum';\r\n\r\nconst onDragEnd = (brushGroup, state, config, pc, events) => () => {\r\n const arc = state.arcs[state.arcs.active];\r\n\r\n // Okay, somewhat unexpected, but not totally unsurprising, a mousclick is\r\n // considered a drag without move. So we have to deal with that case\r\n if (arc && arc.p1[0] === arc.p2[0] && arc.p1[1] === arc.p2[1]) {\r\n removeStrum(state, pc);\r\n }\r\n\r\n if (arc) {\r\n const angle = state.arcs.startAngle(state.arcs.active);\r\n\r\n arc.startAngle = angle;\r\n arc.endAngle = angle;\r\n arc.arc\r\n .outerRadius(state.arcs.length(state.arcs.active))\r\n .startAngle(angle)\r\n .endAngle(angle);\r\n }\r\n\r\n state.arcs.active = undefined;\r\n config.brushed = selected(brushGroup, state, config);\r\n pc.renderBrushed();\r\n events.call('brushend', pc, config.brushed);\r\n};\r\n\r\nexport default onDragEnd;\r\n","import { select } from 'd3-selection';\r\nimport { drag } from 'd3-drag';\r\nimport onDragEnd from './onDragEnd';\r\n\r\nconst drawStrum = (brushGroup, state, config, pc, events, arc, activePoint) => {\r\n const svg = pc.selection.select('svg').select('g#arcs'),\r\n id = arc.dims.i,\r\n points = [arc.p2, arc.p3],\r\n _line = svg\r\n .selectAll('line#arc-' + id)\r\n .data([{ p1: arc.p1, p2: arc.p2 }, { p1: arc.p1, p2: arc.p3 }]),\r\n circles = svg.selectAll('circle#arc-' + id).data(points),\r\n _drag = drag(),\r\n _path = svg.selectAll('path#arc-' + id).data([arc]);\r\n\r\n _path\r\n .enter()\r\n .append('path')\r\n .attr('id', 'arc-' + id)\r\n .attr('class', 'arc')\r\n .style('fill', 'orange')\r\n .style('opacity', 0.5);\r\n\r\n _path\r\n .attr('d', arc.arc)\r\n .attr('transform', 'translate(' + arc.p1[0] + ',' + arc.p1[1] + ')');\r\n\r\n _line\r\n .enter()\r\n .append('line')\r\n .attr('id', 'arc-' + id)\r\n .attr('class', 'arc');\r\n\r\n _line\r\n .attr('x1', d => d.p1[0])\r\n .attr('y1', d => d.p1[1])\r\n .attr('x2', d => d.p2[0])\r\n .attr('y2', d => d.p2[1])\r\n .attr('stroke', 'black')\r\n .attr('stroke-width', 2);\r\n\r\n _drag\r\n .on('drag', (event, d) => {\r\n const i = points.indexOf(d) + 2;\r\n\r\n arc['p' + i][0] = Math.min(Math.max(arc.minX + 1, event.x), arc.maxX);\r\n arc['p' + i][1] = Math.min(Math.max(arc.minY, event.y), arc.maxY);\r\n\r\n const angle =\r\n i === 3 ? state.arcs.startAngle(id) : state.arcs.endAngle(id);\r\n\r\n if (\r\n (arc.startAngle < Math.PI &&\r\n arc.endAngle < Math.PI &&\r\n angle < Math.PI) ||\r\n (arc.startAngle >= Math.PI &&\r\n arc.endAngle >= Math.PI &&\r\n angle >= Math.PI)\r\n ) {\r\n if (i === 2) {\r\n arc.endAngle = angle;\r\n arc.arc.endAngle(angle);\r\n } else if (i === 3) {\r\n arc.startAngle = angle;\r\n arc.arc.startAngle(angle);\r\n }\r\n }\r\n\r\n drawStrum(brushGroup, state, config, pc, events, arc, i - 2);\r\n })\r\n .on('end', onDragEnd(brushGroup, state, config, pc, events));\r\n\r\n circles\r\n .enter()\r\n .append('circle')\r\n .attr('id', 'arc-' + id)\r\n .attr('class', 'arc');\r\n\r\n circles\r\n .attr('cx', d => d[0])\r\n .attr('cy', d => d[1])\r\n .attr('r', 5)\r\n .style(\r\n 'opacity',\r\n (d, i) => (activePoint !== undefined && i === activePoint ? 0.8 : 0)\r\n )\r\n .on('mouseover', function() {\r\n select(this).style('opacity', 0.8);\r\n })\r\n .on('mouseout', function() {\r\n select(this).style('opacity', 0);\r\n })\r\n .call(_drag);\r\n};\r\n\r\nconst onDrag = (brushGroup, state, config, pc, events) => (event) => {\r\n const arc = state.arcs[state.arcs.active];\r\n\r\n // Make sure that the point is within the bounds\r\n arc.p2[0] = Math.min(\r\n Math.max(arc.minX + 1, event.x - config.margin.left),\r\n arc.maxX\r\n );\r\n arc.p2[1] = Math.min(Math.max(arc.minY, event.y - config.margin.top), arc.maxY);\r\n arc.p3 = arc.p2.slice();\r\n drawStrum(brushGroup, state, config, pc, events, arc, 1);\r\n};\r\n\r\nexport default onDrag;\r\n","import { pointer } from 'd3-selection';\r\nimport { arc as d3Arc } from 'd3-shape';\r\nimport dimensionsForPoint from '../dimensionsForPoint';\r\nimport h from '../../util/height';\r\n\r\n// First we need to determine between which two axes the arc was started.\r\n// This will determine the freedom of movement, because a arc can\r\n// logically only happen between two axes, so no movement outside these axes\r\n// should be allowed.\r\nconst onDragStart = (state, config, pc, xscale) => (event) => {\r\n const p = pointer(event, state.strumRect.node());\r\n\r\n p[0] = p[0] - config.margin.left;\r\n p[1] = p[1] - config.margin.top;\r\n\r\n const dims = dimensionsForPoint(config, pc, xscale, p);\r\n const arc = {\r\n p1: p,\r\n dims: dims,\r\n minX: xscale(dims.left),\r\n maxX: xscale(dims.right),\r\n minY: 0,\r\n maxY: h(config),\r\n startAngle: undefined,\r\n endAngle: undefined,\r\n arc: d3Arc().innerRadius(0),\r\n };\r\n\r\n // Make sure that the point is within the bounds\r\n arc.p1[0] = Math.min(Math.max(arc.minX, p[0]), arc.maxX);\r\n arc.p2 = arc.p1.slice();\r\n arc.p3 = arc.p1.slice();\r\n\r\n state.arcs[dims.i] = arc;\r\n state.arcs.active = dims.i;\r\n};\r\n\r\nexport default onDragStart;\r\n","import onDragEnd from './onDragEnd';\r\nimport removeStrum from './removeStrum';\r\n\r\nconst brushReset = (brushGroup, state, config, pc, events) => () => {\r\n const ids = Object.getOwnPropertyNames(state.arcs).filter(d => !isNaN(d));\r\n\r\n ids.forEach(d => {\r\n state.arcs.active = d;\r\n removeStrum(state, pc);\r\n });\r\n onDragEnd(brushGroup, state, config, pc, events)();\r\n};\r\n\r\nexport default brushReset;\r\n","import { drag } from 'd3-drag';\r\nimport onDragEnd from './onDragEnd';\r\nimport onDrag from './onDrag';\r\nimport onDragStart from './onDragStart';\r\nimport removeStrum from './removeStrum';\r\nimport brushReset from './brushReset';\r\nimport w from '../../util/width';\r\nimport h from '../../util/height';\r\n\r\nimport hypothenuse from './util/hypothenuse';\r\nimport consecutive from '../consecutive';\r\n\r\n// returns angles in [-PI/2, PI/2]\r\nconst angle = (p1, p2) => {\r\n const a = p1[0] - p2[0],\r\n b = p1[1] - p2[1],\r\n c = hypothenuse(a, b);\r\n\r\n return Math.asin(b / c);\r\n};\r\n\r\nconst endAngle = state => id => {\r\n const arc = state.arcs[id];\r\n if (arc === undefined) {\r\n return undefined;\r\n }\r\n let sAngle = angle(arc.p1, arc.p2),\r\n uAngle = -sAngle + Math.PI / 2;\r\n\r\n if (arc.p1[0] > arc.p2[0]) {\r\n uAngle = 2 * Math.PI - uAngle;\r\n }\r\n\r\n return uAngle;\r\n};\r\n\r\nconst startAngle = state => id => {\r\n const arc = state.arcs[id];\r\n if (arc === undefined) {\r\n return undefined;\r\n }\r\n\r\n let sAngle = angle(arc.p1, arc.p3),\r\n uAngle = -sAngle + Math.PI / 2;\r\n\r\n if (arc.p1[0] > arc.p3[0]) {\r\n uAngle = 2 * Math.PI - uAngle;\r\n }\r\n\r\n return uAngle;\r\n};\r\n\r\nconst length = state => id => {\r\n const arc = state.arcs[id];\r\n\r\n if (arc === undefined) {\r\n return undefined;\r\n }\r\n\r\n const a = arc.p1[0] - arc.p2[0],\r\n b = arc.p1[1] - arc.p2[1];\r\n\r\n return hypothenuse(a, b);\r\n};\r\n\r\nconst install = (brushGroup, state, config, pc, events, xscale) => () => {\r\n if (!pc.g()) {\r\n pc.createAxes();\r\n }\r\n\r\n const _drag = drag();\r\n\r\n // Map of current arcs. arcs are stored per segment of the PC. A segment,\r\n // being the area between two axes. The left most area is indexed at 0.\r\n state.arcs.active = undefined;\r\n // Returns the width of the PC segment where currently a arc is being\r\n // placed. NOTE: even though they are evenly spaced in our current\r\n // implementation, we keep for when non-even spaced segments are supported as\r\n // well.\r\n state.arcs.width = id => {\r\n const arc = state.arcs[id];\r\n return arc === undefined ? undefined : arc.maxX - arc.minX;\r\n };\r\n\r\n // returns angles in [0, 2 * PI]\r\n state.arcs.endAngle = endAngle(state);\r\n state.arcs.startAngle = startAngle(state);\r\n state.arcs.length = length(state);\r\n\r\n pc.on('axesreorder.arcs', () => {\r\n const ids = Object.getOwnPropertyNames(arcs).filter(d => !isNaN(d));\r\n\r\n if (ids.length > 0) {\r\n // We have some arcs, which might need to be removed.\r\n ids.forEach(d => {\r\n const dims = arcs[d].dims;\r\n state.arcs.active = d;\r\n // If the two dimensions of the current arc are not next to each other\r\n // any more, than we'll need to remove the arc. Otherwise we keep it.\r\n if (!consecutive(dims)(dims.left, dims.right)) {\r\n removeStrum(state, pc);\r\n }\r\n });\r\n onDragEnd(brushGroup, state, config, pc, events)();\r\n }\r\n });\r\n\r\n // Add a new svg group in which we draw the arcs.\r\n pc.selection\r\n .select('svg')\r\n .append('g')\r\n .attr('id', 'arcs')\r\n .attr(\r\n 'transform',\r\n 'translate(' + config.margin.left + ',' + config.margin.top + ')'\r\n );\r\n\r\n // Install the required brushReset function\r\n pc.brushReset = brushReset(brushGroup, state, config, pc, events);\r\n\r\n _drag\r\n .on('start', onDragStart(state, config, pc, xscale))\r\n .on('drag', onDrag(brushGroup, state, config, pc, events))\r\n .on('end', onDragEnd(brushGroup, state, config, pc, events));\r\n\r\n // NOTE: The styling needs to be done here and not in the css. This is because\r\n // for 1D brushing, the canvas layers should not listen to\r\n // pointer-events._.\r\n state.strumRect = pc.selection\r\n .select('svg')\r\n .insert('rect', 'g#arcs')\r\n .attr('id', 'arc-events')\r\n .attr('x', config.margin.left)\r\n .attr('y', config.margin.top)\r\n .attr('width', w(config))\r\n .attr('height', h(config) + 2)\r\n .style('opacity', 0)\r\n .call(_drag);\r\n};\r\n\r\nexport default install;\r\n","import uninstall from './uninstall';\r\nimport install from './install';\r\nimport selected from './selected';\r\n\r\nconst installAngularBrush = (brushGroup, config, pc, events, xscale) => {\r\n const state = {\r\n arcs: {},\r\n strumRect: {},\r\n };\r\n\r\n brushGroup.modes['angular'] = {\r\n install: install(brushGroup, state, config, pc, events, xscale),\r\n uninstall: uninstall(state, pc),\r\n selected: selected(brushGroup, state, config),\r\n brushState: () => state.arcs,\r\n };\r\n};\r\n\r\nexport default installAngularBrush;\r\n","// calculate 2d intersection of line a->b with line c->d\r\n// points are objects with x and y properties\r\nconst intersection = (a, b, c, d) => {\r\n return {\r\n x:\r\n ((a.x * b.y - a.y * b.x) * (c.x - d.x) -\r\n (a.x - b.x) * (c.x * d.y - c.y * d.x)) /\r\n ((a.x - b.x) * (c.y - d.y) - (a.y - b.y) * (c.x - d.x)),\r\n y:\r\n ((a.x * b.y - a.y * b.x) * (c.y - d.y) -\r\n (a.y - b.y) * (c.x * d.y - c.y * d.x)) /\r\n ((a.x - b.x) * (c.y - d.y) - (a.y - b.y) * (c.x - d.x)),\r\n };\r\n};\r\n\r\nexport default intersection;\r\n","import { select, selectAll } from 'd3-selection';\r\n\r\n// Merges the canvases and SVG elements into one canvas element which is then passed into the callback\r\n// (so you can choose to save it to disk, etc.)\r\nconst mergeParcoords = pc => callback => {\r\n // Retina display, etc.\r\n const devicePixelRatio = window.devicePixelRatio || 1;\r\n\r\n // Create a canvas element to store the merged canvases\r\n const mergedCanvas = document.createElement('canvas');\r\n\r\n const foregroundCanvas = pc.canvas.foreground;\r\n // We will need to adjust for canvas margins to align the svg and canvas\r\n const canvasMarginLeft = Number(\r\n foregroundCanvas.style.marginLeft.replace('px', '')\r\n );\r\n\r\n const textTopAdjust = 15;\r\n const canvasMarginTop =\r\n Number(foregroundCanvas.style.marginTop.replace('px', '')) + textTopAdjust;\r\n const width =\r\n (foregroundCanvas.clientWidth + canvasMarginLeft) * devicePixelRatio;\r\n const height =\r\n (foregroundCanvas.clientHeight + canvasMarginTop) * devicePixelRatio;\r\n mergedCanvas.width = width + 50; // pad so that svg labels at right will not get cut off\r\n mergedCanvas.height = height + 30; // pad so that svg labels at bottom will not get cut off\r\n mergedCanvas.style.width = mergedCanvas.width / devicePixelRatio + 'px';\r\n mergedCanvas.style.height = mergedCanvas.height / devicePixelRatio + 'px';\r\n\r\n // Give the canvas a white background\r\n const context = mergedCanvas.getContext('2d');\r\n context.fillStyle = '#ffffff';\r\n context.fillRect(0, 0, mergedCanvas.width, mergedCanvas.height);\r\n\r\n // Merge all the canvases\r\n for (const key in pc.canvas) {\r\n context.drawImage(\r\n pc.canvas[key],\r\n canvasMarginLeft * devicePixelRatio,\r\n canvasMarginTop * devicePixelRatio,\r\n width - canvasMarginLeft * devicePixelRatio,\r\n height - canvasMarginTop * devicePixelRatio\r\n );\r\n }\r\n\r\n // Add SVG elements to canvas\r\n const DOMURL = window.URL || window.webkitURL || window;\r\n const serializer = new XMLSerializer();\r\n // axis labels are translated (0,-5) so we will clone the svg\r\n // and translate down so the labels are drawn on the canvas\r\n const svgNodeCopy = pc.selection\r\n .select('svg')\r\n .node()\r\n .cloneNode(true);\r\n svgNodeCopy.setAttribute('transform', 'translate(0,' + textTopAdjust + ')');\r\n svgNodeCopy.setAttribute(\r\n 'height',\r\n svgNodeCopy.getAttribute('height') + textTopAdjust\r\n );\r\n // text will need fill attribute since css styles will not get picked up\r\n // this is not sophisticated since it doesn't look up css styles\r\n // if the user changes\r\n select(svgNodeCopy)\r\n .selectAll('text')\r\n .attr('fill', 'black');\r\n const svgStr = serializer.serializeToString(svgNodeCopy);\r\n\r\n // Create a Data URI.\r\n const src = 'data:image/svg+xml;base64,' + window.btoa(svgStr);\r\n const img = new Image();\r\n img.onload = () => {\r\n context.drawImage(\r\n img,\r\n 0,\r\n 0,\r\n img.width * devicePixelRatio,\r\n img.height * devicePixelRatio\r\n );\r\n if (typeof callback === 'function') {\r\n callback(mergedCanvas);\r\n }\r\n };\r\n img.src = src;\r\n};\r\n\r\nexport default mergeParcoords;\r\n","import { brushSelection } from 'd3-brush';\r\n\r\nconst selected = (config, pc) => () => {\r\n let actives = [];\r\n let extents = [];\r\n let ranges = {};\r\n //get brush selections from each node, convert to actual values\r\n //invert order of values in array to comply with the parcoords architecture\r\n if (config.brushes.length === 0) {\r\n let nodes = pc\r\n .g()\r\n .selectAll('.brush')\r\n .nodes();\r\n for (let k = 0; k < nodes.length; k++) {\r\n if (brushSelection(nodes[k]) !== null) {\r\n actives.push(nodes[k].__data__);\r\n let values = [];\r\n let ranger = brushSelection(nodes[k]);\r\n if (\r\n typeof config.dimensions[nodes[k].__data__].yscale.domain()[0] ===\r\n 'number'\r\n ) {\r\n for (let i = 0; i < ranger.length; i++) {\r\n if (\r\n actives.includes(nodes[k].__data__) &&\r\n config.flipAxes.includes(nodes[k].__data__)\r\n ) {\r\n values.push(\r\n config.dimensions[nodes[k].__data__].yscale.invert(ranger[i])\r\n );\r\n } else if (config.dimensions[nodes[k].__data__].yscale() !== 1) {\r\n values.unshift(\r\n config.dimensions[nodes[k].__data__].yscale.invert(ranger[i])\r\n );\r\n }\r\n }\r\n extents.push(values);\r\n for (let ii = 0; ii < extents.length; ii++) {\r\n if (extents[ii].length === 0) {\r\n extents[ii] = [1, 1];\r\n }\r\n }\r\n } else {\r\n ranges[nodes[k].__data__] = brushSelection(nodes[k]);\r\n let dimRange = config.dimensions[nodes[k].__data__].yscale.range();\r\n let dimDomain = config.dimensions[nodes[k].__data__].yscale.domain();\r\n for (let j = 0; j < dimRange.length; j++) {\r\n if (\r\n dimRange[j] >= ranger[0] &&\r\n dimRange[j] <= ranger[1] &&\r\n actives.includes(nodes[k].__data__) &&\r\n config.flipAxes.includes(nodes[k].__data__)\r\n ) {\r\n values.push(dimRange[j]);\r\n } else if (dimRange[j] >= ranger[0] && dimRange[j] <= ranger[1]) {\r\n values.unshift(dimRange[j]);\r\n }\r\n }\r\n extents.push(values);\r\n for (let ii = 0; ii < extents.length; ii++) {\r\n if (extents[ii].length === 0) {\r\n extents[ii] = [1, 1];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // test if within range\r\n const within = {\r\n date: function(d, p, dimension) {\r\n let category = d[p];\r\n let categoryIndex = config.dimensions[p].yscale\r\n .domain()\r\n .indexOf(category);\r\n let categoryRangeValue = config.dimensions[p].yscale.range()[\r\n categoryIndex\r\n ];\r\n return (\r\n categoryRangeValue >= ranges[p][0] &&\r\n categoryRangeValue <= ranges[p][1]\r\n );\r\n },\r\n number: function(d, p, dimension) {\r\n return extents[dimension][0] <= d[p] && d[p] <= extents[dimension][1];\r\n },\r\n string: function(d, p, dimension) {\r\n let category = d[p];\r\n let categoryIndex = config.dimensions[p].yscale\r\n .domain()\r\n .indexOf(category);\r\n let categoryRangeValue = config.dimensions[p].yscale.range()[\r\n categoryIndex\r\n ];\r\n return (\r\n categoryRangeValue >= ranges[p][0] &&\r\n categoryRangeValue <= ranges[p][1]\r\n );\r\n },\r\n };\r\n return config.data.filter(d =>\r\n actives.every((p, dimension) =>\r\n within[config.dimensions[p].type](d, p, dimension)\r\n )\r\n );\r\n } else {\r\n // need to get data from each brush instead of each axis\r\n // first must find active axes by iterating through all brushes\r\n // then go through similiar process as above.\r\n let multiBrushData = [];\r\n for (let idx = 0; idx < config.brushes.length; idx++) {\r\n let brush = config.brushes[idx];\r\n let values = [];\r\n let ranger = brush.extent;\r\n let actives = [brush.data];\r\n if (\r\n typeof config.dimensions[brush.data].yscale.domain()[0] === 'number'\r\n ) {\r\n for (let i = 0; i < ranger.length; i++) {\r\n if (\r\n actives.includes(brush.data) &&\r\n config.flipAxes.includes(brush.data)\r\n ) {\r\n values.push(config.dimensions[brush.data].yscale.invert(ranger[i]));\r\n } else if (config.dimensions[brush.data].yscale() !== 1) {\r\n values.unshift(\r\n config.dimensions[brush.data].yscale.invert(ranger[i])\r\n );\r\n }\r\n }\r\n extents.push(values);\r\n for (let ii = 0; ii < extents.length; ii++) {\r\n if (extents[ii].length === 0) {\r\n extents[ii] = [1, 1];\r\n }\r\n }\r\n } else {\r\n ranges[brush.data] = brush.extent;\r\n let dimRange = config.dimensions[brush.data].yscale.range();\r\n let dimDomain = config.dimensions[brush.data].yscale.domain();\r\n for (let j = 0; j < dimRange.length; j++) {\r\n if (\r\n dimRange[j] >= ranger[0] &&\r\n dimRange[j] <= ranger[1] &&\r\n actives.includes(brush.data) &&\r\n config.flipAxes.includes(brush.data)\r\n ) {\r\n values.push(dimRange[j]);\r\n } else if (dimRange[j] >= ranger[0] && dimRange[j] <= ranger[1]) {\r\n values.unshift(dimRange[j]);\r\n }\r\n }\r\n extents.push(values);\r\n for (let ii = 0; ii < extents.length; ii++) {\r\n if (extents[ii].length === 0) {\r\n extents[ii] = [1, 1];\r\n }\r\n }\r\n }\r\n let within = {\r\n date: function(d, p, dimension) {\r\n let category = d[p];\r\n let categoryIndex = config.dimensions[p].yscale\r\n .domain()\r\n .indexOf(category);\r\n let categoryRangeValue = config.dimensions[p].yscale.range()[\r\n categoryIndex\r\n ];\r\n return (\r\n categoryRangeValue >= ranges[p][0] &&\r\n categoryRangeValue <= ranges[p][1]\r\n );\r\n },\r\n number: function(d, p, dimension) {\r\n return extents[idx][0] <= d[p] && d[p] <= extents[idx][1];\r\n },\r\n string: function(d, p, dimension) {\r\n let category = d[p];\r\n let categoryIndex = config.dimensions[p].yscale\r\n .domain()\r\n .indexOf(category);\r\n let categoryRangeValue = config.dimensions[p].yscale.range()[\r\n categoryIndex\r\n ];\r\n return (\r\n categoryRangeValue >= ranges[p][0] &&\r\n categoryRangeValue <= ranges[p][1]\r\n );\r\n },\r\n };\r\n\r\n // filter data, but instead of returning it now,\r\n // put it into multiBrush data which is returned after\r\n // all brushes are iterated through.\r\n let filtered = config.data.filter(d =>\r\n actives.every((p, dimension) =>\r\n within[config.dimensions[p].type](d, p, dimension)\r\n )\r\n );\r\n for (let z = 0; z < filtered.length; z++) {\r\n multiBrushData.push(filtered[z]);\r\n }\r\n actives = [];\r\n ranges = {};\r\n }\r\n return multiBrushData;\r\n }\r\n};\r\n\r\nexport default selected;\r\n","const brushPredicate = (brushGroup, config, pc) => (predicate = null) => {\r\n if (predicate === null) {\r\n return brushGroup.predicate;\r\n }\r\n\r\n predicate = String(predicate).toUpperCase();\r\n if (predicate !== 'AND' && predicate !== 'OR') {\r\n throw new Error('Invalid predicate ' + predicate);\r\n }\r\n\r\n brushGroup.predicate = predicate;\r\n config.brushed = brushGroup.currentMode().selected();\r\n pc.renderBrushed();\r\n return pc;\r\n};\r\n\r\nconst brushMode = (brushGroup, config, pc) => (mode = null) => {\r\n if (mode === null) {\r\n return brushGroup.mode;\r\n }\r\n\r\n if (pc.brushModes().indexOf(mode) === -1) {\r\n throw new Error('pc.brushmode: Unsupported brush mode: ' + mode);\r\n }\r\n\r\n // Make sure that we don't trigger unnecessary events by checking if the mode\r\n // actually changes.\r\n if (mode !== brushGroup.mode) {\r\n // When changing brush modes, the first thing we need to do is clearing any\r\n // brushes from the current mode, if any.\r\n if (brushGroup.mode !== 'None') {\r\n pc.brushReset();\r\n }\r\n\r\n // Next, we need to 'uninstall' the current brushMode.\r\n brushGroup.modes[brushGroup.mode].uninstall(pc);\r\n // Finally, we can install the requested one.\r\n brushGroup.mode = mode;\r\n brushGroup.modes[brushGroup.mode].install();\r\n if (mode === 'None') {\r\n delete pc.brushPredicate;\r\n } else {\r\n pc.brushPredicate = brushPredicate(brushGroup, config, pc);\r\n }\r\n }\r\n\r\n return pc;\r\n};\r\n\r\nexport default brushMode;\r\n","/**\r\n * dimension display names\r\n *\r\n * @param config\r\n * @param d\r\n * @returns {*}\r\n */\r\nconst dimensionLabels = config => d =>\r\n config.dimensions[d].title ? config.dimensions[d].title : d;\r\n\r\nexport default dimensionLabels;\r\n","import { select, selectAll } from 'd3-selection';\r\n\r\nconst flipAxisAndUpdatePCP = (config, pc, axis) =>\r\n function(dimension) {\r\n pc.flip(dimension);\r\n pc.brushReset(dimension);\r\n\r\n // select(this.parentElement)\r\n pc.selection\r\n .select('svg')\r\n .selectAll('g.axis')\r\n .filter(d => d === dimension)\r\n .transition()\r\n .duration(config.animationTime)\r\n .call(axis.scale(config.dimensions[dimension].yscale));\r\n pc.render();\r\n };\r\n\r\nexport default flipAxisAndUpdatePCP;\r\n","const rotateLabels = (config, pc) => (event) => {\r\n if (!config.rotateLabels) return;\r\n\r\n let delta = event.deltaY;\r\n delta = delta < 0 ? -5 : delta;\r\n delta = delta > 0 ? 5 : delta;\r\n\r\n config.dimensionTitleRotation += delta;\r\n pc.svg\r\n .selectAll('text.label')\r\n .attr(\r\n 'transform',\r\n 'translate(0,-5) rotate(' + config.dimensionTitleRotation + ')'\r\n );\r\n event.preventDefault();\r\n};\r\n\r\nexport default rotateLabels;\r\n","import { select } from 'd3-selection';\r\n\r\nimport dimensionLabels from '../util/dimensionLabels';\r\nimport flipAxisAndUpdatePCP from '../util/flipAxisAndUpdatePCP';\r\nimport rotateLabels from '../util/rotateLabels';\r\n\r\nconst updateAxes = (config, pc, position, axis, flags) => (\r\n animationTime = null\r\n) => {\r\n if (animationTime === null) {\r\n animationTime = config.animationTime;\r\n }\r\n\r\n const g_data = pc.svg\r\n .selectAll('.dimension')\r\n .data(pc.getOrderedDimensionKeys());\r\n // Enter\r\n g_data\r\n .enter()\r\n .append('svg:g')\r\n .attr('class', 'dimension')\r\n .attr('transform', p => 'translate(' + position(p) + ')')\r\n .style('opacity', 0)\r\n .append('svg:g')\r\n .attr('class', 'axis')\r\n .attr('transform', 'translate(0,0)')\r\n .each(function(d) {\r\n const axisElement = select(this).call(\r\n pc.applyAxisConfig(axis, config.dimensions[d])\r\n );\r\n\r\n axisElement\r\n .selectAll('path')\r\n .style('fill', 'none')\r\n .style('stroke', '#222')\r\n .style('shape-rendering', 'crispEdges');\r\n\r\n axisElement\r\n .selectAll('line')\r\n .style('fill', 'none')\r\n .style('stroke', '#222')\r\n .style('shape-rendering', 'crispEdges');\r\n })\r\n .append('svg:text')\r\n .attr('text-anchor', 'middle')\r\n .attr('class', 'label')\r\n .attr('x', 0)\r\n .attr('y', 0)\r\n .attr(\r\n 'transform',\r\n 'translate(0,-5) rotate(' + config.dimensionTitleRotation + ')'\r\n )\r\n .text(dimensionLabels(config))\r\n .on('dblclick', flipAxisAndUpdatePCP(config, pc, axis))\r\n .on('wheel', rotateLabels(config, pc));\r\n\r\n // Update\r\n g_data.attr('opacity', 0);\r\n g_data\r\n .select('.axis')\r\n .transition()\r\n .duration(animationTime)\r\n .each(function(d) {\r\n select(this).call(pc.applyAxisConfig(axis, config.dimensions[d]));\r\n });\r\n g_data\r\n .select('.label')\r\n .transition()\r\n .duration(animationTime)\r\n .text(dimensionLabels(config))\r\n .attr(\r\n 'transform',\r\n 'translate(0,-5) rotate(' + config.dimensionTitleRotation + ')'\r\n );\r\n\r\n // Exit\r\n g_data.exit().remove();\r\n\r\n const g = pc.svg.selectAll('.dimension');\r\n g.transition()\r\n .duration(animationTime)\r\n .attr('transform', p => 'translate(' + position(p) + ')')\r\n .style('opacity', 1);\r\n\r\n pc.svg\r\n .selectAll('.axis')\r\n .transition()\r\n .duration(animationTime)\r\n .each(function(d) {\r\n select(this).call(pc.applyAxisConfig(axis, config.dimensions[d]));\r\n });\r\n\r\n if (flags.brushable) pc.brushable();\r\n if (flags.reorderable) pc.reorderable();\r\n if (pc.brushMode() !== 'None') {\r\n const mode = pc.brushMode();\r\n pc.brushMode('None');\r\n pc.brushMode(mode);\r\n }\r\n return this;\r\n};\r\n\r\nexport default updateAxes;\r\n","/** adjusts an axis' default range [h()+1, 1] if a NullValueSeparator is set */\r\nconst getRange = config => {\r\n const h = config.height - config.margin.top - config.margin.bottom;\r\n\r\n if (config.nullValueSeparator == 'bottom') {\r\n return [\r\n h +\r\n 1 -\r\n config.nullValueSeparatorPadding.bottom -\r\n config.nullValueSeparatorPadding.top,\r\n 1,\r\n ];\r\n } else if (config.nullValueSeparator == 'top') {\r\n return [\r\n h + 1,\r\n 1 +\r\n config.nullValueSeparatorPadding.bottom +\r\n config.nullValueSeparatorPadding.top,\r\n ];\r\n }\r\n return [h + 1, 1];\r\n};\r\n\r\nexport default getRange;\r\n","import { scaleLinear, scaleOrdinal, scalePoint, scaleTime } from 'd3-scale';\r\nimport { extent } from 'd3-array';\r\n\r\nimport getRange from '../util/getRange';\r\nimport w from '../util/width';\r\nimport h from '../util/height';\r\n\r\nconst autoscale = (config, pc, xscale, ctx) =>\r\n function() {\r\n // yscale\r\n const defaultScales = {\r\n date: function(k) {\r\n let _extent = extent(config.data, d => (d[k] ? d[k].getTime() : null));\r\n // special case if single value\r\n if (_extent[0] === _extent[1]) {\r\n return scalePoint()\r\n .domain(_extent)\r\n .range(getRange(config));\r\n }\r\n if (config.flipAxes.includes(k)) {\r\n _extent = _extent.map(val => tempDate.unshift(val));\r\n }\r\n return scaleTime()\r\n .domain(_extent)\r\n .range(getRange(config));\r\n },\r\n number: function(k) {\r\n let _extent = extent(config.data, d => +d[k]);\r\n // special case if single value\r\n if (_extent[0] === _extent[1]) {\r\n return scalePoint()\r\n .domain(_extent)\r\n .range(getRange(config));\r\n }\r\n if (config.flipAxes.includes(k)) {\r\n _extent = _extent.map(val => tempDate.unshift(val));\r\n }\r\n return scaleLinear()\r\n .domain(_extent)\r\n .range(getRange(config));\r\n },\r\n string: function(k) {\r\n let counts = {},\r\n domain = [];\r\n // Let's get the count for each value so that we can sort the domain based\r\n // on the number of items for each value.\r\n config.data.map(p => {\r\n if (p[k] === undefined && config.nullValueSeparator !== 'undefined') {\r\n return null; // null values will be drawn beyond the horizontal null value separator!\r\n }\r\n if (counts[p[k]] === undefined) {\r\n counts[p[k]] = 1;\r\n } else {\r\n counts[p[k]] = counts[p[k]] + 1;\r\n }\r\n });\r\n if (config.flipAxes.includes(k)) {\r\n domain = Object.getOwnPropertyNames(counts).sort();\r\n } else {\r\n let tempArr = Object.getOwnPropertyNames(counts).sort();\r\n for (let i = 0; i < Object.getOwnPropertyNames(counts).length; i++) {\r\n domain.push(tempArr.pop());\r\n }\r\n }\r\n\r\n //need to create an ordinal scale for categorical data\r\n let categoricalRange = [];\r\n if (domain.length === 1) {\r\n //edge case\r\n domain = [' ', domain[0], ' '];\r\n }\r\n let addBy = getRange(config)[0] / (domain.length - 1);\r\n for (let j = 0; j < domain.length; j++) {\r\n if (categoricalRange.length === 0) {\r\n categoricalRange.push(0);\r\n continue;\r\n }\r\n categoricalRange.push(categoricalRange[j - 1] + addBy);\r\n }\r\n return scaleOrdinal()\r\n .domain(domain)\r\n .range(categoricalRange);\r\n },\r\n };\r\n Object.keys(config.dimensions).forEach(function(k) {\r\n if (\r\n config.dimensions[k].yscale === undefined ||\r\n config.dimensions[k].yscale === null\r\n ) {\r\n config.dimensions[k].yscale = defaultScales[config.dimensions[k].type](\r\n k\r\n );\r\n }\r\n });\r\n\r\n // xscale\r\n // add padding for d3 >= v4 default 0.2\r\n xscale.range([0, w(config)]).padding(0.2);\r\n\r\n // Retina display, etc.\r\n const devicePixelRatio = window.devicePixelRatio || 1;\r\n\r\n // canvas sizes\r\n pc.selection\r\n .selectAll('canvas')\r\n .style('margin-top', config.margin.top + 'px')\r\n .style('margin-left', config.margin.left + 'px')\r\n .style('width', w(config) + 2 + 'px')\r\n .style('height', h(config) + 2 + 'px')\r\n .attr('width', (w(config) + 2) * devicePixelRatio)\r\n .attr('height', (h(config) + 2) * devicePixelRatio);\r\n // default styles, needs to be set when canvas width changes\r\n ctx.foreground.strokeStyle = config.color;\r\n ctx.foreground.lineWidth = config.lineWidth;\r\n ctx.foreground.globalCompositeOperation = config.composite;\r\n ctx.foreground.globalAlpha = config.alpha;\r\n ctx.foreground.scale(devicePixelRatio, devicePixelRatio);\r\n ctx.brushed.strokeStyle = config.brushedColor;\r\n ctx.brushed.lineWidth = config.lineWidth;\r\n ctx.brushed.globalCompositeOperation = config.composite;\r\n ctx.brushed.globalAlpha = config.alpha;\r\n ctx.brushed.scale(devicePixelRatio, devicePixelRatio);\r\n ctx.highlight.lineWidth = config.highlightedLineWidth;\r\n ctx.highlight.scale(devicePixelRatio, devicePixelRatio);\r\n ctx.marked.lineWidth = config.markedLineWidth;\r\n ctx.marked.shadowColor = config.markedShadowColor;\r\n ctx.marked.shadowBlur = config.markedShadowBlur;\r\n ctx.marked.scale(devicePixelRatio, devicePixelRatio);\r\n\r\n return this;\r\n };\r\n\r\nexport default autoscale;\r\n","import { brushSelection, brushY } from 'd3-brush';\r\nimport { select } from 'd3-selection';\r\n\r\nconst brushable = (config, pc, flags) =>\r\n function() {\r\n if (!pc.g()) {\r\n pc.createAxes();\r\n }\r\n\r\n const g = pc.g();\r\n\r\n // Add and store a brush for each axis.\r\n g.append('svg:g')\r\n .attr('class', 'brush')\r\n .each(function(d) {\r\n if (config.dimensions[d] !== undefined) {\r\n config.dimensions[d]['brush'] = brushY(select(this)).extent([\r\n [-15, 0],\r\n [15, config.dimensions[d].yscale.range()[0]],\r\n ]);\r\n select(this).call(\r\n config.dimensions[d]['brush']\r\n .on('start', function(event) {\r\n if (event.sourceEvent !== null && !event.sourceEvent.ctrlKey) {\r\n pc.brushReset();\r\n }\r\n })\r\n .on('brush', function(event) {\r\n if (!event.sourceEvent.ctrlKey) {\r\n pc.brush();\r\n }\r\n })\r\n .on('end', function(event) {\r\n // save brush selection is ctrl key is held\r\n // store important brush information and\r\n // the html element of the selection,\r\n // to make a dummy selection element\r\n if (event.sourceEvent.ctrlKey) {\r\n let html = select(this)\r\n .select('.selection')\r\n .nodes()[0].outerHTML;\r\n html = html.replace(\r\n 'class=\"selection\"',\r\n 'class=\"selection dummy' +\r\n ' selection-' +\r\n config.brushes.length +\r\n '\"'\r\n );\r\n let dat = select(this).nodes()[0].__data__;\r\n let brush = {\r\n id: config.brushes.length,\r\n extent: brushSelection(this),\r\n html: html,\r\n data: dat,\r\n };\r\n config.brushes.push(brush);\r\n select(select(this).nodes()[0].parentNode)\r\n .select('.axis')\r\n .nodes()[0].outerHTML += html;\r\n pc.brush();\r\n config.dimensions[d].brush.move(select(this, null));\r\n select(this)\r\n .select('.selection')\r\n .attr('style', 'display:none');\r\n pc.brushable();\r\n } else {\r\n pc.brush();\r\n }\r\n })\r\n );\r\n select(this).on('dblclick', function() {\r\n pc.brushReset(d);\r\n });\r\n }\r\n });\r\n\r\n flags.brushable = true;\r\n return this;\r\n };\r\n\r\nexport default brushable;\r\n","import { extent } from 'd3-array';\r\n\r\nconst commonScale = (config, pc) =>\r\n function(global, type) {\r\n const t = type || 'number';\r\n if (typeof global === 'undefined') {\r\n global = true;\r\n }\r\n\r\n // try to autodetect dimensions and create scales\r\n if (!Object.keys(config.dimensions).length) {\r\n pc.detectDimensions();\r\n }\r\n pc.autoscale();\r\n\r\n // scales of the same type\r\n const scales = Object.keys(config.dimensions).filter(\r\n p => config.dimensions[p].type == t\r\n );\r\n\r\n if (global) {\r\n let _extent = extent(\r\n scales\r\n .map(d => config.dimensions[d].yscale.domain())\r\n .reduce((cur, acc) => cur.concat(acc))\r\n );\r\n\r\n scales.forEach(d => {\r\n config.dimensions[d].yscale.domain(_extent);\r\n });\r\n } else {\r\n scales.forEach(d => {\r\n config.dimensions[d].yscale.domain(extent(config.data, d => +d[k]));\r\n });\r\n }\r\n\r\n // update centroids\r\n if (config.bundleDimension !== null) {\r\n pc.bundleDimension(config.bundleDimension);\r\n }\r\n\r\n return this;\r\n };\r\n\r\nexport default commonScale;\r\n","const computeRealCentroids = (config, position) => row =>\r\n Object.keys(config.dimensions).map(d => {\r\n const x = position(d);\r\n const y = config.dimensions[d].yscale(row[d]);\r\n return [x, y];\r\n });\r\n\r\nexport default computeRealCentroids;\r\n","const isValid = d => d !== null && d !== undefined;\r\n\r\nconst applyDimensionDefaults = (config, pc) =>\r\n function(dims) {\r\n const types = pc.detectDimensionTypes(config.data);\r\n dims = dims ? dims : Object.keys(types);\r\n\r\n return dims.reduce((acc, cur, i) => {\r\n const k = config.dimensions[cur] ? config.dimensions[cur] : {};\r\n acc[cur] = {\r\n ...k,\r\n orient: isValid(k.orient) ? k.orient : 'left',\r\n ticks: isValid(k.ticks) ? k.ticks : 5,\r\n innerTickSize: isValid(k.innerTickSize) ? k.innerTickSize : 6,\r\n outerTickSize: isValid(k.outerTickSize) ? k.outerTickSize : 0,\r\n tickPadding: isValid(k.tickPadding) ? k.tickPadding : 3,\r\n type: isValid(k.type) ? k.type : types[cur],\r\n index: isValid(k.index) ? k.index : i,\r\n };\r\n\r\n return acc;\r\n }, {});\r\n };\r\n\r\nexport default applyDimensionDefaults;\r\n","import { select } from 'd3-selection';\r\n\r\nimport dimensionLabels from '../util/dimensionLabels';\r\nimport flipAxisAndUpdatePCP from '../util/flipAxisAndUpdatePCP';\r\nimport rotateLabels from '../util/rotateLabels';\r\n\r\nimport w from '../util/width';\r\nimport h from '../util/height';\r\n\r\n/**\r\n * Create static SVG axes with dimension names, ticks, and labels.\r\n *\r\n * @param config\r\n * @param pc\r\n * @param xscale\r\n * @param flags\r\n * @param axis\r\n * @returns {Function}\r\n */\r\nconst createAxes = (config, pc, xscale, flags, axis) =>\r\n function() {\r\n if (pc.g() !== undefined) {\r\n pc.removeAxes();\r\n }\r\n // Add a group element for each dimension.\r\n pc._g = pc.svg\r\n .selectAll('.dimension')\r\n .data(pc.getOrderedDimensionKeys(), function(d) {\r\n return d;\r\n })\r\n .enter()\r\n .append('svg:g')\r\n .attr('class', 'dimension')\r\n .attr('transform', function(d) {\r\n return 'translate(' + xscale(d) + ')';\r\n });\r\n // Add an axis and title.\r\n pc._g\r\n .append('svg:g')\r\n .attr('class', 'axis')\r\n .attr('transform', 'translate(0,0)')\r\n .each(function(d) {\r\n let axisElement = select(this).call(\r\n pc.applyAxisConfig(axis, config.dimensions[d])\r\n );\r\n\r\n axisElement\r\n .selectAll('path')\r\n .style('fill', 'none')\r\n .style('stroke', '#222')\r\n .style('shape-rendering', 'crispEdges');\r\n\r\n axisElement\r\n .selectAll('line')\r\n .style('fill', 'none')\r\n .style('stroke', '#222')\r\n .style('shape-rendering', 'crispEdges');\r\n })\r\n\r\n .append('svg:text')\r\n .attr('text-anchor', 'middle')\r\n .attr('y', 0)\r\n .attr(\r\n 'transform',\r\n 'translate(0,-5) rotate(' + config.dimensionTitleRotation + ')'\r\n )\r\n .attr('x', 0)\r\n .attr('class', 'label')\r\n .text(dimensionLabels(config))\r\n .on('dblclick', flipAxisAndUpdatePCP(config, pc, axis))\r\n .on('wheel', rotateLabels(config, pc));\r\n\r\n if (config.nullValueSeparator === 'top') {\r\n pc.svg\r\n .append('line')\r\n .attr('x1', 0)\r\n .attr('y1', 1 + config.nullValueSeparatorPadding.top)\r\n .attr('x2', w(config))\r\n .attr('y2', 1 + config.nullValueSeparatorPadding.top)\r\n .attr('stroke-width', 1)\r\n .attr('stroke', '#777')\r\n .attr('fill', 'none')\r\n .attr('shape-rendering', 'crispEdges');\r\n } else if (config.nullValueSeparator === 'bottom') {\r\n pc.svg\r\n .append('line')\r\n .attr('x1', 0)\r\n .attr('y1', h(config) + 1 - config.nullValueSeparatorPadding.bottom)\r\n .attr('x2', w(config))\r\n .attr('y2', h(config) + 1 - config.nullValueSeparatorPadding.bottom)\r\n .attr('stroke-width', 1)\r\n .attr('stroke', '#777')\r\n .attr('fill', 'none')\r\n .attr('shape-rendering', 'crispEdges');\r\n }\r\n\r\n flags.axes = true;\r\n return this;\r\n };\r\n\r\nexport default createAxes;\r\n","import { min } from 'd3-array';\r\n\r\n//draw dots with radius r on the axis line where data intersects\r\nconst axisDots = (config, pc, position) => _r => {\r\n const r = _r || 0.1;\r\n const ctx = pc.ctx.dots;\r\n const startAngle = 0;\r\n const endAngle = 2 * Math.PI;\r\n ctx.globalAlpha = min([1 / Math.pow(config.data.length, 1 / 2), 1]);\r\n config.data.forEach(d => {\r\n Object.entries(config.dimensions).forEach(([key], i) => {\r\n ctx.beginPath();\r\n ctx.arc(\r\n position(key),\r\n config.dimensions[key].yscale(d[key]),\r\n r,\r\n startAngle,\r\n endAngle\r\n );\r\n ctx.stroke();\r\n ctx.fill();\r\n });\r\n });\r\n return this;\r\n};\r\n\r\nexport default axisDots;\r\n","import { axisBottom, axisLeft, axisRight, axisTop } from 'd3-axis';\r\n\r\nconst applyAxisConfig = (axis, dimension) => {\r\n let axisCfg;\r\n\r\n switch (dimension.orient) {\r\n case 'left':\r\n axisCfg = axisLeft(dimension.yscale);\r\n break;\r\n case 'right':\r\n axisCfg = axisRight(dimension.yscale);\r\n break;\r\n case 'top':\r\n axisCfg = axisTop(dimension.yscale);\r\n break;\r\n case 'bottom':\r\n axisCfg = axisBottom(dimension.yscale);\r\n break;\r\n default:\r\n axisCfg = axisLeft(dimension.yscale);\r\n break;\r\n }\r\n\r\n axisCfg\r\n .ticks(dimension.ticks)\r\n .tickValues(dimension.tickValues)\r\n .tickSizeInner(dimension.innerTickSize)\r\n .tickSizeOuter(dimension.outerTickSize)\r\n .tickPadding(dimension.tickPadding)\r\n .tickFormat(dimension.tickFormat);\r\n\r\n return axisCfg;\r\n};\r\n\r\nexport default applyAxisConfig;\r\n","import { drag } from 'd3-drag';\r\nimport { select } from 'd3-selection';\r\n\r\nimport w from '../util/width';\r\n\r\n// Jason Davies, http://bl.ocks.org/1341281\r\nconst reorderable = (config, pc, xscale, position, dragging, flags) =>\r\n function() {\r\n if (pc.g() === undefined) pc.createAxes();\r\n const g = pc.g();\r\n\r\n g.style('cursor', 'move').call(\r\n drag()\r\n .on('start', function(event, d) {\r\n dragging[d] = this.__origin__ = xscale(d);\r\n })\r\n .on('drag', function(event, d) {\r\n dragging[d] = Math.min(\r\n w(config),\r\n Math.max(0, (this.__origin__ += event.dx))\r\n );\r\n pc.sortDimensions();\r\n xscale.domain(pc.getOrderedDimensionKeys());\r\n pc.render();\r\n g.attr('transform', d => 'translate(' + position(d) + ')');\r\n })\r\n .on('end', function(event, d) {\r\n delete this.__origin__;\r\n delete dragging[d];\r\n select(this)\r\n .transition()\r\n .attr('transform', 'translate(' + xscale(d) + ')');\r\n pc.render();\r\n pc.renderMarked();\r\n })\r\n );\r\n flags.reorderable = true;\r\n return this;\r\n };\r\n\r\nexport default reorderable;\r\n","// rescale for height, width and margins\r\n// TODO currently assumes chart is brushable, and destroys old brushes\r\nconst resize = (config, pc, flags, events) => {\r\n return function() {\r\n // selection size\r\n pc.selection\r\n .select('svg')\r\n .attr('width', config.width)\r\n .attr('height', config.height);\r\n pc.svg.attr(\r\n 'transform',\r\n 'translate(' + config.margin.left + ',' + config.margin.top + ')'\r\n );\r\n\r\n // FIXME: the current brush state should pass through\r\n if (flags.brushable) pc.brushReset();\r\n\r\n // scales\r\n pc.autoscale();\r\n\r\n // axes, destroys old brushes.\r\n if (pc.g()) pc.createAxes();\r\n if (flags.brushable) pc.brushable();\r\n if (flags.reorderable) pc.reorderable();\r\n\r\n events.call('resize', this, {\r\n width: config.width,\r\n height: config.height,\r\n margin: config.margin,\r\n });\r\n\r\n return this;\r\n };\r\n};\r\n\r\nexport default resize;\r\n","// Reorder dimensions, such that the highest value (visually) is on the left and\r\n// the lowest on the right. Visual values are determined by the data values in\r\n// the given row.\r\nconst reorder = (config, pc, xscale) => rowdata => {\r\n const firstDim = pc.getOrderedDimensionKeys()[0];\r\n\r\n pc.sortDimensionsByRowData(rowdata);\r\n // NOTE: this is relatively cheap given that:\r\n // number of dimensions < number of data items\r\n // Thus we check equality of order to prevent rerendering when this is the case.\r\n const reordered = firstDim !== pc.getOrderedDimensionKeys()[0];\r\n\r\n if (reordered) {\r\n xscale.domain(pc.getOrderedDimensionKeys());\r\n const highlighted = config.highlighted.slice(0);\r\n pc.unhighlight();\r\n\r\n const marked = config.marked.slice(0);\r\n pc.unmark();\r\n\r\n const g = pc.g();\r\n g.transition()\r\n .duration(1500)\r\n .attr('transform', d => 'translate(' + xscale(d) + ')');\r\n pc.render();\r\n\r\n // pc.highlight() does not check whether highlighted is length zero, so we do that here.\r\n if (highlighted.length !== 0) {\r\n pc.highlight(highlighted);\r\n }\r\n if (marked.length !== 0) {\r\n pc.mark(marked);\r\n }\r\n }\r\n};\r\n\r\nexport default reorder;\r\n","const sortDimensions = (config, position) => () => {\r\n const copy = Object.assign({}, config.dimensions);\r\n const positionSortedKeys = Object.keys(config.dimensions).sort(\r\n (a, b) => (position(a) - position(b) === 0 ? 1 : position(a) - position(b))\r\n );\r\n config.dimensions = {};\r\n positionSortedKeys.forEach((p, i) => {\r\n config.dimensions[p] = copy[p];\r\n config.dimensions[p].index = i;\r\n });\r\n};\r\n\r\nexport default sortDimensions;\r\n","const sortDimensionsByRowData = config => rowdata => {\r\n const copy = Object.assign({}, config.dimensions);\r\n const positionSortedKeys = Object.keys(config.dimensions).sort((a, b) => {\r\n const pixelDifference =\r\n config.dimensions[a].yscale(rowdata[a]) -\r\n config.dimensions[b].yscale(rowdata[b]);\r\n\r\n // Array.sort is not necessarily stable, this means that if pixelDifference is zero\r\n // the ordering of dimensions might change unexpectedly. This is solved by sorting on\r\n // variable name in that case.\r\n return pixelDifference === 0 ? a.localeCompare(b) : pixelDifference;\r\n });\r\n config.dimensions = {};\r\n positionSortedKeys.forEach((p, i) => {\r\n config.dimensions[p] = copy[p];\r\n config.dimensions[p].index = i;\r\n });\r\n};\r\n\r\nexport default sortDimensionsByRowData;\r\n","const isBrushed = (config, brushGroup) => {\r\n if (config.brushed && config.brushed.length !== config.data.length)\r\n return true;\r\n\r\n const object = brushGroup.currentMode().brushState();\r\n\r\n for (let key in object) {\r\n if (object.hasOwnProperty(key)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nexport default isBrushed;\r\n","import isBrushed from '../util/isBrushed';\r\nimport w from '../util/width';\r\nimport h from '../util/height';\r\n\r\nconst clear = (config, pc, ctx, brushGroup) =>\r\n function(layer) {\r\n ctx[layer].clearRect(0, 0, w(config) + 2, h(config) + 2);\r\n\r\n // This will make sure that the foreground items are transparent\r\n // without the need for changing the opacity style of the foreground canvas\r\n // as this would stop the css styling from working\r\n if (layer === 'brushed' && isBrushed(config, brushGroup)) {\r\n ctx.brushed.fillStyle = pc.selection.style('background-color');\r\n ctx.brushed.globalAlpha = 1 - config.alphaOnBrushed;\r\n ctx.brushed.fillRect(0, 0, w(config) + 2, h(config) + 2);\r\n ctx.brushed.globalAlpha = config.alpha;\r\n }\r\n return this;\r\n };\r\n\r\nexport default clear;\r\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';\r\n\r\nconst computeCentroids = (config, position, row) => {\r\n const centroids = [];\r\n\r\n const p = Object.keys(config.dimensions);\r\n const cols = p.length;\r\n const a = 0.5; // center between axes\r\n for (let i = 0; i < cols; ++i) {\r\n // centroids on 'real' axes\r\n const x = position(p[i]);\r\n const y = config.dimensions[p[i]].yscale(row[p[i]]);\r\n centroids.push(new Vector([x, y]));\r\n\r\n // centroids on 'virtual' axes\r\n if (i < cols - 1) {\r\n const cx = x + a * (position(p[i + 1]) - x);\r\n let cy = y + a * (config.dimensions[p[i + 1]].yscale(row[p[i + 1]]) - y);\r\n if (config.bundleDimension !== null) {\r\n const leftCentroid = config.clusterCentroids\r\n .get(\r\n config.dimensions[config.bundleDimension].yscale(\r\n row[config.bundleDimension]\r\n )\r\n )\r\n .get(p[i]);\r\n const rightCentroid = config.clusterCentroids\r\n .get(\r\n config.dimensions[config.bundleDimension].yscale(\r\n row[config.bundleDimension]\r\n )\r\n )\r\n .get(p[i + 1]);\r\n let centroid = 0.5 * (leftCentroid + rightCentroid);\r\n cy = centroid + (1 - config.bundlingStrength) * (cy - centroid);\r\n }\r\n centroids.push(new Vector([cx, cy]));\r\n }\r\n }\r\n\r\n return centroids;\r\n};\r\n\r\nexport default computeCentroids;\r\n","import { Vector } from 'sylvester-es6/src/Vector';\r\n\r\nconst computeControlPoints = (smoothness, centroids) => {\r\n const cols = centroids.length;\r\n const a = smoothness;\r\n const cps = [];\r\n\r\n cps.push(centroids[0]);\r\n cps.push(\r\n new Vector([\r\n centroids[0].e(1) + a * 2 * (centroids[1].e(1) - centroids[0].e(1)),\r\n centroids[0].e(2),\r\n ])\r\n );\r\n for (let col = 1; col < cols - 1; ++col) {\r\n let mid = centroids[col];\r\n let left = centroids[col - 1];\r\n let right = centroids[col + 1];\r\n\r\n let diff = left.subtract(right);\r\n cps.push(mid.add(diff.x(a)));\r\n cps.push(mid);\r\n cps.push(mid.subtract(diff.x(a)));\r\n }\r\n\r\n cps.push(\r\n new Vector([\r\n centroids[cols - 1].e(1) +\r\n a * 2 * (centroids[cols - 2].e(1) - centroids[cols - 1].e(1)),\r\n centroids[cols - 1].e(2),\r\n ])\r\n );\r\n cps.push(centroids[cols - 1]);\r\n\r\n return cps;\r\n};\r\n\r\nexport default computeControlPoints;\r\n","// draw single cubic bezier curve\r\nimport computeCentroids from './computeCentroids';\r\nimport computeControlPoints from './computeControlPoints';\r\nimport h from './height';\r\n\r\nconst singleCurve = (config, position, d, ctx) => {\r\n const centroids = computeCentroids(config, position, d);\r\n const cps = computeControlPoints(config.smoothness, centroids);\r\n\r\n ctx.moveTo(cps[0].e(1), cps[0].e(2));\r\n\r\n for (let i = 1; i < cps.length; i += 3) {\r\n if (config.showControlPoints) {\r\n for (let j = 0; j < 3; j++) {\r\n ctx.fillRect(cps[i + j].e(1), cps[i + j].e(2), 2, 2);\r\n }\r\n }\r\n ctx.bezierCurveTo(\r\n cps[i].e(1),\r\n cps[i].e(2),\r\n cps[i + 1].e(1),\r\n cps[i + 1].e(2),\r\n cps[i + 2].e(1),\r\n cps[i + 2].e(2)\r\n );\r\n }\r\n};\r\n\r\n// returns the y-position just beyond the separating null value line\r\nconst getNullPosition = config => {\r\n if (config.nullValueSeparator === 'bottom') {\r\n return h(config) + 1;\r\n } else if (config.nullValueSeparator === 'top') {\r\n return 1;\r\n } else {\r\n console.log(\r\n \"A value is NULL, but nullValueSeparator is not set; set it to 'bottom' or 'top'.\"\r\n );\r\n }\r\n return h(config) + 1;\r\n};\r\n\r\nconst singlePath = (config, position, d, ctx) => {\r\n Object.keys(config.dimensions)\r\n .map(p => [\r\n position(p),\r\n d[p] === undefined\r\n ? getNullPosition(config)\r\n : config.dimensions[p].yscale(d[p]),\r\n ])\r\n .sort((a, b) => a[0] - b[0])\r\n .forEach((p, i) => {\r\n i === 0 ? ctx.moveTo(p[0], p[1]) : ctx.lineTo(p[0], p[1]);\r\n });\r\n};\r\n\r\n// draw single polyline\r\nconst colorPath = (config, position, d, ctx) => {\r\n ctx.beginPath();\r\n if (\r\n (config.bundleDimension !== null && config.bundlingStrength > 0) ||\r\n config.smoothness > 0\r\n ) {\r\n singleCurve(config, position, d, ctx);\r\n } else {\r\n singlePath(config, position, d, ctx);\r\n }\r\n ctx.stroke();\r\n};\r\n\r\nexport default colorPath;\r\n","const _functor = v => (typeof v === 'function' ? v : () => v);\r\n\r\nexport default _functor;\r\n","import colorPath from '../util/colorPath';\r\nimport functor from '../util/functor';\r\n\r\nconst pathMark = (config, ctx, position) => (d, i) => {\r\n ctx.marked.strokeStyle = functor(config.color)(d, i);\r\n return colorPath(config, position, d, ctx.marked);\r\n};\r\n\r\nconst renderMarkedDefault = (config, pc, ctx, position) => () => {\r\n pc.clear('marked');\r\n\r\n if (config.marked.length) {\r\n config.marked.forEach(pathMark(config, ctx, position));\r\n }\r\n};\r\n\r\nconst renderMarkedQueue = (config, markedQueue) => () => {\r\n if (config.marked) {\r\n markedQueue(config.marked);\r\n } else {\r\n markedQueue([]); // This is needed to clear the currently marked items\r\n }\r\n};\r\n\r\nconst renderMarked = (config, pc, events) =>\r\n function() {\r\n if (!Object.keys(config.dimensions).length) pc.detectDimensions();\r\n\r\n pc.renderMarked[config.mode]();\r\n events.call('render', this);\r\n return this;\r\n };\r\n\r\nexport { pathMark, renderMarked, renderMarkedDefault, renderMarkedQueue };\r\n","import isBrushed from '../util/isBrushed';\r\nimport colorPath from '../util/colorPath';\r\nimport functor from '../util/functor';\r\n\r\nconst pathBrushed = (config, ctx, position) => (d, i) => {\r\n if (config.brushedColor !== null) {\r\n ctx.brushed.strokeStyle = functor(config.brushedColor)(d, i);\r\n } else {\r\n ctx.brushed.strokeStyle = functor(config.color)(d, i);\r\n }\r\n return colorPath(config, position, d, ctx.brushed);\r\n};\r\n\r\nconst renderBrushedDefault = (config, ctx, position, pc, brushGroup) => () => {\r\n pc.clear('brushed');\r\n\r\n if (isBrushed(config, brushGroup) && config.brushed !== false) {\r\n config.brushed.forEach(pathBrushed(config, ctx, position));\r\n }\r\n};\r\n\r\nconst renderBrushedQueue = (config, brushGroup, brushedQueue) => () => {\r\n if (isBrushed(config, brushGroup)) {\r\n brushedQueue(config.brushed);\r\n } else {\r\n brushedQueue([]); // This is needed to clear the currently brushed items\r\n }\r\n};\r\n\r\nconst renderBrushed = (config, pc, events) =>\r\n function() {\r\n if (!Object.keys(config.dimensions).length) pc.detectDimensions();\r\n\r\n pc.renderBrushed[config.mode]();\r\n events.call('render', this);\r\n return this;\r\n };\r\n\r\nexport { pathBrushed, renderBrushed, renderBrushedDefault, renderBrushedQueue };\r\n","import { select } from 'd3-selection';\r\n\r\nconst brushReset = (config, pc) =>\r\n function(dimension) {\r\n const brushesToKeep = [];\r\n for (let j = 0; j < config.brushes.length; j++) {\r\n if (config.brushes[j].data !== dimension) {\r\n brushesToKeep.push(config.brushes[j]);\r\n }\r\n }\r\n\r\n config.brushes = brushesToKeep;\r\n config.brushed = false;\r\n\r\n if (pc.g() !== undefined) {\r\n const nodes = pc\r\n .g()\r\n .selectAll('.brush')\r\n .nodes();\r\n for (let i = 0; i < nodes.length; i++) {\r\n if (nodes[i].__data__ === dimension) {\r\n // remove all dummy brushes for this axis or the real brush\r\n select(select(nodes[i]).nodes()[0].parentNode)\r\n .selectAll('.dummy')\r\n .remove();\r\n config.dimensions[dimension].brush.move(select(nodes[i], null));\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\nexport default brushReset;\r\n","// a better \"typeof\" from this post: http://stackoverflow.com/questions/7390426/better-way-to-get-type-of-a-javascript-variable\r\nconst toType = v => {\r\n return {}.toString\r\n .call(v)\r\n .match(/\\s([a-zA-Z]+)/)[1]\r\n .toLowerCase();\r\n};\r\n\r\nexport default toType;\r\n","// this descriptive text should live with other introspective methods\r\nconst toString = config => () =>\r\n 'Parallel Coordinates: ' +\r\n Object.keys(config.dimensions).length +\r\n ' dimensions (' +\r\n Object.keys(config.data[0]).length +\r\n ' total) , ' +\r\n config.data.length +\r\n ' rows';\r\n\r\nexport default toString;\r\n","// pairs of adjacent dimensions\r\nconst adjacentPairs = arr => {\r\n let ret = [];\r\n for (let i = 0; i < arr.length - 1; i++) {\r\n ret.push([arr[i], arr[i + 1]]);\r\n }\r\n return ret;\r\n};\r\n\r\nexport default adjacentPairs;\r\n","import { selectAll } from 'd3-selection';\r\n\r\nimport colorPath from '../util/colorPath';\r\nimport functor from '../util/functor';\r\n\r\nconst pathHighlight = (config, ctx, position) => (d, i) => {\r\n ctx.highlight.strokeStyle = functor(config.color)(d, i);\r\n return colorPath(config, position, d, ctx.highlight);\r\n};\r\n\r\n// highlight an array of data\r\nconst highlight = (config, pc, canvas, events, ctx, position) =>\r\n function(data = null) {\r\n if (data === null) {\r\n return config.highlighted;\r\n }\r\n\r\n config.highlighted = data;\r\n pc.clear('highlight');\r\n selectAll([canvas.foreground, canvas.brushed]).classed('faded', true);\r\n data.forEach(pathHighlight(config, ctx, position));\r\n events.call('highlight', this, data);\r\n return this;\r\n };\r\n\r\nexport default highlight;\r\n","import { selectAll } from 'd3-selection';\r\n\r\n// clear highlighting\r\nconst unhighlight = (config, pc, canvas) =>\r\n function() {\r\n config.highlighted = [];\r\n pc.clear('highlight');\r\n selectAll([canvas.foreground, canvas.brushed]).classed('faded', false);\r\n return this;\r\n };\r\n\r\nexport default unhighlight;\r\n","import { selectAll } from 'd3-selection';\r\n\r\nimport { pathMark } from './renderMarked';\r\n\r\n// mark an array of data\r\nconst mark = (config, pc, canvas, events, ctx, position) =>\r\n function(data = null) {\r\n if (data === null) {\r\n return config.marked;\r\n }\r\n\r\n // add array to already marked data\r\n config.marked = config.marked.concat(data);\r\n selectAll([canvas.foreground, canvas.brushed]).classed('dimmed', true);\r\n data.forEach(pathMark(config, ctx, position));\r\n events.call('mark', this, data);\r\n return this;\r\n };\r\n\r\nexport default mark;\r\n","import { selectAll } from 'd3-selection';\r\n\r\n// clear marked data arrays\r\nconst unmark = (config, pc, canvas) =>\r\n function() {\r\n config.marked = [];\r\n pc.clear('marked');\r\n selectAll([canvas.foreground, canvas.brushed]).classed('dimmed', false);\r\n return this;\r\n };\r\n\r\nexport default unmark;\r\n","const removeAxes = pc =>\r\n function() {\r\n pc._g.remove();\r\n\r\n delete pc._g;\r\n return this;\r\n };\r\n\r\nexport default removeAxes;\r\n","/**\r\n * Renders the polylines.\r\n * If no dimensions have been specified, it will attempt to detect quantitative\r\n * dimensions based on the first data entry. If scales haven't been set, it will\r\n * autoscale based on the extent for each dimension.\r\n *\r\n * @param config\r\n * @param pc\r\n * @param events\r\n * @returns {Function}\r\n */\r\nconst render = (config, pc, events) =>\r\n function() {\r\n // try to autodetect dimensions and create scales\r\n if (!Object.keys(config.dimensions).length) {\r\n pc.detectDimensions();\r\n }\r\n pc.autoscale();\r\n\r\n pc.render[config.mode]();\r\n\r\n events.call('render', this);\r\n return this;\r\n };\r\n\r\nexport default render;\r\n","import colorPath from '../util/colorPath';\r\nimport functor from '../util/functor';\r\n\r\nconst pathForeground = (config, ctx, position) => (d, i) => {\r\n ctx.foreground.strokeStyle = functor(config.color)(d, i);\r\n return colorPath(config, position, d, ctx.foreground);\r\n};\r\n\r\nconst renderDefault = (config, pc, ctx, position) => () => {\r\n pc.clear('foreground');\r\n pc.clear('highlight');\r\n\r\n pc.renderBrushed.default();\r\n pc.renderMarked.default();\r\n\r\n config.data.forEach(pathForeground(config, ctx, position));\r\n};\r\n\r\nconst renderDefaultQueue = (config, pc, foregroundQueue) => () => {\r\n pc.renderBrushed.queue();\r\n pc.renderMarked.queue();\r\n foregroundQueue(config.data);\r\n};\r\n\r\nexport default renderDefault;\r\n\r\nexport { pathForeground, renderDefaultQueue };\r\n","import toType from './toType';\r\n\r\n// try to coerce to number before returning type\r\nconst toTypeCoerceNumbers = v =>\r\n parseFloat(v) == v && v !== null ? 'number' : toType(v);\r\n\r\nexport default toTypeCoerceNumbers;\r\n","import toTypeCoerceNumbers from './toTypeCoerceNumbers';\r\n\r\n// attempt to determine types of each dimension based on first row of data\r\nconst detectDimensionTypes = data =>\r\n Object.keys(data[0]).reduce((acc, cur) => {\r\n const key = isNaN(Number(cur)) ? cur : parseInt(cur);\r\n acc[key] = toTypeCoerceNumbers(data[0][cur]);\r\n\r\n return acc;\r\n }, {});\r\n\r\nexport default detectDimensionTypes;\r\n","import { ascending } from 'd3-array';\r\n\r\nconst getOrderedDimensionKeys = config => () =>\r\n Object.keys(config.dimensions).sort((x, y) =>\r\n ascending(config.dimensions[x].index, config.dimensions[y].index)\r\n );\r\n\r\nexport default getOrderedDimensionKeys;\r\n","const interactive = flags =>\r\n function() {\r\n flags.interactive = true;\r\n return this;\r\n };\r\n\r\nexport default interactive;\r\n","const shadows = (flags, pc) =>\r\n function() {\r\n flags.shadows = true;\r\n pc.alphaOnBrushed(0.1);\r\n pc.render();\r\n return this;\r\n };\r\n\r\nexport default shadows;\r\n","import { select } from 'd3-selection';\r\n\r\n/**\r\n * Setup a new parallel coordinates chart.\r\n *\r\n * @param config\r\n * @param canvas\r\n * @param ctx\r\n * @returns {pc} a parcoords closure\r\n */\r\nconst init = (config, canvas, ctx) => {\r\n /**\r\n * Create the chart within a container. The selector can also be a d3 selection.\r\n *\r\n * @param selection a d3 selection\r\n * @returns {pc} instance for chained api\r\n */\r\n const pc = function(selection) {\r\n selection = pc.selection = select(selection);\r\n\r\n config.width = selection.node().clientWidth;\r\n config.height = selection.node().clientHeight;\r\n // canvas data layers\r\n ['dots', 'foreground', 'brushed', 'marked', 'highlight'].forEach(layer => {\r\n canvas[layer] = selection\r\n .append('canvas')\r\n .attr('class', layer)\r\n .node();\r\n ctx[layer] = canvas[layer].getContext('2d');\r\n });\r\n\r\n // svg tick and brush layers\r\n pc.svg = selection\r\n .append('svg')\r\n .attr('width', config.width)\r\n .attr('height', config.height)\r\n .style('font', '14px sans-serif')\r\n .style('position', 'absolute')\r\n\r\n .append('svg:g')\r\n .attr(\r\n 'transform',\r\n 'translate(' + config.margin.left + ',' + config.margin.top + ')'\r\n );\r\n // for chained api\r\n return pc;\r\n };\r\n\r\n // for partial-application style programming\r\n return pc;\r\n};\r\n\r\nexport default init;\r\n","const flip = config =>\r\n function(d) {\r\n //__.dimensions[d].yscale.domain().reverse(); // does not work\r\n config.dimensions[d].yscale.domain(\r\n config.dimensions[d].yscale.domain().reverse()\r\n ); // works\r\n\r\n return this;\r\n };\r\n\r\nexport default flip;\r\n","const detectDimensions = pc =>\r\n function() {\r\n pc.dimensions(pc.applyDimensionDefaults());\r\n return this;\r\n };\r\n\r\nexport default detectDimensions;\r\n","const scale = (config, pc) =>\r\n function(d, domain) {\r\n config.dimensions[d].yscale.domain(domain);\r\n pc.render.default();\r\n pc.updateAxes();\r\n\r\n return this;\r\n };\r\n\r\nexport default scale;\r\n","const DefaultConfig = {\r\n data: [],\r\n highlighted: [],\r\n marked: [],\r\n dimensions: {},\r\n dimensionTitleRotation: 0,\r\n brushes: [],\r\n brushed: false,\r\n brushedColor: null,\r\n alphaOnBrushed: 0.0,\r\n lineWidth: 1.4,\r\n highlightedLineWidth: 3,\r\n mode: 'default',\r\n markedLineWidth: 3,\r\n markedShadowColor: '#ffffff',\r\n markedShadowBlur: 10,\r\n rate: 20,\r\n width: 600,\r\n height: 300,\r\n margin: { top: 24, right: 20, bottom: 12, left: 20 },\r\n nullValueSeparator: 'undefined', // set to \"top\" or \"bottom\"\r\n nullValueSeparatorPadding: { top: 8, right: 0, bottom: 8, left: 0 },\r\n color: '#069',\r\n composite: 'source-over',\r\n alpha: 0.7,\r\n bundlingStrength: 0.5,\r\n bundleDimension: null,\r\n smoothness: 0.0,\r\n showControlPoints: false,\r\n hideAxis: [],\r\n flipAxes: [],\r\n animationTime: 1100, // How long it takes to flip the axis when you double click\r\n rotateLabels: false,\r\n};\r\n\r\nexport default DefaultConfig;\r\n","import { axisLeft } from 'd3-axis';\r\nimport { dispatch } from 'd3-dispatch';\r\nimport { scalePoint } from 'd3-scale';\r\n\r\nimport DefaultConfig from './defaultConfig';\r\n\r\nconst initState = userConfig => {\r\n const config = Object.assign({}, DefaultConfig, userConfig);\r\n\r\n if (userConfig && userConfig.dimensionTitles) {\r\n console.warn(\r\n 'dimensionTitles passed in userConfig is deprecated. Add title to dimension object.'\r\n );\r\n Object.entries(userConfig.dimensionTitles).forEach(([key, value]) => {\r\n if (config.dimensions[key]) {\r\n config.dimensions[key].title = config.dimensions[key].title\r\n ? config.dimensions[key].title\r\n : value;\r\n } else {\r\n config.dimensions[key] = {\r\n title: value,\r\n };\r\n }\r\n });\r\n }\r\n\r\n const eventTypes = [\r\n 'render',\r\n 'resize',\r\n 'highlight',\r\n 'mark',\r\n 'brush',\r\n 'brushend',\r\n 'brushstart',\r\n 'axesreorder',\r\n ].concat(Object.keys(config));\r\n\r\n const events = dispatch.apply(this, eventTypes),\r\n flags = {\r\n brushable: false,\r\n reorderable: false,\r\n axes: false,\r\n interactive: false,\r\n debug: false,\r\n },\r\n xscale = scalePoint(),\r\n dragging = {},\r\n axis = axisLeft().ticks(5),\r\n ctx = {},\r\n canvas = {};\r\n\r\n const brush = {\r\n modes: {\r\n None: {\r\n install: function(pc) {}, // Nothing to be done.\r\n uninstall: function(pc) {}, // Nothing to be done.\r\n selected: function() {\r\n return [];\r\n }, // Nothing to return\r\n brushState: function() {\r\n return {};\r\n },\r\n },\r\n },\r\n mode: 'None',\r\n predicate: 'AND',\r\n currentMode: function() {\r\n return this.modes[this.mode];\r\n },\r\n };\r\n\r\n return {\r\n config,\r\n events,\r\n eventTypes,\r\n flags,\r\n xscale,\r\n dragging,\r\n axis,\r\n ctx,\r\n canvas,\r\n brush,\r\n };\r\n};\r\n\r\nexport default initState;\r\n","const computeClusterCentroids = (config, d) => {\r\n const clusterCentroids = new Map();\r\n const clusterCounts = new Map();\r\n // determine clusterCounts\r\n config.data.forEach(function(row) {\r\n let scaled = config.dimensions[d].yscale(row[d]);\r\n if (!clusterCounts.has(scaled)) {\r\n clusterCounts.set(scaled, 0);\r\n }\r\n let count = clusterCounts.get(scaled);\r\n clusterCounts.set(scaled, count + 1);\r\n });\r\n\r\n config.data.forEach(function(row) {\r\n Object.keys(config.dimensions).map(p => {\r\n let scaled = config.dimensions[d].yscale(row[d]);\r\n if (!clusterCentroids.has(scaled)) {\r\n const _map = new Map();\r\n clusterCentroids.set(scaled, _map);\r\n }\r\n if (!clusterCentroids.get(scaled).has(p)) {\r\n clusterCentroids.get(scaled).set(p, 0);\r\n }\r\n let value = clusterCentroids.get(scaled).get(p);\r\n value += config.dimensions[p].yscale(row[p]) / clusterCounts.get(scaled);\r\n clusterCentroids.get(scaled).set(p, value);\r\n });\r\n });\r\n\r\n return clusterCentroids;\r\n};\r\n\r\nexport default computeClusterCentroids;\r\n","// side effects for setters\r\nimport { dispatch } from 'd3-dispatch';\r\nimport computeClusterCentroids from '../util/computeClusterCentroids';\r\nimport flipAxisAndUpdatePCP from '../util/flipAxisAndUpdatePCP';\r\n\r\nconst without = (arr, items) => {\r\n items.forEach(el => {\r\n delete arr[el];\r\n });\r\n return arr;\r\n};\r\n\r\nconst sideEffects = (\r\n config,\r\n ctx,\r\n pc,\r\n xscale,\r\n axis,\r\n flags,\r\n brushedQueue,\r\n markedQueue,\r\n foregroundQueue\r\n) =>\r\n dispatch\r\n .apply(this, Object.keys(config))\r\n .on('composite', d => {\r\n ctx.foreground.globalCompositeOperation = d.value;\r\n ctx.brushed.globalCompositeOperation = d.value;\r\n })\r\n .on('alpha', d => {\r\n ctx.foreground.globalAlpha = d.value;\r\n ctx.brushed.globalAlpha = d.value;\r\n })\r\n .on('brushedColor', d => {\r\n ctx.brushed.strokeStyle = d.value;\r\n })\r\n .on('width', d => pc.resize())\r\n .on('height', d => pc.resize())\r\n .on('margin', d => pc.resize())\r\n .on('rate', d => {\r\n brushedQueue.rate(d.value);\r\n markedQueue.rate(d.value);\r\n foregroundQueue.rate(d.value);\r\n })\r\n .on('dimensions', d => {\r\n config.dimensions = pc.applyDimensionDefaults(Object.keys(d.value));\r\n xscale.domain(pc.getOrderedDimensionKeys());\r\n pc.sortDimensions();\r\n if (flags.interactive) {\r\n pc.render().updateAxes();\r\n }\r\n })\r\n .on('bundleDimension', d => {\r\n if (!Object.keys(config.dimensions).length) pc.detectDimensions();\r\n pc.autoscale();\r\n if (typeof d.value === 'number') {\r\n if (d.value < Object.keys(config.dimensions).length) {\r\n config.bundleDimension = config.dimensions[d.value];\r\n } else if (d.value < config.hideAxis.length) {\r\n config.bundleDimension = config.hideAxis[d.value];\r\n }\r\n } else {\r\n config.bundleDimension = d.value;\r\n }\r\n\r\n config.clusterCentroids = computeClusterCentroids(\r\n config,\r\n config.bundleDimension\r\n );\r\n if (flags.interactive) {\r\n pc.render();\r\n }\r\n })\r\n .on('hideAxis', d => {\r\n pc.brushReset();\r\n pc.dimensions(pc.applyDimensionDefaults());\r\n pc.dimensions(without(config.dimensions, d.value));\r\n pc.render();\r\n })\r\n .on('flipAxes', d => {\r\n if (d.value && d.value.length) {\r\n d.value.forEach(function(dimension) {\r\n flipAxisAndUpdatePCP(config, pc, axis)(dimension);\r\n });\r\n pc.updateAxes(0);\r\n }\r\n });\r\n\r\nexport default sideEffects;\r\n","const getset = (obj, state, events, side_effects) => {\r\n Object.keys(state).forEach(function(key) {\r\n obj[key] = function(x) {\r\n if (!arguments.length) {\r\n return state[key];\r\n }\r\n if (\r\n key === 'dimensions' &&\r\n Object.prototype.toString.call(x) === '[object Array]'\r\n ) {\r\n console.warn('pc.dimensions([]) is deprecated, use pc.dimensions({})');\r\n x = obj.applyDimensionDefaults(x);\r\n }\r\n let old = state[key];\r\n state[key] = x;\r\n side_effects.call(key, obj, { value: x, previous: old });\r\n events.call(key, obj, { value: x, previous: old });\r\n return obj;\r\n };\r\n });\r\n};\r\n\r\nexport default getset;\r\n","// side effects for setters\r\nimport sideEffects from './state/sideEffects';\r\nimport getset from './util/getset';\r\n\r\nconst d3_rebind = (target, source, method) =>\r\n function() {\r\n const value = method.apply(source, arguments);\r\n return value === source ? target : value;\r\n };\r\n\r\nconst _rebind = (target, source, method) => {\r\n target[method] = d3_rebind(target, source, source[method]);\r\n return target;\r\n};\r\n\r\nconst bindEvents = (\r\n __,\r\n ctx,\r\n pc,\r\n xscale,\r\n flags,\r\n brushedQueue,\r\n markedQueue,\r\n foregroundQueue,\r\n events,\r\n axis\r\n) => {\r\n const side_effects = sideEffects(\r\n __,\r\n ctx,\r\n pc,\r\n xscale,\r\n axis,\r\n flags,\r\n brushedQueue,\r\n markedQueue,\r\n foregroundQueue\r\n );\r\n\r\n // create getter/setters\r\n getset(pc, __, events, side_effects);\r\n\r\n // expose events\r\n // getter/setter with event firing\r\n _rebind(pc, events, 'on');\r\n\r\n _rebind(\r\n pc,\r\n axis,\r\n 'ticks',\r\n 'orient',\r\n 'tickValues',\r\n 'tickSubdivide',\r\n 'tickSize',\r\n 'tickPadding',\r\n 'tickFormat'\r\n );\r\n};\r\n\r\nexport default bindEvents;\r\n","// misc\r\nimport renderQueue from './util/renderQueue';\r\nimport w from './util/width';\r\n\r\n// brush\r\nimport install1DAxes from './brush/1d';\r\nimport install1DAxesMulti from './brush/1d-multi';\r\nimport install2DStrums from './brush/strums';\r\nimport installAngularBrush from './brush/angular';\r\n\r\n// api\r\nimport intersection from './api/intersection';\r\nimport mergeParcoords from './api/mergeParcoords';\r\nimport selected from './api/selected';\r\nimport brushMode from './api/brushMode';\r\nimport updateAxes from './api/updateAxes';\r\nimport autoscale from './api/autoscale';\r\nimport brushable from './api/brushable';\r\nimport commonScale from './api/commonScale';\r\nimport computeRealCentroids from './api/computeRealCentroids';\r\nimport applyDimensionDefaults from './api/applyDimensionDefaults';\r\nimport createAxes from './api/createAxes';\r\nimport axisDots from './api/axisDots';\r\nimport applyAxisConfig from './api/applyAxisConfig';\r\nimport reorderable from './api/reorderable';\r\nimport resize from './api/resize';\r\nimport reorder from './api/reorder';\r\nimport sortDimensions from './api/sortDimensions';\r\nimport sortDimensionsByRowData from './api/sortDimensionsByRowData';\r\nimport clear from './api/clear';\r\nimport {\r\n pathMark,\r\n renderMarked,\r\n renderMarkedDefault,\r\n renderMarkedQueue,\r\n} from './api/renderMarked';\r\nimport {\r\n pathBrushed,\r\n renderBrushed,\r\n renderBrushedDefault,\r\n renderBrushedQueue,\r\n} from './api/renderBrushed';\r\nimport brushReset from './api/brushReset';\r\nimport toType from './api/toType';\r\nimport toString from './api/toString';\r\nimport adjacentPairs from './api/adjacentPairs';\r\nimport highlight from './api/highlight';\r\nimport unhighlight from './api/unhighlight';\r\nimport mark from './api/mark';\r\nimport unmark from './api/unmark';\r\nimport removeAxes from './api/removeAxes';\r\nimport render from './api/render';\r\nimport renderDefault, {\r\n pathForeground,\r\n renderDefaultQueue,\r\n} from './api/renderDefault';\r\nimport toTypeCoerceNumbers from './api/toTypeCoerceNumbers';\r\nimport detectDimensionTypes from './api/detectDimensionTypes';\r\nimport getOrderedDimensionKeys from './api/getOrderedDimensionKeys';\r\nimport interactive from './api/interactive';\r\nimport shadows from './api/shadows';\r\nimport init from './api/init';\r\nimport flip from './api/flip';\r\nimport detectDimensions from './api/detectDimensions';\r\nimport scale from './api/scale';\r\n\r\nimport { version } from '../package.json';\r\nimport initState from './state';\r\nimport bindEvents from './bindEvents';\r\n\r\n//css\r\nimport './parallel-coordinates.css';\r\n\r\nconst ParCoords = userConfig => {\r\n const state = initState(userConfig);\r\n const {\r\n config,\r\n events,\r\n flags,\r\n xscale,\r\n dragging,\r\n axis,\r\n ctx,\r\n canvas,\r\n brush,\r\n } = state;\r\n\r\n const pc = init(config, canvas, ctx);\r\n\r\n const position = d => {\r\n if (xscale.range().length === 0) {\r\n xscale.range([0, w(config)], 1);\r\n }\r\n return dragging[d] == null ? xscale(d) : dragging[d];\r\n };\r\n\r\n const brushedQueue = renderQueue(pathBrushed(config, ctx, position))\r\n .rate(50)\r\n .clear(() => pc.clear('brushed'));\r\n\r\n const markedQueue = renderQueue(pathMark(config, ctx, position))\r\n .rate(50)\r\n .clear(() => pc.clear('marked'));\r\n\r\n const foregroundQueue = renderQueue(pathForeground(config, ctx, position))\r\n .rate(50)\r\n .clear(function() {\r\n pc.clear('foreground');\r\n pc.clear('highlight');\r\n });\r\n\r\n bindEvents(\r\n config,\r\n ctx,\r\n pc,\r\n xscale,\r\n flags,\r\n brushedQueue,\r\n markedQueue,\r\n foregroundQueue,\r\n events,\r\n axis\r\n );\r\n\r\n // expose the state of the chart\r\n pc.state = config;\r\n pc.flags = flags;\r\n\r\n pc.autoscale = autoscale(config, pc, xscale, ctx);\r\n pc.scale = scale(config, pc);\r\n pc.flip = flip(config);\r\n pc.commonScale = commonScale(config, pc);\r\n pc.detectDimensions = detectDimensions(pc);\r\n // attempt to determine types of each dimension based on first row of data\r\n pc.detectDimensionTypes = detectDimensionTypes;\r\n pc.applyDimensionDefaults = applyDimensionDefaults(config, pc);\r\n pc.getOrderedDimensionKeys = getOrderedDimensionKeys(config);\r\n\r\n //Renders the polylines.\r\n pc.render = render(config, pc, events);\r\n pc.renderBrushed = renderBrushed(config, pc, events);\r\n pc.renderMarked = renderMarked(config, pc, events);\r\n pc.render.default = renderDefault(config, pc, ctx, position);\r\n pc.render.queue = renderDefaultQueue(config, pc, foregroundQueue);\r\n pc.renderBrushed.default = renderBrushedDefault(\r\n config,\r\n ctx,\r\n position,\r\n pc,\r\n brush\r\n );\r\n pc.renderBrushed.queue = renderBrushedQueue(config, brush, brushedQueue);\r\n pc.renderMarked.default = renderMarkedDefault(config, pc, ctx, position);\r\n pc.renderMarked.queue = renderMarkedQueue(config, markedQueue);\r\n\r\n pc.compute_real_centroids = computeRealCentroids(config, position);\r\n pc.shadows = shadows(flags, pc);\r\n pc.axisDots = axisDots(config, pc, position);\r\n pc.clear = clear(config, pc, ctx, brush);\r\n pc.createAxes = createAxes(config, pc, xscale, flags, axis);\r\n pc.removeAxes = removeAxes(pc);\r\n pc.updateAxes = updateAxes(config, pc, position, axis, flags);\r\n pc.applyAxisConfig = applyAxisConfig;\r\n pc.brushable = brushable(config, pc, flags);\r\n pc.brushReset = brushReset(config, pc);\r\n pc.selected = selected(config, pc);\r\n pc.reorderable = reorderable(config, pc, xscale, position, dragging, flags);\r\n\r\n // Reorder dimensions, such that the highest value (visually) is on the left and\r\n // the lowest on the right. Visual values are determined by the data values in\r\n // the given row.\r\n pc.reorder = reorder(config, pc, xscale);\r\n pc.sortDimensionsByRowData = sortDimensionsByRowData(config);\r\n pc.sortDimensions = sortDimensions(config, position);\r\n\r\n // pairs of adjacent dimensions\r\n pc.adjacent_pairs = adjacentPairs;\r\n pc.interactive = interactive(flags);\r\n\r\n // expose internal state\r\n pc.xscale = xscale;\r\n pc.ctx = ctx;\r\n pc.canvas = canvas;\r\n pc.g = () => pc._g;\r\n\r\n // rescale for height, width and margins\r\n // TODO currently assumes chart is brushable, and destroys old brushes\r\n pc.resize = resize(config, pc, flags, events);\r\n\r\n // highlight an array of data\r\n pc.highlight = highlight(config, pc, canvas, events, ctx, position);\r\n // clear highlighting\r\n pc.unhighlight = unhighlight(config, pc, canvas);\r\n\r\n // mark an array of data\r\n pc.mark = mark(config, pc, canvas, events, ctx, position);\r\n // clear marked data\r\n pc.unmark = unmark(config, pc, canvas);\r\n\r\n // calculate 2d intersection of line a->b with line c->d\r\n // points are objects with x and y properties\r\n pc.intersection = intersection;\r\n\r\n // Merges the canvases and SVG elements into one canvas element which is then passed into the callback\r\n // (so you can choose to save it to disk, etc.)\r\n pc.mergeParcoords = mergeParcoords(pc);\r\n pc.brushModes = () => Object.getOwnPropertyNames(brush.modes);\r\n pc.brushMode = brushMode(brush, config, pc);\r\n\r\n // install brushes\r\n install1DAxes(brush, config, pc, events);\r\n install2DStrums(brush, config, pc, events, xscale);\r\n installAngularBrush(brush, config, pc, events, xscale);\r\n install1DAxesMulti(brush, config, pc, events);\r\n\r\n pc.version = version;\r\n // this descriptive text should live with other introspective methods\r\n pc.toString = toString(config);\r\n pc.toType = toType;\r\n // try to coerce to number before returning type\r\n pc.toTypeCoerceNumbers = toTypeCoerceNumbers;\r\n\r\n return pc;\r\n};\r\n\r\nexport default ParCoords;\r\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","extents","brushes","brushNodes","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","_this","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","hasOwnProperty","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","b","indexOf","brushObject","exit","pos","axisBrushes","document","getElementById","hideAxis","includes","dimExt","_iterator","_createForOfIteratorHelper","_step","s","n","done","e","err","f","_iterator2","_step2","_iterator3","_step3","_iterator4","_step4","_iterator5","_step5","newBrush","lastBrushID","lastBrush","toString","hiddenAxes","yExtents","_bs","j","ext","k","axisBrush","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","maxX","minY","maxY","onDrag","top","h","height","bottom","dimensionsForPoint","xscale","getOrderedDimensionKeys","onDragStart","pointer","consecutive","first","second","install2DStrums","hypothenuse","a","sqrt","signedAngle","angle","PI","arc","startAngle","endAngle","tmp","arcs","c","asin","outerRadius","p3","_path","d3Arc","innerRadius","sAngle","uAngle","installAngularBrush","intersection","mergeParcoords","callback","devicePixelRatio","window","mergedCanvas","createElement","foregroundCanvas","canvas","foreground","canvasMarginLeft","Number","marginLeft","replace","textTopAdjust","canvasMarginTop","marginTop","clientWidth","clientHeight","context","getContext","fillStyle","fillRect","key","drawImage","serializer","XMLSerializer","svgNodeCopy","cloneNode","setAttribute","getAttribute","svgStr","serializeToString","src","btoa","img","Image","onload","ranges","nodes","__data__","values","ranger","flipAxes","unshift","ii","dimRange","category","categoryIndex","categoryRangeValue","multiBrushData","_loop","idx","filtered","z","String","toUpperCase","currentMode","brushMode","mode","brushModes","dimensionLabels","title","flipAxisAndUpdatePCP","flip","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","val","tempDate","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","_objectSpread","orient","ticks","innerTickSize","outerTickSize","tickPadding","index","removeAxes","_g","axes","axisDots","_r","r","dots","pow","entries","_ref","_ref2","_slicedToArray","beginPath","stroke","fill","axisCfg","axisLeft","axisRight","axisTop","axisBottom","tickValues","tickSizeInner","tickSizeOuter","tickFormat","dragging","__origin__","dx","sortDimensions","renderMarked","resize","reorder","rowdata","firstDim","sortDimensionsByRowData","reordered","highlighted","unhighlight","unmark","mark","copy","assign","positionSortedKeys","pixelDifference","localeCompare","isBrushed","object","layer","clearRect","alphaOnBrushed","PRECISION","Matrix","constructor","elements","setElements","Vector","col","cols","rows","eql","matrix","M","nj","abs","dup","fn","els","isSameSizeAs","subtract","canMultiplyFromLeft","multiply","returnVector","modulus","sum","minor","ni","transpose","isSquare","m","diagonal","toRightTriangular","np","multiplier","determinant","det","isSingular","trace","tr","rank","augment","T","inverse","I","divisor","inverse_elements","new_element","round","snapTo","inspect","matrix_rows","join","flatten","result","ensure4x4","make3x3","Diagonal","Rotation","theta","cos","sin","mod","RotationX","RotationY","RotationZ","Random","Zero","random","Translation","v","toUpperTriangular","rk","inv","dot","vector","V","toUnitVector","angleFrom","mod1","mod2","acos","isParallelTo","isAntiparallelTo","isPerpendicularTo","product","cross","B","A","toDiagonalMatrix","distanceFrom","obj","anchor","start","end","part","liesOn","line","contains","liesIn","plane","rotate","R","direction","C","pointClosestTo","reflectionIn","P","Q","to3D","computeCentroids","centroids","cx","cy","leftCentroid","clusterCentroids","get","rightCentroid","centroid","bundlingStrength","computeControlPoints","smoothness","cps","mid","diff","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","arr","ret","pathHighlight","classed","pathForeground","renderDefault","renderDefaultQueue","foregroundQueue","queue","toTypeCoerceNumbers","parseFloat","parseInt","ascending","interactive","shadows","init","DefaultConfig","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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","x_google_ignoreList":[65,66,67]}