@splunk/visualizations 25.9.1 → 25.11.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 (91) hide show
  1. package/Area.js +2 -2
  2. package/Area.js.map +1 -1
  3. package/Bar.js +2 -2
  4. package/Bar.js.map +1 -1
  5. package/Bubble.config.js +1 -1
  6. package/Bubble.config.js.map +1 -1
  7. package/Bubble.js +3 -3
  8. package/Bubble.js.map +1 -1
  9. package/ChoroplethSvg.config.js +2 -2
  10. package/ChoroplethSvg.config.js.map +1 -1
  11. package/ChoroplethSvg.js +11 -11
  12. package/ChoroplethSvg.js.map +1 -1
  13. package/Column.config.js +1 -1
  14. package/Column.config.js.map +1 -1
  15. package/Column.js +3 -3
  16. package/Column.js.map +1 -1
  17. package/Ellipse.config.js +1 -1
  18. package/Ellipse.config.js.map +1 -1
  19. package/Ellipse.js +14 -14
  20. package/Ellipse.js.map +1 -1
  21. package/Events.js +22 -20
  22. package/Events.js.map +1 -1
  23. package/FillerGauge.config.js +3 -3
  24. package/FillerGauge.config.js.map +1 -1
  25. package/FillerGauge.js +32 -22
  26. package/FillerGauge.js.map +1 -1
  27. package/Image.js +2 -2
  28. package/Image.js.map +1 -1
  29. package/Line.config.js +1 -1
  30. package/Line.config.js.map +1 -1
  31. package/Line.js +3 -3
  32. package/Line.js.map +1 -1
  33. package/LinkGraph.config.js +1 -1
  34. package/LinkGraph.config.js.map +1 -1
  35. package/LinkGraph.js +141 -109
  36. package/LinkGraph.js.map +1 -1
  37. package/Map.config.js +1 -1
  38. package/Map.config.js.map +1 -1
  39. package/Map.js +196 -139
  40. package/Map.js.map +1 -1
  41. package/Markdown.js +6 -6
  42. package/Markdown.js.map +1 -1
  43. package/MarkerGauge.config.js +2 -2
  44. package/MarkerGauge.config.js.map +1 -1
  45. package/MarkerGauge.js +32 -21
  46. package/MarkerGauge.js.map +1 -1
  47. package/ParallelCoordinates.config.js +2 -2
  48. package/ParallelCoordinates.config.js.map +1 -1
  49. package/ParallelCoordinates.js +5 -5
  50. package/ParallelCoordinates.js.map +1 -1
  51. package/Pie.js +10 -10
  52. package/Pie.js.map +1 -1
  53. package/Punchcard.config.js +1 -1
  54. package/Punchcard.config.js.map +1 -1
  55. package/Punchcard.js +5 -5
  56. package/Punchcard.js.map +1 -1
  57. package/Rectangle.config.js +1 -1
  58. package/Rectangle.config.js.map +1 -1
  59. package/Rectangle.js +13 -13
  60. package/Rectangle.js.map +1 -1
  61. package/Sankey.js +7 -7
  62. package/Sankey.js.map +1 -1
  63. package/Scatter.config.js +1 -1
  64. package/Scatter.config.js.map +1 -1
  65. package/Scatter.js +7 -5
  66. package/Scatter.js.map +1 -1
  67. package/SingleValue.config.js +3 -3
  68. package/SingleValue.config.js.map +1 -1
  69. package/SingleValue.js +8 -8
  70. package/SingleValue.js.map +1 -1
  71. package/SingleValueBasic.js +1 -1
  72. package/SingleValueBasic.js.map +1 -1
  73. package/SingleValueIcon.config.js +3 -3
  74. package/SingleValueIcon.config.js.map +1 -1
  75. package/SingleValueIcon.js +6 -6
  76. package/SingleValueIcon.js.map +1 -1
  77. package/SingleValueRadial.config.js +3 -3
  78. package/SingleValueRadial.config.js.map +1 -1
  79. package/SingleValueRadial.js +30 -19
  80. package/SingleValueRadial.js.map +1 -1
  81. package/Table.js +31 -27
  82. package/Table.js.map +1 -1
  83. package/common/GaugeValueMarker.js +20 -10
  84. package/common/GaugeValueMarker.js.map +1 -1
  85. package/common/utils/mapUtils.js +7 -4
  86. package/common/utils/mapUtils.js.map +1 -1
  87. package/common/utils/singleValueUtils.js +1 -1
  88. package/common/utils/singleValueUtils.js.map +1 -1
  89. package/common/withDashboardViz.js +2 -2
  90. package/common/withDashboardViz.js.map +1 -1
  91. package/package.json +21 -21
