@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.esm.js","sources":["../src/util/renderQueue.js","../src/util/width.js","../src/brush/invertByScale.js","../src/brush/1d/brushExtents.js","../src/brush/1d/brushReset.js","../src/brush/1d/selected.js","../src/brush/1d/brushFor.js","../src/brush/1d/install.js","../src/brush/1d/uninstall.js","../src/brush/1d/index.js","../src/brush/1d-multi/drawBrushes.js","../src/brush/1d-multi/selected.js","../src/brush/1d-multi/newBrush.js","../src/brush/1d-multi/brushExtents.js","../src/brush/1d-multi/brushReset.js","../src/brush/1d-multi/brushFor.js","../src/brush/1d-multi/install.js","../src/brush/1d-multi/uninstall.js","../src/brush/1d-multi/index.js","../src/brush/strums/uninstall.js","../src/brush/strums/selected.js","../src/brush/strums/removeStrum.js","../src/brush/strums/onDragEnd.js","../src/brush/strums/onDrag.js","../src/util/height.js","../src/brush/dimensionsForPoint.js","../src/brush/strums/onDragStart.js","../src/brush/strums/brushReset.js","../src/brush/consecutive.js","../src/brush/strums/install.js","../src/brush/strums/index.js","../src/brush/angular/uninstall.js","../src/brush/angular/util/hypothenuse.js","../src/brush/angular/selected.js","../src/brush/angular/removeStrum.js","../src/brush/angular/onDragEnd.js","../src/brush/angular/onDrag.js","../src/brush/angular/onDragStart.js","../src/brush/angular/brushReset.js","../src/brush/angular/install.js","../src/brush/angular/index.js","../src/api/intersection.js","../src/api/mergeParcoords.js","../src/api/selected.js","../src/api/brushMode.js","../src/util/dimensionLabels.js","../src/util/flipAxisAndUpdatePCP.js","../src/util/rotateLabels.js","../src/api/updateAxes.js","../src/util/getRange.js","../src/api/autoscale.js","../src/api/brushable.js","../src/api/commonScale.js","../src/api/computeRealCentroids.js","../src/api/applyDimensionDefaults.js","../src/api/createAxes.js","../src/api/axisDots.js","../src/api/applyAxisConfig.js","../src/api/reorderable.js","../src/api/resize.js","../src/api/reorder.js","../src/api/sortDimensions.js","../src/api/sortDimensionsByRowData.js","../src/util/isBrushed.js","../src/api/clear.js","../node_modules/sylvester-es6/src/PRECISION.js","../node_modules/sylvester-es6/src/Matrix.js","../node_modules/sylvester-es6/src/Vector.js","../src/util/computeCentroids.js","../src/util/computeControlPoints.js","../src/util/colorPath.js","../src/util/functor.js","../src/api/renderMarked.js","../src/api/renderBrushed.js","../src/api/brushReset.js","../src/api/toType.js","../src/api/toString.js","../src/api/adjacentPairs.js","../src/api/highlight.js","../src/api/unhighlight.js","../src/api/mark.js","../src/api/unmark.js","../src/api/removeAxes.js","../src/api/render.js","../src/api/renderDefault.js","../src/api/toTypeCoerceNumbers.js","../src/api/detectDimensionTypes.js","../src/api/getOrderedDimensionKeys.js","../src/api/interactive.js","../src/api/shadows.js","../src/api/init.js","../src/api/flip.js","../src/api/detectDimensions.js","../src/api/scale.js","../src/state/defaultConfig.js","../src/state/index.js","../src/util/computeClusterCentroids.js","../src/state/sideEffects.js","../src/util/getset.js","../src/bindEvents.js","../src/index.js"],"sourcesContent":["import 'requestanimationframe';\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]}