package/LinkGraph.js CHANGED
@@ -265,7 +265,7 @@ var withFixedSizeContainer = function withFixedSizeContainer(Viz) {
265
265
  }
266
266
  return React.createElement(FixSizeItem, {
267
267
  "data-test": "fix-size-item",
268
- "data-splunk-visualization-version": "25.9.1 - 5ba41e723",
268
+ "data-splunk-visualization-version": "25.11.0 - 8b45fb274",
269
269
  width: width,
270
270
  height: height,
271
271
  backgroundColor: backgroundColor
@@ -1409,7 +1409,7 @@ var Cover = styled_components_1.default.div.withConfig({
1409
1409
  componentId: "sc-1gsbnxb-0"
1410
1410
  })(["position:absolute;left:0;right:0;top:0;bottom:0;"]);
1411
1411
  var Blocker = styled_components_1.default.div.attrs({
1412
- 'data-splunk-visualization-version': "25.9.1 - 5ba41e723"
1412
+ 'data-splunk-visualization-version': "25.11.0 - 8b45fb274"
1413
1413
  }).withConfig({
1414
1414
  displayName: "withEditModeCover__Blocker",
1415
1415
  componentId: "sc-1gsbnxb-1"
@@ -1579,59 +1579,56 @@ module.exports = require("@splunk/react-ui/Paragraph");
1579
1579
  /* 106 */,
1580
1580
  /* 107 */,
1581
1581
  /* 108 */,
1582
- /* 109 */,
1583
- /* 110 */
1582
+ /* 109 */
1584
1583
  /***/ (function(module, exports) {
1585
1584
 
1586
1585
  module.exports = require("@babel/runtime/helpers/inherits");
1587
1586
 
1588
1587
  /***/ }),
1589
- /* 111 */
1588
+ /* 110 */
1590
1589
  /***/ (function(module, exports) {
1591
1590
 
1592
1591
  module.exports = require("@babel/runtime/helpers/possibleConstructorReturn");
1593
1592
 
1594
1593
  /***/ }),
1595
- /* 112 */
1594
+ /* 111 */
1596
1595
  /***/ (function(module, exports) {
1597
1596
 
1598
1597
  module.exports = require("@babel/runtime/helpers/getPrototypeOf");
1599
1598
 
1600
1599
  /***/ }),
1600
+ /* 112 */,
1601
1601
  /* 113 */,
1602
1602
  /* 114 */,
1603
1603
  /* 115 */,
1604
1604
  /* 116 */,
1605
- /* 117 */,
1606
- /* 118 */
1605
+ /* 117 */
1607
1606
  /***/ (function(module, exports) {
1608
1607
 
1609
1608
  module.exports = require("@splunk/react-ui/Menu");
1610
1609
 
1611
1610
  /***/ }),
1611
+ /* 118 */,
1612
1612
  /* 119 */,
1613
1613
  /* 120 */,
1614
- /* 121 */,
1615
- /* 122 */
1614
+ /* 121 */
1616
1615
  /***/ (function(module, exports) {
1617
1616
 
1618
1617
  module.exports = require("@splunk/react-ui/Button");
1619
1618
 
1620
1619
  /***/ }),
1620
+ /* 122 */,
1621
1621
  /* 123 */,
1622
1622
  /* 124 */,
1623
1623
  /* 125 */,
1624
1624
  /* 126 */,
1625
- /* 127 */,
1626
- /* 128 */
1625
+ /* 127 */
1627
1626
  /***/ (function(module, exports, __webpack_require__) {
1628
1627
 
1629
1628
  "use strict";
1630
1629
 
1631
1630
 
1632
1631
  var _toConsumableArray = __webpack_require__(7);
1633
- var _classCallCheck = __webpack_require__(11);
1634
- var _createClass = __webpack_require__(22);
1635
1632
  Object.defineProperty(exports, "__esModule", {
1636
1633
  value: true
1637
1634
  });
@@ -1639,13 +1636,18 @@ exports.getSecondaryColumnByField = exports.sortGraphColumn = exports.getNodesTo
1639
1636
  var lodash_1 = __webpack_require__(3);
1640
1637
  var hashString = function hashString() {
1641
1638
  var stringIn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
1642
- return stringIn.toString().split('').map(function (v) {
1639
+ var returnStringArray = stringIn.toString().split('').map(function (v) {
1643
1640
  return v.charCodeAt(0);
1644
- })
1641
+ });
1642
+ if (returnStringArray.length === 0) {
1643
+ return '-1';
1644
+ }
1645
+ var returnValue =
1645
1646
  // eslint-disable-next-line no-bitwise
1646
- .reduce(function (a, v) {
1647
+ returnStringArray.reduce(function (a, v) {
1647
1648
  return a + ((a << 7) + (a << 3)) ^ v;
1648
1649
  }).toString(16);
1650
+ return returnValue;
1649
1651
  };
1650
1652
  exports.hashString = hashString;
1651
1653
  var createNode = function createNode(graphDataModelIn, nodesIn, column, field, fieldIndex, nodeWidth, nodeHeight, nodeSpacingX, nodeSpacingY, shouldAddToGraphDataModel) {
@@ -1672,6 +1674,9 @@ var createNode = function createNode(graphDataModelIn, nodesIn, column, field, f
1672
1674
  } else {
1673
1675
  node.data.count += 1;
1674
1676
  }
1677
+ if (column.toString().length === 0) {
1678
+ node.data.isHidden = true;
1679
+ }
1675
1680
  var key = "".concat(fieldIndex, "-").concat(fieldHash, "-").concat(columnHash);
1676
1681
  if (shouldAddToGraphDataModel && !graphDataModel.nodes[key]) {
1677
1682
  nodes[columnHash] = node;
@@ -1693,7 +1698,7 @@ var createEdge = function createEdge(graphDataModelIn, nodesIn, edgesIn, nodeIn,
1693
1698
  var fieldHash = exports.hashString(field);
1694
1699
  var columnHash = exports.hashString(column);
1695
1700
  var graphDataModel = graphDataModelIn;
1696
- if (columns[fieldIndex + 1] && columns[fieldIndex + 1][columnIndex]) {
1701
+ if (columns[fieldIndex + 1]) {
1697
1702
  var sourceNode = "".concat(fieldIndex, "-").concat(fieldHash, "-").concat(columnHash);
1698
1703
  var nextColumnOverContent = columns[fieldIndex + 1][columnIndex];
1699
1704
  var targetNode = "".concat(fieldIndex + 1, "-").concat(exports.hashString(fields[fieldIndex + 1]), "-").concat(exports.hashString(nextColumnOverContent));
@@ -1771,83 +1776,103 @@ var createLinkGraphFromTable = function createLinkGraphFromTable(fieldsIn, colum
1771
1776
  });
1772
1777
  });
1773
1778
  graphDataModel.edges = Object.values(edges);
1779
+ graphDataModel.columns = columns;
1780
+ // hide all edges that go to or from a hidden node
1781
+ var edgeTemp;
1782
+ graphDataModel.edges.forEach(function (edge) {
1783
+ var _a, _b, _c, _d;
1784
+ if (((_b = (_a = graphDataModel.nodes[edge.sourceNode]) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.isHidden) || ((_d = (_c = graphDataModel.nodes[edge.targetNode]) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.isHidden)) {
1785
+ edgeTemp = edge;
1786
+ edgeTemp.isHidden = true;
1787
+ // show all paths from hidden nodes across the real data
1788
+ getAllPathsFromNodeID(graphDataModel, graphDataModel.nodes[edge.sourceNode]).edges.forEach(function (edgeToShowTemp) {
1789
+ var edgeToShow = edgeToShowTemp;
1790
+ edgeToShow.isHidden = false;
1791
+ });
1792
+ }
1793
+ });
1774
1794
  return graphDataModel;
1775
1795
  };
1776
1796
  exports.createLinkGraphFromTable = createLinkGraphFromTable;
1777
- var Edges = /*#__PURE__*/function () {
1778
- function Edges() {
1779
- _classCallCheck(this, Edges);
1780
- this.store = {};
1797
+ /* getAllPathsFromNodeID gets paths from a node via the data and not the graph
1798
+
1799
+ Given
1800
+
1801
+ a, b, c
1802
+ a, , c
1803
+ , , d
1804
+
1805
+ From a graph context a connects to d ( a to '', '' to d)
1806
+ From a data ROW context a does not connect to d
1807
+
1808
+ getAllPathsFromNodeID(graph, a) would return nodes a,b,'',c and edges a-b, b-c, a-'', ''-c
1809
+ */
1810
+ var getAllPathsFromNodeID = function getAllPathsFromNodeID(graphDataModel, node) {
1811
+ var newEdges = [];
1812
+ var nodes = [];
1813
+ if (!node) {
1814
+ return {
1815
+ nodes: [],
1816
+ edges: []
1817
+ };
1781
1818
  }
1782
- _createClass(Edges, [{
1783
- key: "constuctor",
1784
- value: function constuctor() {
1785
- this.store = {};
1786
- }
1787
- }, {
1788
- key: "addEdge",
1789
- value: function addEdge(source, target) {
1790
- if (!this.store[source]) {
1791
- this.store[source] = {};
1819
+ graphDataModel.columns[node.data.fieldIndex].forEach(function (value, index) {
1820
+ if (value === node.data.value) {
1821
+ var row = graphDataModel.columns.map(function (column) {
1822
+ return column[index];
1823
+ });
1824
+ // remove blank spaces from the start of the array
1825
+ var offset = 0;
1826
+ while (row[0] === '') {
1827
+ row.shift();
1828
+ offset += 1;
1792
1829
  }
1793
- this.store[source][target] = true;
1794
- }
1795
- }, {
1796
- key: "getNeighbors",
1797
- value: function getNeighbors(source) {
1798
- if (!this.store[source]) {
1799
- return {};
1830
+ // remove blank spaces from the end of the array
1831
+ while (row[row.length - 1] === '') {
1832
+ row.pop();
1833
+ }
1834
+ for (var i = 0; i < row.length - 1; i += 1) {
1835
+ if (graphDataModel.fields[i + 1]) {
1836
+ var fieldIndexStart = offset + i; // this is field.index not i
1837
+ var fieldHashStart = exports.hashString(graphDataModel.fields[offset + i].value);
1838
+ var columnHashStart = exports.hashString(row[i]);
1839
+ var fieldIndexEnd = offset + i + 1;
1840
+ var fieldHashEnd = exports.hashString(graphDataModel.fields[offset + i + 1].value);
1841
+ var columnHashEnd = exports.hashString(row[i + 1]);
1842
+ newEdges.push({
1843
+ sourceNode: "".concat(fieldIndexStart, "-").concat(fieldHashStart, "-").concat(columnHashStart),
1844
+ targetNode: "".concat(fieldIndexEnd, "-").concat(fieldHashEnd, "-").concat(columnHashEnd)
1845
+ });
1846
+ }
1800
1847
  }
1801
- return this.store[source];
1802
1848
  }
1803
- }]);
1804
- return Edges;
1805
- }();
1806
- var getNodesToHighlight = function getNodesToHighlight(graph, sourceNodeID) {
1807
- var edges = {
1808
- reverse: new Edges(),
1809
- forward: new Edges()
1810
- };
1811
- graph.edges.forEach(function (edge) {
1812
- edges.forward.addEdge(edge.sourceNode, edge.targetNode);
1813
- edges.reverse.addEdge(edge.targetNode, edge.sourceNode);
1814
1849
  });
1815
- var vs = Object.assign(Object.assign({}, traverse(edges.reverse, sourceNodeID)), traverse(edges.forward, sourceNodeID));
1816
- var vertices = new Set(Object.keys(vs));
1817
- var result = {
1818
- vertices: [],
1819
- edges: []
1820
- };
1821
- result.vertices = _toConsumableArray(vertices);
1822
- result.edges = _toConsumableArray(vertices).flatMap(function (v) {
1823
- return Object.keys(edges.forward.getNeighbors(v)).filter(function (u) {
1824
- return vertices.has(u);
1825
- }).map(function (u) {
1826
- return "".concat(v, "-").concat(u);
1850
+ var edges = [];
1851
+ newEdges.forEach(function (newEdge) {
1852
+ graphDataModel.edges.forEach(function (liveEdge) {
1853
+ if (liveEdge.sourceNode === newEdge.sourceNode && liveEdge.targetNode === newEdge.targetNode) {
1854
+ edges.push(liveEdge);
1855
+ nodes.push(newEdge.sourceNode);
1856
+ nodes.push(newEdge.targetNode);
1857
+ }
1827
1858
  });
1828
1859
  });
1829
- return result;
1860
+ return {
1861
+ nodes: _toConsumableArray(new Set(nodes)),
1862
+ edges: edges
1863
+ };
1830
1864
  };
1831
- exports.getNodesToHighlight = getNodesToHighlight;
1832
- var traverse = function traverse(edges, sourceNodeID) {
1833
- var visited = {};
1834
- var currentNodesToTraverse = [sourceNodeID];
1835
- var _loop = function _loop() {
1836
- var nextNodesToTraverse = [];
1837
- currentNodesToTraverse.forEach(function (node) {
1838
- visited[node] = true;
1839
- var neighbors = edges.getNeighbors(node);
1840
- Object.keys(neighbors).forEach(function (n) {
1841
- return nextNodesToTraverse.push(n);
1842
- });
1843
- });
1844
- currentNodesToTraverse = nextNodesToTraverse;
1865
+ var getNodesToHighlight = function getNodesToHighlight(graph, sourceNodeID) {
1866
+ var paths = getAllPathsFromNodeID(graph, graph.nodes[sourceNodeID]);
1867
+ var newEdges = paths.edges.map(function (edge) {
1868
+ return "".concat(edge.sourceNode, "-").concat(edge.targetNode);
1869
+ });
1870
+ return {
1871
+ nodes: paths.nodes,
1872
+ edges: newEdges
1845
1873
  };
1846
- while (currentNodesToTraverse.length) {
1847
- _loop();
1848
- }
1849
- return visited;
1850
1874
  };
1875
+ exports.getNodesToHighlight = getNodesToHighlight;
1851
1876
  // TODO: write tests once all sorting options are supported
1852
1877
  var sortGraphColumn = function sortGraphColumn(graph, field, sortKey, nodeHeight, nodeSpacingY) {
1853
1878
  var nodesToSort = Object.values(graph.nodes).filter(function (node) {
@@ -1882,12 +1907,13 @@ var getSecondaryColumnByField = function getSecondaryColumnByField(field, metada
1882
1907
  exports.getSecondaryColumnByField = getSecondaryColumnByField;
1883
1908
 
1884
1909
  /***/ }),
1885
- /* 129 */
1910
+ /* 128 */
1886
1911
  /***/ (function(module, exports) {
1887
1912
 
1888
1913
  module.exports = require("@splunk/react-icons/enterprise/Clear");
1889
1914
 
1890
1915
  /***/ }),
1916
+ /* 129 */,
1891
1917
  /* 130 */,
1892
1918
  /* 131 */,
1893
1919
  /* 132 */,
@@ -2178,7 +2204,7 @@ var T = __webpack_require__(1);
2178
2204
  var styled_components_1 = __webpack_require__(4);
2179
2205
  var lodash_1 = __webpack_require__(3);
2180
2206
  var FixedSizeContainer_1 = __webpack_require__(13);
2181
- var PureLinkGraphUtils_1 = __webpack_require__(128);
2207
+ var PureLinkGraphUtils_1 = __webpack_require__(127);
2182
2208
  var Graph_1 = __webpack_require__(222);
2183
2209
  var Field_1 = __webpack_require__(399);
2184
2210
  var FieldStyles_1 = __webpack_require__(402);
@@ -2350,9 +2376,9 @@ exports.default = FixedSizeContainer_1.default(exports.PureLinkGraph);
2350
2376
  var _toConsumableArray = __webpack_require__(7);
2351
2377
  var _classCallCheck = __webpack_require__(11);
2352
2378
  var _createClass = __webpack_require__(22);
2353
- var _inherits = __webpack_require__(110);
2354
- var _possibleConstructorReturn = __webpack_require__(111);
2355
- var _getPrototypeOf = __webpack_require__(112);
2379
+ var _inherits = __webpack_require__(109);
2380
+ var _possibleConstructorReturn = __webpack_require__(110);
2381
+ var _getPrototypeOf = __webpack_require__(111);
2356
2382
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
2357
2383
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
2358
2384
  Object.defineProperty(exports, "__esModule", {
@@ -2363,7 +2389,7 @@ var lodash_1 = __webpack_require__(3);
2363
2389
  var Edges_1 = __webpack_require__(223);
2364
2390
  var Nodes_1 = __webpack_require__(224);
2365
2391
  var GraphStyles_1 = __webpack_require__(153);
2366
- var PureLinkGraphUtils_1 = __webpack_require__(128);
2392
+ var PureLinkGraphUtils_1 = __webpack_require__(127);
2367
2393
  var Graph = /*#__PURE__*/function (_React$Component) {
2368
2394
  _inherits(Graph, _React$Component);
2369
2395
  var _super = _createSuper(Graph);
@@ -2415,13 +2441,13 @@ var Graph = /*#__PURE__*/function (_React$Component) {
2415
2441
  var _this3 = this;
2416
2442
  this.unhighlightAllEdges();
2417
2443
  var _PureLinkGraphUtils_ = PureLinkGraphUtils_1.getNodesToHighlight(this.props.graphDataModel, nodeID),
2418
- vertices = _PureLinkGraphUtils_.vertices,
2444
+ nodes = _PureLinkGraphUtils_.nodes,
2419
2445
  edges = _PureLinkGraphUtils_.edges;
2420
2446
  edges.forEach(function (e) {
2421
2447
  var element = _this3.viewport.querySelector("[data-test=\"edge-".concat(e, "\"]"));
2422
2448
  element.classList.add('hovering');
2423
2449
  });
2424
- vertices.forEach(function (uuid) {
2450
+ nodes.forEach(function (uuid) {
2425
2451
  var element = _this3.viewport.querySelector("[data-test=\"node-".concat(uuid, "\"]"));
2426
2452
  element.classList.add('hovering');
2427
2453
  });
@@ -2475,16 +2501,16 @@ var Graph = /*#__PURE__*/function (_React$Component) {
2475
2501
  value: value,
2476
2502
  state: selectedOption
2477
2503
  };
2478
- var _PureLinkGraphUtils_2 = PureLinkGraphUtils_1.getNodesToHighlight(this.props.graphDataModel, key),
2479
- vertices = _PureLinkGraphUtils_2.vertices;
2480
- vertices.map(function (k) {
2504
+ PureLinkGraphUtils_1.getNodesToHighlight(this.props.graphDataModel, key).nodes.map(function (k) {
2481
2505
  return nodes[k];
2482
2506
  }).forEach(function (node) {
2483
- var row = "row.".concat(node.data.field, ".value");
2484
- if (!payload[row]) {
2485
- payload[row] = [];
2507
+ if (node.data.isHidden !== true) {
2508
+ var row = "row.".concat(node.data.field, ".value");
2509
+ if (!payload[row]) {
2510
+ payload[row] = [];
2511
+ }
2512
+ payload[row].push(node.data.value);
2486
2513
  }
2487
- payload[row].push(node.data.value);
2488
2514
  });
2489
2515
  onNodeClick({
2490
2516
  payload: payload
@@ -2587,7 +2613,7 @@ var Graph = /*#__PURE__*/function (_React$Component) {
2587
2613
  };
2588
2614
  middle.currentX = start.currentX + start.currentW + (end.currentX - (start.currentX + start.currentW)) / 2;
2589
2615
  middle.currentY = start.currentY + start.currentH / 2 + (end.currentY - start.currentY - start.currentH / 2) / 2;
2590
- var svgData = "\n M".concat(start.currentX + start.currentW, ",").concat(start.currentY + start.currentH / 2, "\n L").concat(start.currentX + start.currentW, ",").concat(start.currentY + start.currentH / 2, "\n C").concat(middle.currentX, ",").concat(start.currentY + start.currentH / 2, "\n ").concat(middle.currentX, ",").concat(end.currentY + end.currentH / 2, "\n ").concat(end.currentX, ",").concat(end.currentY + end.currentH / 2, "\n L").concat(end.currentX, ",").concat(end.currentY + end.currentH / 2);
2616
+ var svgData = "\n M".concat(start.currentX + start.currentW, ",").concat(start.currentY + start.currentH / 2, "\n L").concat(start.currentX + start.currentW, ",").concat(start.currentY + start.currentH / 2, "\n C").concat(middle.currentX, ",").concat(start.currentY + start.currentH / 2, "\n ").concat(middle.currentX, ",").concat(end.currentY + end.currentH / 2, "\n ").concat(end.currentX, ",").concat(end.currentY + end.currentH / 2, "\n L").concat(end.currentX, ",").concat(end.currentY + end.currentH / 2, "\n L").concat(end.currentX + wIn, ",").concat(end.currentY + end.currentH / 2);
2591
2617
  edgeElement.setAttribute('d', svgData);
2592
2618
  }
2593
2619
  }
@@ -2622,7 +2648,10 @@ var Graph = /*#__PURE__*/function (_React$Component) {
2622
2648
  ref: function ref(c) {
2623
2649
  _this8.viewport = c;
2624
2650
  }
2625
- }, React.createElement(Nodes_1.default, {
2651
+ }, React.createElement(Edges_1.default, {
2652
+ edges: newEdges,
2653
+ linkWidth: linkWidth
2654
+ }), React.createElement(Nodes_1.default, {
2626
2655
  nodes: nodes,
2627
2656
  onNodeClick: function onNodeClick(k) {
2628
2657
  return _this8.handleMouseClick(k);
@@ -2637,9 +2666,6 @@ var Graph = /*#__PURE__*/function (_React$Component) {
2637
2666
  showValueCounts: showValueCounts,
2638
2667
  metadataFields: metadataFields,
2639
2668
  metadataColumns: metadataColumns
2640
- }), React.createElement(Edges_1.default, {
2641
- edges: newEdges,
2642
- linkWidth: linkWidth
2643
2669
  }));
2644
2670
  }
2645
2671
  }], [{
@@ -2707,6 +2733,9 @@ var Edges = function Edges(props) {
2707
2733
  }, edges.map(function (edge) {
2708
2734
  key = "edge-".concat(edge.sourceNode, "-").concat(edge.targetNode);
2709
2735
  return [React.createElement(GraphStyles_1.StyledEdgesPath, {
2736
+ style: {
2737
+ visibility: edge.isHidden ? 'hidden' : 'visible'
2738
+ },
2710
2739
  className: "edge",
2711
2740
  key: key,
2712
2741
  "data-test": key,
@@ -2740,6 +2769,9 @@ var Nodes = function Nodes(props) {
2740
2769
  "data-test": "node-".concat(key),
2741
2770
  "data-test-y-index": props.nodes[key].yIndex,
2742
2771
  key: key,
2772
+ style: {
2773
+ visibility: props.nodes[key].data.isHidden ? 'hidden' : 'visible'
2774
+ },
2743
2775
  onClick: function onClick() {
2744
2776
  return props.onNodeClick(key);
2745
2777
  },
@@ -2774,7 +2806,7 @@ Object.defineProperty(exports, "__esModule", {
2774
2806
  exports.NodeES = exports.Node = void 0;
2775
2807
  var React = __webpack_require__(0);
2776
2808
  var Paragraph_1 = __webpack_require__(104);
2777
- var PureLinkGraphUtils_1 = __webpack_require__(128);
2809
+ var PureLinkGraphUtils_1 = __webpack_require__(127);
2778
2810
  var Node = function Node(props) {
2779
2811
  var data = props.data,
2780
2812
  showValueCounts = props.showValueCounts;
@@ -5404,7 +5436,7 @@ function Cancel(props) {
5404
5436
  /***/ 7:
5405
5437
  /***/ (function(module, exports) {
5406
5438
 
5407
- module.exports = __webpack_require__(129);
5439
+ module.exports = __webpack_require__(128);
5408
5440
 
5409
5441
  /***/ })
5410
5442
 
@@ -8893,7 +8925,7 @@ function Close(props) {
8893
8925
  /***/ 7:
8894
8926
  /***/ (function(module, exports) {
8895
8927
 
8896
- module.exports = __webpack_require__(129);
8928
+ module.exports = __webpack_require__(128);
8897
8929
 
8898
8930
  /***/ })
8899
8931
 
@@ -20206,7 +20238,7 @@ module.exports = __webpack_require__(2);
20206
20238
  /***/ 7:
20207
20239
  /***/ (function(module, exports) {
20208
20240
 
20209
- module.exports = __webpack_require__(129);
20241
+ module.exports = __webpack_require__(128);
20210
20242
 
20211
20243
  /***/ })
20212
20244
 
@@ -27141,8 +27173,8 @@ Object.defineProperty(exports, "__esModule", {
27141
27173
  var React = __webpack_require__(0);
27142
27174
  var Dropdown_1 = __webpack_require__(400);
27143
27175
  var Paragraph_1 = __webpack_require__(104);
27144
- var Button_1 = __webpack_require__(122);
27145
- var Menu_1 = __webpack_require__(118);
27176
+ var Button_1 = __webpack_require__(121);
27177
+ var Menu_1 = __webpack_require__(117);
27146
27178
  var Chip_1 = __webpack_require__(401);
27147
27179
  var FeatureFlagContext_1 = __webpack_require__(20);
27148
27180
  var lodash_1 = __webpack_require__(3);
@@ -27577,7 +27609,7 @@ var config = {
27577
27609
  /**
27578
27610
  * viz name
27579
27611
  */
27580
- name: 'Link Graph',
27612
+ name: 'Link graph',
27581
27613
  category: VizCategory_1.VizCategory.FLOW,
27582
27614
  status: 'preview',
27583
27615
  /**