@carbon/charts 0.50.7 → 0.51.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 (166) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/build/demo/data/circle-pack.d.ts +0 -6
  3. package/build/src/charts/alluvial.d.ts +2 -0
  4. package/build/src/charts/bullet.d.ts +2 -0
  5. package/build/src/charts/radar.d.ts +3 -1
  6. package/build/src/charts/tree.d.ts +2 -0
  7. package/build/src/charts/treemap.d.ts +2 -0
  8. package/build/src/charts/wordcloud.d.ts +2 -0
  9. package/build/src/components/axes/toolbar.d.ts +1 -0
  10. package/build/src/components/essentials/legend.d.ts +1 -1
  11. package/build/src/components/graphs/bullet.d.ts +0 -1
  12. package/build/src/model/alluvial.d.ts +8 -0
  13. package/build/src/model/boxplot.d.ts +1 -0
  14. package/build/src/model/bullet.d.ts +14 -0
  15. package/build/src/model/cartesian-charts.d.ts +0 -1
  16. package/build/src/model/circle-pack.d.ts +10 -0
  17. package/build/src/model/gauge.d.ts +4 -1
  18. package/build/src/model/meter.d.ts +1 -0
  19. package/build/src/model/model.d.ts +2 -0
  20. package/build/src/model/pie.d.ts +1 -0
  21. package/build/src/model/radar.d.ts +7 -0
  22. package/build/src/model/tree.d.ts +14 -0
  23. package/build/src/model/treemap.d.ts +8 -0
  24. package/build/src/model/wordcloud.d.ts +7 -0
  25. package/build/src/services/essentials/dom-utils.d.ts +3 -0
  26. package/bundle.js +1 -1
  27. package/chart.js +42 -20
  28. package/chart.js.map +1 -1
  29. package/charts/alluvial.d.ts +2 -0
  30. package/charts/alluvial.js +2 -0
  31. package/charts/alluvial.js.map +1 -1
  32. package/charts/bullet.d.ts +2 -0
  33. package/charts/bullet.js +2 -0
  34. package/charts/bullet.js.map +1 -1
  35. package/charts/radar.d.ts +3 -1
  36. package/charts/radar.js +3 -7
  37. package/charts/radar.js.map +1 -1
  38. package/charts/tree.d.ts +2 -0
  39. package/charts/tree.js +2 -0
  40. package/charts/tree.js.map +1 -1
  41. package/charts/treemap.d.ts +2 -0
  42. package/charts/treemap.js +2 -0
  43. package/charts/treemap.js.map +1 -1
  44. package/charts/wordcloud.d.ts +2 -0
  45. package/charts/wordcloud.js +3 -0
  46. package/charts/wordcloud.js.map +1 -1
  47. package/components/axes/ruler-binned.js +1 -1
  48. package/components/axes/ruler-binned.js.map +1 -1
  49. package/components/axes/toolbar.d.ts +1 -0
  50. package/components/axes/toolbar.js +74 -48
  51. package/components/axes/toolbar.js.map +1 -1
  52. package/components/axes/zoom-bar.js +12 -3
  53. package/components/axes/zoom-bar.js.map +1 -1
  54. package/components/component.js +2 -6
  55. package/components/component.js.map +1 -1
  56. package/components/essentials/legend.d.ts +1 -1
  57. package/components/essentials/legend.js +20 -8
  58. package/components/essentials/legend.js.map +1 -1
  59. package/components/essentials/modal.js +3 -3
  60. package/components/essentials/modal.js.map +1 -1
  61. package/components/essentials/title.js +2 -2
  62. package/components/essentials/title.js.map +1 -1
  63. package/components/essentials/tooltip.js +2 -2
  64. package/components/essentials/tooltip.js.map +1 -1
  65. package/components/graphs/alluvial.js +29 -12
  66. package/components/graphs/alluvial.js.map +1 -1
  67. package/components/graphs/area-stacked.js +1 -0
  68. package/components/graphs/area-stacked.js.map +1 -1
  69. package/components/graphs/area.js +2 -4
  70. package/components/graphs/area.js.map +1 -1
  71. package/components/graphs/boxplot.js +1 -0
  72. package/components/graphs/boxplot.js.map +1 -1
  73. package/components/graphs/bubble.js +4 -0
  74. package/components/graphs/bubble.js.map +1 -1
  75. package/components/graphs/bullet.d.ts +0 -1
  76. package/components/graphs/bullet.js +1 -12
  77. package/components/graphs/bullet.js.map +1 -1
  78. package/components/graphs/gauge.js +2 -4
  79. package/components/graphs/gauge.js.map +1 -1
  80. package/components/graphs/histogram.js +3 -1
  81. package/components/graphs/histogram.js.map +1 -1
  82. package/components/graphs/pie.js +1 -1
  83. package/components/graphs/pie.js.map +1 -1
  84. package/components/graphs/radar.js +8 -7
  85. package/components/graphs/radar.js.map +1 -1
  86. package/components/graphs/skeleton-lines.js +8 -3
  87. package/components/graphs/skeleton-lines.js.map +1 -1
  88. package/components/graphs/skeleton.js +18 -5
  89. package/components/graphs/skeleton.js.map +1 -1
  90. package/demo/data/bundle.js +1 -1
  91. package/demo/data/circle-pack.d.ts +0 -6
  92. package/demo/data/circle-pack.js +0 -6
  93. package/demo/data/circle-pack.js.map +1 -1
  94. package/demo/styles.css +85 -93
  95. package/demo/styles.css.map +1 -1
  96. package/demo/styles.min.css +1 -1
  97. package/demo/styles.min.css.map +1 -1
  98. package/demo/tsconfig.tsbuildinfo +3 -3
  99. package/demo/utils.js +2 -2
  100. package/demo/utils.js.map +1 -1
  101. package/model/alluvial.d.ts +8 -0
  102. package/model/alluvial.js +47 -0
  103. package/model/alluvial.js.map +1 -0
  104. package/model/boxplot.d.ts +1 -0
  105. package/model/boxplot.js +54 -0
  106. package/model/boxplot.js.map +1 -1
  107. package/model/bullet.d.ts +14 -0
  108. package/model/bullet.js +74 -0
  109. package/model/bullet.js.map +1 -0
  110. package/model/cartesian-charts.d.ts +0 -1
  111. package/model/cartesian-charts.js +0 -11
  112. package/model/cartesian-charts.js.map +1 -1
  113. package/model/circle-pack.d.ts +10 -0
  114. package/model/circle-pack.js +51 -0
  115. package/model/circle-pack.js.map +1 -1
  116. package/model/gauge.d.ts +4 -1
  117. package/model/gauge.js +24 -1
  118. package/model/gauge.js.map +1 -1
  119. package/model/meter.d.ts +1 -0
  120. package/model/meter.js +40 -0
  121. package/model/meter.js.map +1 -1
  122. package/model/model.d.ts +2 -0
  123. package/model/model.js +14 -0
  124. package/model/model.js.map +1 -1
  125. package/model/pie.d.ts +1 -0
  126. package/model/pie.js +21 -0
  127. package/model/pie.js.map +1 -1
  128. package/model/radar.d.ts +7 -0
  129. package/model/radar.js +52 -0
  130. package/model/radar.js.map +1 -0
  131. package/model/tree.d.ts +14 -0
  132. package/model/tree.js +56 -0
  133. package/model/tree.js.map +1 -0
  134. package/model/treemap.d.ts +8 -0
  135. package/model/treemap.js +37 -0
  136. package/model/treemap.js.map +1 -0
  137. package/model/wordcloud.d.ts +7 -0
  138. package/model/wordcloud.js +47 -0
  139. package/model/wordcloud.js.map +1 -0
  140. package/package.json +1 -1
  141. package/services/essentials/dom-utils.d.ts +3 -0
  142. package/services/essentials/dom-utils.js +9 -1
  143. package/services/essentials/dom-utils.js.map +1 -1
  144. package/styles/components/_legend.scss +5 -1
  145. package/styles/components/_skeleton-lines.scss +1 -2
  146. package/styles/components/_skeleton.scss +2 -7
  147. package/styles/components/_toolbar.scss +1 -1
  148. package/styles/components/_tooltip.scss +8 -2
  149. package/styles/components/_zoom-bar.scss +0 -12
  150. package/styles-g10.css +21 -23
  151. package/styles-g10.css.map +1 -1
  152. package/styles-g10.min.css +1 -1
  153. package/styles-g10.min.css.map +1 -1
  154. package/styles-g100.css +21 -23
  155. package/styles-g100.css.map +1 -1
  156. package/styles-g100.min.css +1 -1
  157. package/styles-g100.min.css.map +1 -1
  158. package/styles-g90.css +21 -23
  159. package/styles-g90.css.map +1 -1
  160. package/styles-g90.min.css +1 -1
  161. package/styles-g90.min.css.map +1 -1
  162. package/styles.css +21 -23
  163. package/styles.css.map +1 -1
  164. package/styles.min.css +1 -1
  165. package/styles.min.css.map +1 -1
  166. package/tsconfig.tsbuildinfo +162 -53
@@ -1 +1 @@
1
- {"version":3,"file":"title.js","sourceRoot":"","sources":["title.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Events, RenderTypes } from './../../interfaces';\nimport { Tools } from '../../tools';\n\nexport class Title extends Component {\n\ttype = 'title';\n\trenderType = RenderTypes.HTML;\n\n\trender() {\n\t\tconst svg = this.getComponentContainer();\n\t\tconst title = Tools.getProperty(this.getOptions(), 'title');\n\n\t\tconst text = svg.selectAll('p.title').data([title]);\n\n\t\ttext.enter()\n\t\t\t.append('p')\n\t\t\t.classed('title', true)\n\t\t\t.merge(text)\n\t\t\t.attr('x', 0)\n\t\t\t.attr('y', '1em')\n\t\t\t.html((d) => d);\n\n\t\t// check if title needs truncation (and tooltip support)\n\t\tif (text.node() && text.node().offsetWidth < text.node().scrollWidth) {\n\t\t\t// add events for displaying the tooltip with the title\n\t\t\tconst self = this;\n\t\t\ttext.on('mouseover', function (event) {\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement: text,\n\t\t\t\t\tcontent: text.text(),\n\t\t\t\t});\n\t\t\t})\n\t\t\t\t.on('mousemove', function (event) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.on('mouseout', function () {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE);\n\t\t\t\t});\n\t\t}\n\n\t\ttext.exit().remove();\n\t}\n\n\t/**\n\t * Truncates title creating ellipses and attaching tooltip for exposing full title.\n\t */\n\ttruncateTitle(title, maxWidth) {\n\t\t// sanity check to prevent stack overflow on binary search\n\t\tif (maxWidth <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst untruncatedTitle = title.text();\n\t\t// check if the title is too big for the containing svg\n\t\tif (title.node().getComputedTextLength() > maxWidth) {\n\t\t\t// append the ellipses to their own tspan to calculate the text length\n\t\t\ttitle.append('tspan').text('...');\n\n\t\t\t// get the bounding width including the elipses '...'\n\t\t\tconst tspanLength = DOMUtils.appendOrSelect(title, 'tspan')\n\t\t\t\t.node()\n\t\t\t\t.getComputedTextLength();\n\n\t\t\t// with elipses\n\t\t\tconst titleString = title.text();\n\n\t\t\t// get the index for creating the max length substring that fit within the svg\n\t\t\t// use one less than the index to avoid crowding (the elipsis)\n\t\t\tconst substringIndex = this.getSubstringIndex(\n\t\t\t\ttitle.node(),\n\t\t\t\t0,\n\t\t\t\ttitleString.length - 1,\n\t\t\t\tmaxWidth - tspanLength\n\t\t\t);\n\n\t\t\t// use the substring as the title\n\t\t\ttitle\n\t\t\t\t.html(titleString.substring(0, substringIndex - 1))\n\t\t\t\t.append('tspan')\n\t\t\t\t.text('...');\n\n\t\t\t// add events for displaying the tooltip with the title\n\t\t\tconst self = this;\n\t\t\ttitle\n\t\t\t\t.on('mouseover', function (event) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\thoveredElement: title,\n\t\t\t\t\t\tcontent: untruncatedTitle,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.on('mousemove', function (event) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.on('mouseout', function () {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE);\n\t\t\t\t});\n\t\t}\n\t}\n\n\t// computes the maximum space a title can take\n\tprotected getMaxTitleWidth() {\n\t\treturn DOMUtils.getSVGElementSize(this.parent.node(), {\n\t\t\tuseAttrs: true,\n\t\t}).width;\n\t}\n\n\t/**\n\t * Returns the index for a maximum length substring that is less than the width parameter.\n\t * @param title the title node used for getting the text lengths of substrings\n\t * @param start the start index for the binary search\n\t * @param end the end index for the binary search\n\t * @param width the width of the svg container that holds the title\n\t */\n\tprotected getSubstringIndex(title, start, end, width) {\n\t\tconst mid = Math.floor((end + start) / 2);\n\t\tif (title.getSubStringLength(0, mid) > width) {\n\t\t\treturn this.getSubstringIndex(title, start, mid, width);\n\t\t} else if (title.getSubStringLength(0, mid) < width) {\n\t\t\tif (title.getSubStringLength(0, mid + 1) > width) {\n\t\t\t\treturn mid;\n\t\t\t}\n\t\t\treturn this.getSubstringIndex(title, mid, end, width);\n\t\t} else {\n\t\t\treturn mid;\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"title.js","sourceRoot":"","sources":["title.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Events, RenderTypes } from './../../interfaces';\nimport { Tools } from '../../tools';\n\nexport class Title extends Component {\n\ttype = 'title';\n\trenderType = RenderTypes.HTML;\n\n\trender() {\n\t\tconst svg = this.getComponentContainer();\n\t\tconst title = Tools.getProperty(this.getOptions(), 'title');\n\n\t\tconst text = svg.selectAll('p.title').data([title]);\n\n\t\ttext.enter()\n\t\t\t.append('p')\n\t\t\t.classed('title', true)\n\t\t\t.attr('role', 'heading')\n\t\t\t.attr('aria-level', 2)\n\t\t\t.merge(text)\n\t\t\t.html((d) => d);\n\n\t\t// check if title needs truncation (and tooltip support)\n\t\tif (text.node() && text.node().offsetWidth < text.node().scrollWidth) {\n\t\t\t// add events for displaying the tooltip with the title\n\t\t\tconst self = this;\n\t\t\ttext.on('mouseover', function (event) {\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement: text,\n\t\t\t\t\tcontent: text.text(),\n\t\t\t\t});\n\t\t\t})\n\t\t\t\t.on('mousemove', function (event) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.on('mouseout', function () {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE);\n\t\t\t\t});\n\t\t}\n\n\t\ttext.exit().remove();\n\t}\n\n\t/**\n\t * Truncates title creating ellipses and attaching tooltip for exposing full title.\n\t */\n\ttruncateTitle(title, maxWidth) {\n\t\t// sanity check to prevent stack overflow on binary search\n\t\tif (maxWidth <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst untruncatedTitle = title.text();\n\t\t// check if the title is too big for the containing svg\n\t\tif (title.node().getComputedTextLength() > maxWidth) {\n\t\t\t// append the ellipses to their own tspan to calculate the text length\n\t\t\ttitle.append('tspan').text('...');\n\n\t\t\t// get the bounding width including the elipses '...'\n\t\t\tconst tspanLength = DOMUtils.appendOrSelect(title, 'tspan')\n\t\t\t\t.node()\n\t\t\t\t.getComputedTextLength();\n\n\t\t\t// with elipses\n\t\t\tconst titleString = title.text();\n\n\t\t\t// get the index for creating the max length substring that fit within the svg\n\t\t\t// use one less than the index to avoid crowding (the elipsis)\n\t\t\tconst substringIndex = this.getSubstringIndex(\n\t\t\t\ttitle.node(),\n\t\t\t\t0,\n\t\t\t\ttitleString.length - 1,\n\t\t\t\tmaxWidth - tspanLength\n\t\t\t);\n\n\t\t\t// use the substring as the title\n\t\t\ttitle\n\t\t\t\t.html(titleString.substring(0, substringIndex - 1))\n\t\t\t\t.append('tspan')\n\t\t\t\t.text('...');\n\n\t\t\t// add events for displaying the tooltip with the title\n\t\t\tconst self = this;\n\t\t\ttitle\n\t\t\t\t.on('mouseover', function (event) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\thoveredElement: title,\n\t\t\t\t\t\tcontent: untruncatedTitle,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.on('mousemove', function (event) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.on('mouseout', function () {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE);\n\t\t\t\t});\n\t\t}\n\t}\n\n\t// computes the maximum space a title can take\n\tprotected getMaxTitleWidth() {\n\t\treturn DOMUtils.getSVGElementSize(this.parent.node(), {\n\t\t\tuseAttrs: true,\n\t\t}).width;\n\t}\n\n\t/**\n\t * Returns the index for a maximum length substring that is less than the width parameter.\n\t * @param title the title node used for getting the text lengths of substrings\n\t * @param start the start index for the binary search\n\t * @param end the end index for the binary search\n\t * @param width the width of the svg container that holds the title\n\t */\n\tprotected getSubstringIndex(title, start, end, width) {\n\t\tconst mid = Math.floor((end + start) / 2);\n\t\tif (title.getSubStringLength(0, mid) > width) {\n\t\t\treturn this.getSubstringIndex(title, start, mid, width);\n\t\t} else if (title.getSubStringLength(0, mid) < width) {\n\t\t\tif (title.getSubStringLength(0, mid + 1) > width) {\n\t\t\t\treturn mid;\n\t\t\t}\n\t\t\treturn this.getSubstringIndex(title, mid, end, width);\n\t\t} else {\n\t\t\treturn mid;\n\t\t}\n\t}\n}\n"]}
@@ -134,7 +134,7 @@ var Tooltip = /** @class */ (function (_super) {
134
134
  var items = this.getItems(e);
135
135
  var formattedItems = this.formatItems(items);
136
136
  defaultHTML =
137
- "<ul class='multi-tooltip'>" +
137
+ "<ul class=\"multi-tooltip\">" +
138
138
  formattedItems
139
139
  .map(function (item) {
140
140
  return "<li>\n\t\t\t\t\t\t\t<div class=\"datapoint-tooltip " + (item.bold ? 'bold' : '') + "\">\n\t\t\t\t\t\t\t\t" + (item.class ? "<div class=\"tooltip-color " + item.class + "\"></div>" : '') + "\n\t\t\t\t\t\t\t\t" + (item.color
@@ -170,7 +170,7 @@ var Tooltip = /** @class */ (function (_super) {
170
170
  var holder = select(this.services.domUtils.getHolder());
171
171
  var chartprefix = Tools.getProperty(options, 'style', 'prefix');
172
172
  this.tooltip = DOMUtils.appendOrSelect(holder, "div." + settings.prefix + "--" + chartprefix + "--tooltip");
173
- this.tooltip.style('max-width', null);
173
+ this.tooltip.style('max-width', null).attr('role', 'tooltip');
174
174
  if (!this.isEventListenerAdded) {
175
175
  this.addTooltipEventListener();
176
176
  this.isEventListenerAdded = true;
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["tooltip.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model/model';\nimport { Events, RenderTypes, TruncationTypes } from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\n// Carbon position service\nimport Position, { PLACEMENTS } from '@carbon/utils-position';\n\n// import the settings for the css prefix\nimport settings from 'carbon-components/es/globals/js/settings';\n\n// D3 Imports\n// @ts-ignore\n// ts-ignore is needed because `@types/d3`\n// is missing the `pointer` function\nimport { select, pointer } from 'd3-selection';\n\nimport { format } from 'date-fns';\n\nexport class Tooltip extends Component {\n\ttype = 'tooltip';\n\trenderType = RenderTypes.HTML;\n\n\t// flag for checking whether tooltip event listener is added or not\n\tisEventListenerAdded = false;\n\ttooltip: any;\n\tpositionService = new Position();\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.init();\n\t}\n\n\thandleShowTooltip = (e) => {\n\t\tconst data = e.detail.data || e.detail.items;\n\n\t\tconst defaultHTML = this.getTooltipHTML(e);\n\n\t\tconst tooltipTextContainer = DOMUtils.appendOrSelect(\n\t\t\tthis.tooltip,\n\t\t\t'div.content-box'\n\t\t);\n\n\t\t// if there is a provided tooltip HTML function call it\n\t\tif (Tools.getProperty(this.getOptions(), 'tooltip', 'customHTML')) {\n\t\t\tif (e.detail.content) {\n\t\t\t\tconst labelHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t\t\ttooltipTextContainer.html(labelHTML);\n\t\t\t} else {\n\t\t\t\ttooltipTextContainer.html(\n\t\t\t\t\tthis.model\n\t\t\t\t\t\t.getOptions()\n\t\t\t\t\t\t.tooltip.customHTML(data, defaultHTML)\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\t// Use default tooltip\n\t\t\ttooltipTextContainer.html(defaultHTML);\n\t\t}\n\n\t\t// Position the tooltip\n\t\tthis.positionTooltip(e);\n\n\t\t// Fade in\n\t\tthis.tooltip.classed('hidden', false).attr('aria-hidden', false);\n\t};\n\n\thandleHideTooltip = () => {\n\t\tthis.tooltip.classed('hidden', true).attr('aria-hidden', true);\n\t};\n\n\taddTooltipEventListener() {\n\t\t// listen to move-tooltip Custom Events to move the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.MOVE,\n\t\t\t(e: CustomEvent) => {\n\t\t\t\tif (this.tooltip.classed('hidden') === false) {\n\t\t\t\t\tthis.positionTooltip(e);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t// listen to show-tooltip Custom Events to render the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// listen to hide-tooltip Custom Events to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// listen to chart-mouseout event to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tremoveTooltipEventListener() {\n\t\t// remove move-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(Events.Tooltip.MOVE, null);\n\n\t\t// remove show-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// remove hide-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// remove the listener on chart-mouseout\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tformatItems(items) {\n\t\tconst options = this.getOptions();\n\n\t\t// get user provided custom values for truncation\n\t\tconst truncationType = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'type'\n\t\t);\n\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\n\t\tconst truncationNumCharacter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'numCharacter'\n\t\t);\n\n\t\t// truncate the label if it's too long\n\t\t// only applies to discrete type\n\t\tif (truncationType !== TruncationTypes.NONE) {\n\t\t\treturn items.map((item) => {\n\t\t\t\t// get width of the label icon if it exists\n\t\t\t\tconst labelIconSize = item.labelIcon ? 12 : 0;\n\n\t\t\t\titem.value = item.value\n\t\t\t\t\t? this.valueFormatter(item.value, item.label)\n\t\t\t\t\t: item.value;\n\t\t\t\tif (\n\t\t\t\t\titem.label &&\n\t\t\t\t\titem.label.length + labelIconSize > truncationThreshold\n\t\t\t\t) {\n\t\t\t\t\titem.label = Tools.truncateLabel(\n\t\t\t\t\t\titem.label,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (item.value && item.value.length > truncationThreshold) {\n\t\t\t\t\titem.value = Tools.truncateLabel(\n\t\t\t\t\t\titem.value,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn item;\n\t\t\t});\n\t\t}\n\n\t\treturn items;\n\t}\n\n\tgetTooltipHTML(e: CustomEvent) {\n\t\tlet defaultHTML;\n\t\tif (e.detail.content) {\n\t\t\tdefaultHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t} else {\n\t\t\tconst items = this.getItems(e);\n\t\t\tconst formattedItems = this.formatItems(items);\n\n\t\t\tdefaultHTML =\n\t\t\t\t`<ul class='multi-tooltip'>` +\n\t\t\t\tformattedItems\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(item) =>\n\t\t\t\t\t\t\t`<li>\n\t\t\t\t\t\t\t<div class=\"datapoint-tooltip ${item.bold ? 'bold' : ''}\">\n\t\t\t\t\t\t\t\t${item.class ? `<div class=\"tooltip-color ${item.class}\"></div>` : ''}\n\t\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\t\titem.color\n\t\t\t\t\t\t\t\t\t\t? '<div style=\"background-color: ' +\n\t\t\t\t\t\t\t\t\t\t item.color +\n\t\t\t\t\t\t\t\t\t\t '\" class=\"tooltip-color\"></div>'\n\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t<div class=\"label\">\n\t\t\t\t\t\t\t\t<p>${item.label || ''}</p>\n\t\t\t\t\t\t\t\t${item.labelIcon ? `<span class=\"label-icon\"/>${item.labelIcon}</span>` : ''}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\t\titem.value === undefined ||\n\t\t\t\t\t\t\t\t\titem.value === null\n\t\t\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t\t\t: `<p class=\"value\"/>${item.value}</p>`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</li>`\n\t\t\t\t\t)\n\t\t\t\t\t.join('') +\n\t\t\t\t`</ul>`;\n\t\t}\n\n\t\treturn defaultHTML;\n\t}\n\n\tvalueFormatter(value: any, label: string) {\n\t\tconst options = this.getOptions();\n\t\tconst valueFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'valueFormatter'\n\t\t);\n\n\t\tif (valueFormatter) {\n\t\t\treturn valueFormatter(value, label);\n\t\t}\n\n\t\tif (typeof value.getTime === 'function') {\n\t\t\treturn format(value, 'MMM d, yyyy');\n\t\t}\n\n\t\treturn value.toLocaleString();\n\t}\n\n\trender() {\n\t\tconst options = this.getOptions();\n\t\tconst isTooltipEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'enabled'\n\t\t);\n\t\tif (isTooltipEnabled) {\n\t\t\t// Grab the tooltip element\n\t\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\t\t\tthis.tooltip = DOMUtils.appendOrSelect(\n\t\t\t\tholder,\n\t\t\t\t`div.${settings.prefix}--${chartprefix}--tooltip`\n\t\t\t);\n\n\t\t\tthis.tooltip.style('max-width', null);\n\t\t\tif (!this.isEventListenerAdded) {\n\t\t\t\tthis.addTooltipEventListener();\n\t\t\t\tthis.isEventListenerAdded = true;\n\t\t\t}\n\t\t\tthis.tooltip.classed('hidden', true);\n\t\t} else if (!isTooltipEnabled && this.isEventListenerAdded) {\n\t\t\t// remove tooltip eventListener\n\t\t\tthis.removeTooltipEventListener();\n\t\t\tthis.isEventListenerAdded = false;\n\t\t}\n\t}\n\n\tpositionTooltip(e: CustomEvent) {\n\t\tconst holder = this.services.domUtils.getHolder();\n\t\tconst target = this.tooltip.node();\n\t\tconst options = this.getOptions();\n\t\tconst isTopZoomBarEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'zoomBar',\n\t\t\t'top',\n\t\t\t'enabled'\n\t\t);\n\n\t\tlet mouseRelativePos = Tools.getProperty(e, 'detail', 'mousePosition');\n\t\tif (!mouseRelativePos) {\n\t\t\tmouseRelativePos = pointer(\n\t\t\t\tTools.getProperty(e, 'detail', 'event'),\n\t\t\t\tholder\n\t\t\t);\n\t\t} else {\n\t\t\tconst zoombarType = Tools.getProperty(\n\t\t\t\toptions,\n\t\t\t\t'zoomBar',\n\t\t\t\t'top',\n\t\t\t\t'type'\n\t\t\t);\n\t\t\tconst zoombarHeight = Configuration.zoomBar.height[zoombarType];\n\n\t\t\t// if the mouse position is from event (ruler)\n\t\t\t// we need add zoom bar height\n\t\t\tif (isTopZoomBarEnabled) {\n\t\t\t\tmouseRelativePos[1] +=\n\t\t\t\t\tzoombarHeight + Configuration.zoomBar.spacerHeight;\n\n\t\t\t\t// TODO - we need to add toolbar height when toolbar is available\n\t\t\t}\n\t\t}\n\n\t\tlet pos;\n\n\t\tconst holderWidth = holder.offsetWidth;\n\t\tconst holderHeight = holder.offsetHeight;\n\n\t\tlet bestPlacementOption;\n\t\tif (mouseRelativePos[0] / holderWidth > 0.9) {\n\t\t\tbestPlacementOption = PLACEMENTS.LEFT;\n\t\t} else if (mouseRelativePos[0] / holderWidth < 0.1) {\n\t\t\tbestPlacementOption = PLACEMENTS.RIGHT;\n\t\t} else {\n\t\t\t// Find out whether tooltip should be shown on the left or right side\n\t\t\tbestPlacementOption = this.positionService.findBestPlacementAt(\n\t\t\t\t{\n\t\t\t\t\tleft: mouseRelativePos[0],\n\t\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t\t},\n\t\t\t\ttarget,\n\t\t\t\t[\n\t\t\t\t\tPLACEMENTS.RIGHT,\n\t\t\t\t\tPLACEMENTS.LEFT,\n\t\t\t\t\tPLACEMENTS.TOP,\n\t\t\t\t\tPLACEMENTS.BOTTOM,\n\t\t\t\t],\n\t\t\t\t() => ({\n\t\t\t\t\twidth: holderWidth,\n\t\t\t\t\theight: holderHeight,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tlet { horizontalOffset } = Configuration.tooltips;\n\t\tif (bestPlacementOption === PLACEMENTS.LEFT) {\n\t\t\thorizontalOffset *= -1;\n\t\t}\n\n\t\t// Get coordinates to where tooltip should be positioned\n\t\tpos = this.positionService.findPositionAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0] + horizontalOffset,\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\tbestPlacementOption\n\t\t);\n\n\t\tthis.positionService.setElement(target, pos);\n\t}\n}\n"]}
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["tooltip.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model/model';\nimport { Events, RenderTypes, TruncationTypes } from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\n// Carbon position service\nimport Position, { PLACEMENTS } from '@carbon/utils-position';\n\n// import the settings for the css prefix\nimport settings from 'carbon-components/es/globals/js/settings';\n\n// D3 Imports\n// @ts-ignore\n// ts-ignore is needed because `@types/d3`\n// is missing the `pointer` function\nimport { select, pointer } from 'd3-selection';\n\nimport { format } from 'date-fns';\n\nexport class Tooltip extends Component {\n\ttype = 'tooltip';\n\trenderType = RenderTypes.HTML;\n\n\t// flag for checking whether tooltip event listener is added or not\n\tisEventListenerAdded = false;\n\ttooltip: any;\n\tpositionService = new Position();\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.init();\n\t}\n\n\thandleShowTooltip = (e) => {\n\t\tconst data = e.detail.data || e.detail.items;\n\n\t\tconst defaultHTML = this.getTooltipHTML(e);\n\n\t\tconst tooltipTextContainer = DOMUtils.appendOrSelect(\n\t\t\tthis.tooltip,\n\t\t\t'div.content-box'\n\t\t);\n\n\t\t// if there is a provided tooltip HTML function call it\n\t\tif (Tools.getProperty(this.getOptions(), 'tooltip', 'customHTML')) {\n\t\t\tif (e.detail.content) {\n\t\t\t\tconst labelHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t\t\ttooltipTextContainer.html(labelHTML);\n\t\t\t} else {\n\t\t\t\ttooltipTextContainer.html(\n\t\t\t\t\tthis.model\n\t\t\t\t\t\t.getOptions()\n\t\t\t\t\t\t.tooltip.customHTML(data, defaultHTML)\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\t// Use default tooltip\n\t\t\ttooltipTextContainer.html(defaultHTML);\n\t\t}\n\n\t\t// Position the tooltip\n\t\tthis.positionTooltip(e);\n\n\t\t// Fade in\n\t\tthis.tooltip.classed('hidden', false).attr('aria-hidden', false);\n\t};\n\n\thandleHideTooltip = () => {\n\t\tthis.tooltip.classed('hidden', true).attr('aria-hidden', true);\n\t};\n\n\taddTooltipEventListener() {\n\t\t// listen to move-tooltip Custom Events to move the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.MOVE,\n\t\t\t(e: CustomEvent) => {\n\t\t\t\tif (this.tooltip.classed('hidden') === false) {\n\t\t\t\t\tthis.positionTooltip(e);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t// listen to show-tooltip Custom Events to render the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// listen to hide-tooltip Custom Events to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// listen to chart-mouseout event to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tremoveTooltipEventListener() {\n\t\t// remove move-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(Events.Tooltip.MOVE, null);\n\n\t\t// remove show-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// remove hide-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// remove the listener on chart-mouseout\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tformatItems(items) {\n\t\tconst options = this.getOptions();\n\n\t\t// get user provided custom values for truncation\n\t\tconst truncationType = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'type'\n\t\t);\n\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\n\t\tconst truncationNumCharacter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'numCharacter'\n\t\t);\n\n\t\t// truncate the label if it's too long\n\t\t// only applies to discrete type\n\t\tif (truncationType !== TruncationTypes.NONE) {\n\t\t\treturn items.map((item) => {\n\t\t\t\t// get width of the label icon if it exists\n\t\t\t\tconst labelIconSize = item.labelIcon ? 12 : 0;\n\n\t\t\t\titem.value = item.value\n\t\t\t\t\t? this.valueFormatter(item.value, item.label)\n\t\t\t\t\t: item.value;\n\t\t\t\tif (\n\t\t\t\t\titem.label &&\n\t\t\t\t\titem.label.length + labelIconSize > truncationThreshold\n\t\t\t\t) {\n\t\t\t\t\titem.label = Tools.truncateLabel(\n\t\t\t\t\t\titem.label,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (item.value && item.value.length > truncationThreshold) {\n\t\t\t\t\titem.value = Tools.truncateLabel(\n\t\t\t\t\t\titem.value,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn item;\n\t\t\t});\n\t\t}\n\n\t\treturn items;\n\t}\n\n\tgetTooltipHTML(e: CustomEvent) {\n\t\tlet defaultHTML;\n\t\tif (e.detail.content) {\n\t\t\tdefaultHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t} else {\n\t\t\tconst items = this.getItems(e);\n\t\t\tconst formattedItems = this.formatItems(items);\n\n\t\t\tdefaultHTML =\n\t\t\t\t`<ul class=\"multi-tooltip\">` +\n\t\t\t\tformattedItems\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(item) =>\n\t\t\t\t\t\t\t`<li>\n\t\t\t\t\t\t\t<div class=\"datapoint-tooltip ${item.bold ? 'bold' : ''}\">\n\t\t\t\t\t\t\t\t${item.class ? `<div class=\"tooltip-color ${item.class}\"></div>` : ''}\n\t\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\t\titem.color\n\t\t\t\t\t\t\t\t\t\t? '<div style=\"background-color: ' +\n\t\t\t\t\t\t\t\t\t\t item.color +\n\t\t\t\t\t\t\t\t\t\t '\" class=\"tooltip-color\"></div>'\n\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t<div class=\"label\">\n\t\t\t\t\t\t\t\t<p>${item.label || ''}</p>\n\t\t\t\t\t\t\t\t${item.labelIcon ? `<span class=\"label-icon\"/>${item.labelIcon}</span>` : ''}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\t\titem.value === undefined ||\n\t\t\t\t\t\t\t\t\titem.value === null\n\t\t\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t\t\t: `<p class=\"value\"/>${item.value}</p>`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</li>`\n\t\t\t\t\t)\n\t\t\t\t\t.join('') +\n\t\t\t\t`</ul>`;\n\t\t}\n\n\t\treturn defaultHTML;\n\t}\n\n\tvalueFormatter(value: any, label: string) {\n\t\tconst options = this.getOptions();\n\t\tconst valueFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'valueFormatter'\n\t\t);\n\n\t\tif (valueFormatter) {\n\t\t\treturn valueFormatter(value, label);\n\t\t}\n\n\t\tif (typeof value.getTime === 'function') {\n\t\t\treturn format(value, 'MMM d, yyyy');\n\t\t}\n\n\t\treturn value.toLocaleString();\n\t}\n\n\trender() {\n\t\tconst options = this.getOptions();\n\t\tconst isTooltipEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'enabled'\n\t\t);\n\t\tif (isTooltipEnabled) {\n\t\t\t// Grab the tooltip element\n\t\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\t\t\tthis.tooltip = DOMUtils.appendOrSelect(\n\t\t\t\tholder,\n\t\t\t\t`div.${settings.prefix}--${chartprefix}--tooltip`\n\t\t\t);\n\n\t\t\tthis.tooltip.style('max-width', null).attr('role', 'tooltip');\n\n\t\t\tif (!this.isEventListenerAdded) {\n\t\t\t\tthis.addTooltipEventListener();\n\t\t\t\tthis.isEventListenerAdded = true;\n\t\t\t}\n\t\t\tthis.tooltip.classed('hidden', true);\n\t\t} else if (!isTooltipEnabled && this.isEventListenerAdded) {\n\t\t\t// remove tooltip eventListener\n\t\t\tthis.removeTooltipEventListener();\n\t\t\tthis.isEventListenerAdded = false;\n\t\t}\n\t}\n\n\tpositionTooltip(e: CustomEvent) {\n\t\tconst holder = this.services.domUtils.getHolder();\n\t\tconst target = this.tooltip.node();\n\t\tconst options = this.getOptions();\n\t\tconst isTopZoomBarEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'zoomBar',\n\t\t\t'top',\n\t\t\t'enabled'\n\t\t);\n\n\t\tlet mouseRelativePos = Tools.getProperty(e, 'detail', 'mousePosition');\n\t\tif (!mouseRelativePos) {\n\t\t\tmouseRelativePos = pointer(\n\t\t\t\tTools.getProperty(e, 'detail', 'event'),\n\t\t\t\tholder\n\t\t\t);\n\t\t} else {\n\t\t\tconst zoombarType = Tools.getProperty(\n\t\t\t\toptions,\n\t\t\t\t'zoomBar',\n\t\t\t\t'top',\n\t\t\t\t'type'\n\t\t\t);\n\t\t\tconst zoombarHeight = Configuration.zoomBar.height[zoombarType];\n\n\t\t\t// if the mouse position is from event (ruler)\n\t\t\t// we need add zoom bar height\n\t\t\tif (isTopZoomBarEnabled) {\n\t\t\t\tmouseRelativePos[1] +=\n\t\t\t\t\tzoombarHeight + Configuration.zoomBar.spacerHeight;\n\n\t\t\t\t// TODO - we need to add toolbar height when toolbar is available\n\t\t\t}\n\t\t}\n\n\t\tlet pos;\n\n\t\tconst holderWidth = holder.offsetWidth;\n\t\tconst holderHeight = holder.offsetHeight;\n\n\t\tlet bestPlacementOption;\n\t\tif (mouseRelativePos[0] / holderWidth > 0.9) {\n\t\t\tbestPlacementOption = PLACEMENTS.LEFT;\n\t\t} else if (mouseRelativePos[0] / holderWidth < 0.1) {\n\t\t\tbestPlacementOption = PLACEMENTS.RIGHT;\n\t\t} else {\n\t\t\t// Find out whether tooltip should be shown on the left or right side\n\t\t\tbestPlacementOption = this.positionService.findBestPlacementAt(\n\t\t\t\t{\n\t\t\t\t\tleft: mouseRelativePos[0],\n\t\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t\t},\n\t\t\t\ttarget,\n\t\t\t\t[\n\t\t\t\t\tPLACEMENTS.RIGHT,\n\t\t\t\t\tPLACEMENTS.LEFT,\n\t\t\t\t\tPLACEMENTS.TOP,\n\t\t\t\t\tPLACEMENTS.BOTTOM,\n\t\t\t\t],\n\t\t\t\t() => ({\n\t\t\t\t\twidth: holderWidth,\n\t\t\t\t\theight: holderHeight,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tlet { horizontalOffset } = Configuration.tooltips;\n\t\tif (bestPlacementOption === PLACEMENTS.LEFT) {\n\t\t\thorizontalOffset *= -1;\n\t\t}\n\n\t\t// Get coordinates to where tooltip should be positioned\n\t\tpos = this.positionService.findPositionAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0] + horizontalOffset,\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\tbestPlacementOption\n\t\t);\n\n\t\tthis.positionService.setElement(target, pos);\n\t}\n}\n"]}
@@ -93,7 +93,9 @@ var Alluvial = /** @class */ (function (_super) {
93
93
  // Add the category text
94
94
  alluvialCategory
95
95
  .append('text')
96
- .attr('id', function (d, i) { return "category-" + i; })
96
+ .attr('id', function (d, i) {
97
+ return _this.services.domUtils.generateElementIDString("alluvial-category-" + i);
98
+ })
97
99
  .style('font-size', '14px')
98
100
  .text(function (d) {
99
101
  if (nodeCoordinates[d]) {
@@ -103,7 +105,8 @@ var Alluvial = /** @class */ (function (_super) {
103
105
  })
104
106
  .attr('y', 20)
105
107
  .attr('x', function (d, i) {
106
- var width = DOMUtils.getSVGElementSize(select("text#category-" + i), { useBBox: true }).width;
108
+ var elementID = _this.services.domUtils.generateElementIDString("alluvial-category-" + i);
109
+ var width = DOMUtils.getSVGElementSize(select("text#" + elementID), { useBBox: true }).width;
107
110
  // Make the text on the left on node group (except first column)
108
111
  var x = 0;
109
112
  if (d + x >= width) {
@@ -119,7 +122,9 @@ var Alluvial = /** @class */ (function (_super) {
119
122
  .join('path')
120
123
  .classed('link', true)
121
124
  .attr('d', sankeyLinkHorizontal())
122
- .attr('id', function (d) { return "line-" + d.index; })
125
+ .attr('id', function (d) {
126
+ return _this.services.domUtils.generateElementIDString("alluvial-line-" + d.index);
127
+ })
123
128
  .attr('class', function (d) {
124
129
  // Use a single color for the lines
125
130
  if (options.alluvial.monochrome) {
@@ -150,7 +155,9 @@ var Alluvial = /** @class */ (function (_super) {
150
155
  .data(this.graph.nodes)
151
156
  .enter()
152
157
  .append('g')
153
- .attr('id', function (d) { return "node-" + d.index; })
158
+ .attr('id', function (d) {
159
+ return _this.services.domUtils.generateElementIDString("alluvial-node-" + d.index);
160
+ })
154
161
  .classed('node-group', true)
155
162
  .attr('transform', function (d) { return "translate(" + d.x0 + ", " + d.y0 + ")"; });
156
163
  // Creating the nodes
@@ -162,11 +169,15 @@ var Alluvial = /** @class */ (function (_super) {
162
169
  // Group to hold the text & rectangle background
163
170
  var textNode = node
164
171
  .append('g')
165
- .attr('id', function (d) { return "node-title-" + d.index; });
172
+ .attr('id', function (d) {
173
+ return _this.services.domUtils.generateElementIDString("alluvial-node-title-" + d.index);
174
+ });
166
175
  // Node title - text
167
176
  textNode
168
177
  .append('text')
169
- .attr('id', function (d) { return "node-text-" + d.index; })
178
+ .attr('id', function (d) {
179
+ return _this.services.domUtils.generateElementIDString("alluvial-node-text-" + d.index);
180
+ })
170
181
  .attr('class', 'node-text')
171
182
  .style('font-size', '12px')
172
183
  .attr('text-anchor', 'start')
@@ -186,8 +197,9 @@ var Alluvial = /** @class */ (function (_super) {
186
197
  .append('rect')
187
198
  .classed('node-text-bg', true)
188
199
  .attr('width', function (d, i) {
200
+ var elementID = _this.services.domUtils.generateElementIDString("alluvial-node-text-" + i);
189
201
  // Determine rectangle width based on text width
190
- var width = DOMUtils.getSVGElementSize(select("text#node-text-" + i), { useBBox: true }).width;
202
+ var width = DOMUtils.getSVGElementSize(select("text#" + elementID), { useBBox: true }).width;
191
203
  return width + 8;
192
204
  })
193
205
  .attr('height', 18)
@@ -195,7 +207,8 @@ var Alluvial = /** @class */ (function (_super) {
195
207
  .lower();
196
208
  // Position group based on text width
197
209
  textNode.attr('transform', function (d, i) {
198
- var width = DOMUtils.getSVGElementSize(select("text#node-text-" + i), { useBBox: true }).width;
210
+ var elementID = _this.services.domUtils.generateElementIDString("alluvial-node-text-" + i);
211
+ var width = DOMUtils.getSVGElementSize(select("text#" + elementID), { useBBox: true }).width;
199
212
  // Subtracting 9 since text background is 18 to center
200
213
  var y = (d.y1 - d.y0) / 2 - 9;
201
214
  // Node width
@@ -370,12 +383,14 @@ var Alluvial = /** @class */ (function (_super) {
370
383
  // Translate first column text container to the
371
384
  // right so it doesn't clash with expanding node
372
385
  if (datum.x0 - 2 === 0) {
373
- var titleContainer = self.parent.select("g#node-title-" + datum.index);
386
+ var elementID_1 = self.services.domUtils.generateElementIDString("alluvial-node-title-" + datum.index);
387
+ var titleContainer = self.parent.select("g#" + elementID_1);
374
388
  var titleMatrix = Tools.getTranformOffsets(titleContainer.attr('transform'));
375
389
  titleContainer.attr('transform', "translate(" + (titleMatrix.x + 4) + "," + titleMatrix.y + ")");
376
390
  }
391
+ var elementID = self.services.domUtils.generateElementIDString("alluvial-node-text-" + datum.index);
377
392
  self.parent
378
- .select("text#node-text-" + datum.index)
393
+ .select("text#" + elementID)
379
394
  .style('font-weight', 'bold');
380
395
  debouncedLineHighlight(paths, 'mouseover');
381
396
  // Dispatch mouse over event
@@ -417,12 +432,14 @@ var Alluvial = /** @class */ (function (_super) {
417
432
  .attr('width', Configuration.alluvial.nodeWidth);
418
433
  // Translate text container back to initial state
419
434
  if (datum.x0 - 2 === 0) {
420
- var titleContainer = self.parent.select("g#node-title-" + datum.index);
435
+ var elementID_2 = self.services.domUtils.generateElementIDString("alluvial-node-title-" + datum.index);
436
+ var titleContainer = self.parent.select("g#" + elementID_2);
421
437
  var titleMatrix = Tools.getTranformOffsets(titleContainer.attr('transform'));
422
438
  titleContainer.attr('transform', "translate(" + (titleMatrix.x - 4) + "," + titleMatrix.y + ")");
423
439
  }
440
+ var elementID = self.services.domUtils.generateElementIDString("alluvial-node-text-" + datum.index);
424
441
  self.parent
425
- .select("text#node-text-" + datum.index)
442
+ .select("text#" + elementID)
426
443
  .style('font-weight', 'normal');
427
444
  debouncedLineHighlight([], 'mouseout');
428
445
  // Dispatch mouse out event
@@ -1 +1 @@
1
- {"version":3,"file":"alluvial.js","sourceRoot":"","sources":["alluvial.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Tools } from '../../tools';\nimport * as Configuration from '../../configuration';\nimport { Events, ColorClassNameTypes, RenderTypes } from '../../interfaces';\n\n// D3 imports\nimport { select } from 'd3-selection';\nimport { sankey as d3Sankey, sankeyLinkHorizontal } from 'd3-sankey';\n\nexport class Alluvial extends Component {\n\ttype = 'alluvial';\n\trenderType = RenderTypes.SVG;\n\n\tprivate graph: any;\n\n\trender(animate = true) {\n\t\t// svg and container widths\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\t\tsvg.html('');\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\t// Because of a Firefox bug with regards to sizing & d3 packs,\n\t\t// rather than checking if height or width aren't 0,\n\t\t// we have to make sure they're not smaller than 1\n\t\tif (width < 1 || height < 1) {\n\t\t\treturn;\n\t\t}\n\t\tconst options = this.model.getOptions();\n\t\tconst data = this.model.getDisplayData();\n\n\t\t// Set the custom node padding if provided\n\t\tlet nodePadding = Configuration.alluvial.minNodePadding;\n\t\tif (\n\t\t\toptions.alluvial.nodePadding > Configuration.alluvial.minNodePadding\n\t\t) {\n\t\t\tnodePadding = options.alluvial.nodePadding;\n\t\t}\n\n\t\tconst sankey = d3Sankey()\n\t\t\t.nodeId((d) => d.name)\n\t\t\t.nodeWidth(Configuration.alluvial.nodeWidth)\n\t\t\t// Distance nodes are apart from each other\n\t\t\t.nodePadding(nodePadding)\n\t\t\t// Size of the chart and its padding\n\t\t\t// Chart starts at 2 and ends at width - 2 so the outer nodes can expand from center\n\t\t\t// Chart starts from 30 so node categories can be displayed\n\t\t\t.extent([\n\t\t\t\t[2, 30],\n\t\t\t\t[width - 2, height],\n\t\t\t]);\n\n\t\t// Construct a graph with the provided user data\n\t\t// Data must be deep cloned to ensure user passed data isn't deleted when themes change\n\t\tthis.graph = sankey({\n\t\t\tnodes: options.alluvial.nodes.map((d) => Object.assign({}, d)),\n\t\t\tlinks: data.map((d) => Object.assign({}, d)),\n\t\t});\n\n\t\t// Filter out unused nodes so they are not rendered\n\t\tthis.graph.nodes = this.graph.nodes.filter((node) => node.value !== 0);\n\n\t\t// Determine the category name placement x position\n\t\tconst nodeCoordinates = {};\n\t\tthis.graph.nodes.forEach((element) => {\n\t\t\tconst point = element.x0;\n\n\t\t\t// Only 1 category per x-value\n\t\t\tif (element.category) {\n\t\t\t\tnodeCoordinates[point] = element?.category;\n\t\t\t}\n\t\t});\n\n\t\t// Add node category text\n\t\tconst alluvialCategory = svg\n\t\t\t.append('g')\n\t\t\t.classed('header-arrows', true)\n\t\t\t.selectAll('g')\n\t\t\t.data(Object.keys(nodeCoordinates))\n\t\t\t.join('g')\n\t\t\t.attr('transform', (d) => {\n\t\t\t\treturn `translate(${d}, 0)`;\n\t\t\t});\n\n\t\t// Add the category text\n\t\talluvialCategory\n\t\t\t.append('text')\n\t\t\t.attr('id', (d, i) => `category-${i}`)\n\t\t\t.style('font-size', '14px')\n\t\t\t.text((d) => {\n\t\t\t\tif (nodeCoordinates[d]) {\n\t\t\t\t\treturn nodeCoordinates[d];\n\t\t\t\t}\n\t\t\t\treturn '';\n\t\t\t})\n\t\t\t.attr('y', 20)\n\t\t\t.attr('x', (d, i) => {\n\t\t\t\tconst { width } = DOMUtils.getSVGElementSize(\n\t\t\t\t\tselect(`text#category-${i}`),\n\t\t\t\t\t{ useBBox: true }\n\t\t\t\t);\n\n\t\t\t\t// Make the text on the left on node group (except first column)\n\t\t\t\tlet x = 0;\n\t\t\t\tif (d + x >= width) {\n\t\t\t\t\tx = -width + 4;\n\t\t\t\t}\n\t\t\t\treturn x;\n\t\t\t});\n\n\t\t// Draws the links (Waves)\n\t\tsvg.append('g')\n\t\t\t.attr('fill', 'none')\n\t\t\t.selectAll('g')\n\t\t\t.data(this.graph.links)\n\t\t\t.join('path')\n\t\t\t.classed('link', true)\n\t\t\t.attr('d', sankeyLinkHorizontal())\n\t\t\t.attr('id', (d) => `line-${d.index}`)\n\t\t\t.attr('class', (d) => {\n\t\t\t\t// Use a single color for the lines\n\t\t\t\tif (options.alluvial.monochrome) {\n\t\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\t\tdataGroupName: 0,\n\t\t\t\t\t\toriginalClassName: 'link',\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\tdataGroupName: d.source.index,\n\t\t\t\t\toriginalClassName: 'link',\n\t\t\t\t});\n\t\t\t})\n\t\t\t.style('stroke', (d) => this.model.getFillColor(d.source.name))\n\t\t\t.attr('stroke-width', (d) => Math.max(1, d.width))\n\t\t\t.style('stroke-opacity', Configuration.alluvial.opacity.default)\n\t\t\t.attr(\n\t\t\t\t'aria-label',\n\t\t\t\t(d) =>\n\t\t\t\t\t`${d.source.name} → ${d.target.name} (${d.value}${\n\t\t\t\t\t\toptions.alluvial.units\n\t\t\t\t\t\t\t? ' ' + options.alluvial.units\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t})`\n\t\t\t);\n\n\t\t// Creating the groups\n\t\tconst node = svg\n\t\t\t.append('g')\n\t\t\t.selectAll('g')\n\t\t\t.data(this.graph.nodes)\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.attr('id', (d) => `node-${d.index}`)\n\t\t\t.classed('node-group', true)\n\t\t\t.attr('transform', (d) => `translate(${d.x0}, ${d.y0})`);\n\n\t\t// Creating the nodes\n\t\tnode.append('rect')\n\t\t\t.classed('node', true)\n\t\t\t.attr('height', (d) => d.y1 - d.y0)\n\t\t\t.attr('width', (d) => d.x1 - d.x0)\n\t\t\t.attr('fill', 'black');\n\n\t\t// Group to hold the text & rectangle background\n\t\tconst textNode = node\n\t\t\t.append('g')\n\t\t\t.attr('id', (d) => `node-title-${d.index}`);\n\n\t\t// Node title - text\n\t\ttextNode\n\t\t\t.append('text')\n\t\t\t.attr('id', (d) => `node-text-${d.index}`)\n\t\t\t.attr('class', 'node-text')\n\t\t\t.style('font-size', '12px')\n\t\t\t.attr('text-anchor', 'start')\n\t\t\t.attr('fill', 'white')\n\t\t\t// Padding to text\n\t\t\t.attr('x', 4)\n\t\t\t// shift 13 pixels down to fit background container\n\t\t\t.attr('dy', 13)\n\t\t\t.text((d) => {\n\t\t\t\treturn `${d.name} (${d.value})`;\n\t\t\t})\n\t\t\t.attr('aria-label', (d) => {\n\t\t\t\treturn `${d.name} (${d.value})`;\n\t\t\t});\n\n\t\t// Text background\n\t\ttextNode\n\t\t\t.append('rect')\n\t\t\t.classed('node-text-bg', true)\n\t\t\t.attr('width', (d, i) => {\n\t\t\t\t// Determine rectangle width based on text width\n\t\t\t\tconst { width } = DOMUtils.getSVGElementSize(\n\t\t\t\t\tselect(`text#node-text-${i}`),\n\t\t\t\t\t{ useBBox: true }\n\t\t\t\t);\n\n\t\t\t\treturn width + 8;\n\t\t\t})\n\t\t\t.attr('height', 18)\n\t\t\t.attr('stroke-width', 2)\n\t\t\t.lower();\n\n\t\t// Position group based on text width\n\t\ttextNode.attr('transform', (d, i) => {\n\t\t\tconst { width } = DOMUtils.getSVGElementSize(\n\t\t\t\tselect(`text#node-text-${i}`),\n\t\t\t\t{ useBBox: true }\n\t\t\t);\n\n\t\t\t// Subtracting 9 since text background is 18 to center\n\t\t\tconst y = (d.y1 - d.y0) / 2 - 9;\n\t\t\t// Node width\n\t\t\tlet x = d.x1 - d.x0;\n\n\t\t\t// Display bars on the right instead of left of the node\n\t\t\tif (d.x1 >= width) {\n\t\t\t\t// 16 = node width (4) + text container padding (8) + distance between node and text container (4)\n\t\t\t\tx = x - (width + 16);\n\t\t\t} else {\n\t\t\t\t// Add padding to text containers\n\t\t\t\tx += 4;\n\t\t\t}\n\n\t\t\treturn `translate(${x}, ${y})`;\n\t\t});\n\n\t\tthis.addLineEventListener();\n\t\tthis.addNodeEventListener();\n\t}\n\n\taddLineEventListener() {\n\t\tconst options = this.getOptions();\n\t\tconst self = this;\n\n\t\t// Set delay to counter flashy behaviour\n\t\tconst debouncedLineHighlight = Tools.debounce(\n\t\t\t(link, event = 'mouseover') => {\n\t\t\t\tconst allLinks = self.parent\n\t\t\t\t\t.selectAll('path.link')\n\t\t\t\t\t.transition()\n\t\t\t\t\t.call((t) =>\n\t\t\t\t\t\tself.services.transitions.setupTransition({\n\t\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\t\tname: 'alluvial-links-mouse-highlight',\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\n\t\t\t\tif (event === 'mouseout') {\n\t\t\t\t\tselect(link).lower();\n\t\t\t\t\tallLinks.style(\n\t\t\t\t\t\t'stroke-opacity',\n\t\t\t\t\t\tConfiguration.alluvial.opacity.default\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tallLinks.style('stroke-opacity', function () {\n\t\t\t\t\t\t// highlight and raise if link is this\n\t\t\t\t\t\tif (link === this) {\n\t\t\t\t\t\t\tselect(this).raise();\n\t\t\t\t\t\t\treturn Configuration.alluvial.opacity.selected;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn Configuration.alluvial.opacity.unfocus;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\t33\n\t\t);\n\n\t\tthis.parent\n\t\t\t.selectAll('path.link')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tdebouncedLineHighlight(this, 'mouseover');\n\t\t\t\thoveredElement.classed('link-hovered', true);\n\n\t\t\t\tconst strokeColor = getComputedStyle(this).getPropertyValue(\n\t\t\t\t\t'stroke'\n\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse over event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.LINE_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Dispatch tooltip show event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: datum.target.name,\n\t\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\t\tdatum.value +\n\t\t\t\t\t\t\t\t(options.alluvial.units\n\t\t\t\t\t\t\t\t\t? ` ${options.alluvial.units}`\n\t\t\t\t\t\t\t\t\t: ''),\n\t\t\t\t\t\t\tcolor: strokeColor,\n\t\t\t\t\t\t\tlabelIcon: self.getRightArrowIcon(),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\t// Dispatch mouse move event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.LINE_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\t// Dispatch tooltip move event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse click event\n\t\t\t\tself.services.events.dispatchEvent(Events.Alluvial.LINE_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tdebouncedLineHighlight(this, 'mouseout');\n\t\t\t\thoveredElement.classed('link-hovered', false);\n\n\t\t\t\t// Dispatch mouse out event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.LINE_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Dispatch hide tooltip event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\taddNodeEventListener() {\n\t\tconst self = this;\n\n\t\t// Set delay to counter flashy behaviour\n\t\tconst debouncedLineHighlight = Tools.debounce(\n\t\t\t(links = [], event = 'mouseover') => {\n\t\t\t\tif (event === 'mouseout' || links.length === 0) {\n\t\t\t\t\t// set all links to default opacity & corret link order\n\t\t\t\t\tself.parent\n\t\t\t\t\t\t.selectAll('path.link')\n\t\t\t\t\t\t.classed('link-hovered', false)\n\t\t\t\t\t\t.data(this.graph.links, (d) => d.index)\n\t\t\t\t\t\t.order()\n\t\t\t\t\t\t.style(\n\t\t\t\t\t\t\t'stroke-opacity',\n\t\t\t\t\t\t\tConfiguration.alluvial.opacity.default\n\t\t\t\t\t\t);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Highlight all nodes\n\t\t\t\tconst allLinks = self.parent\n\t\t\t\t\t.selectAll('path.link')\n\t\t\t\t\t.transition()\n\t\t\t\t\t.call((t) =>\n\t\t\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\t\tname: 'alluvial-link-mouse-highlight',\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\n\t\t\t\tallLinks.style('stroke-opacity', function (d) {\n\t\t\t\t\t// Raise the links & increase stroke-opacity to selected\n\t\t\t\t\tif (links.some((element) => element === d.index)) {\n\t\t\t\t\t\tselect(this).classed('link-hovered', true).raise();\n\t\t\t\t\t\treturn Configuration.alluvial.opacity.selected;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Configuration.alluvial.opacity.unfocus;\n\t\t\t\t});\n\t\t\t},\n\t\t\t66\n\t\t);\n\n\t\tself.parent\n\t\t\t.selectAll('.node-group')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Highlight all links that pass through node\n\t\t\t\tconst paths = [];\n\n\t\t\t\t// Outgoing links\n\t\t\t\tself.traverse(\n\t\t\t\t\t{ link: 'sourceLinks', node: 'target' },\n\t\t\t\t\tdatum,\n\t\t\t\t\tpaths\n\t\t\t\t);\n\n\t\t\t\t//Incoming links\n\t\t\t\tself.traverse(\n\t\t\t\t\t{ link: 'targetLinks', node: 'source' },\n\t\t\t\t\tdatum,\n\t\t\t\t\tpaths\n\t\t\t\t);\n\n\t\t\t\t// Highlight all linked lines in the graph data structure\n\t\t\t\tif (paths.length) {\n\t\t\t\t\t// Get transformation value of node\n\t\t\t\t\tconst nodeMatrix = Tools.getTranformOffsets(\n\t\t\t\t\t\thoveredElement.attr('transform')\n\t\t\t\t\t);\n\n\t\t\t\t\t// Move node to the left by 2 to grow node from the center\n\t\t\t\t\thoveredElement.attr(\n\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t`translate(${nodeMatrix.x - 2}, ${nodeMatrix.y})`\n\t\t\t\t\t);\n\n\t\t\t\t\thoveredElement\n\t\t\t\t\t\t.classed('node-hovered', true)\n\t\t\t\t\t\t.selectAll('rect.node')\n\t\t\t\t\t\t.attr('width', 8);\n\n\t\t\t\t\t// Translate first column text container to the\n\t\t\t\t\t// right so it doesn't clash with expanding node\n\t\t\t\t\tif (datum.x0 - 2 === 0) {\n\t\t\t\t\t\tconst titleContainer = self.parent.select(\n\t\t\t\t\t\t\t`g#node-title-${datum.index}`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst titleMatrix = Tools.getTranformOffsets(\n\t\t\t\t\t\t\ttitleContainer.attr('transform')\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\ttitleContainer.attr(\n\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t`translate(${titleMatrix.x + 4},${titleMatrix.y})`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tself.parent\n\t\t\t\t\t\t.select(`text#node-text-${datum.index}`)\n\t\t\t\t\t\t.style('font-weight', 'bold');\n\n\t\t\t\t\tdebouncedLineHighlight(paths, 'mouseover');\n\n\t\t\t\t\t// Dispatch mouse over event\n\t\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\t\tEvents.Alluvial.NODE_MOUSEOVER,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\t// Dispatch mouse move event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.NODE_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Dispatch tooltip move event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse click event\n\t\t\t\tself.services.events.dispatchEvent(Events.Alluvial.NODE_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Set the node position to initial state (unexpanded)\n\t\t\t\tconst nodeMatrix = Tools.getTranformOffsets(\n\t\t\t\t\thoveredElement.attr('transform')\n\t\t\t\t);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('node-hovered', false)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t`translate(${nodeMatrix.x + 2}, ${nodeMatrix.y})`\n\t\t\t\t\t)\n\t\t\t\t\t.select('rect.node')\n\t\t\t\t\t.attr('width', Configuration.alluvial.nodeWidth);\n\n\t\t\t\t// Translate text container back to initial state\n\t\t\t\tif (datum.x0 - 2 === 0) {\n\t\t\t\t\tconst titleContainer = self.parent.select(\n\t\t\t\t\t\t`g#node-title-${datum.index}`\n\t\t\t\t\t);\n\t\t\t\t\tconst titleMatrix = Tools.getTranformOffsets(\n\t\t\t\t\t\ttitleContainer.attr('transform')\n\t\t\t\t\t);\n\n\t\t\t\t\ttitleContainer.attr(\n\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t`translate(${titleMatrix.x - 4},${titleMatrix.y})`\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tself.parent\n\t\t\t\t\t.select(`text#node-text-${datum.index}`)\n\t\t\t\t\t.style('font-weight', 'normal');\n\n\t\t\t\tdebouncedLineHighlight([], 'mouseout');\n\n\t\t\t\t// Dispatch mouse out event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.NODE_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Dispatch hide tooltip event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t// Traverse graph and get all connected links to node\n\tprivate traverse(\n\t\tdirection:\n\t\t\t| { link: 'sourceLinks'; node: 'target' }\n\t\t\t| { link: 'targetLinks'; node: 'source' },\n\t\tnode,\n\t\tvisited = []\n\t) {\n\t\tconst links = node[direction.link].map((element) => {\n\t\t\tvisited.push(element.index);\n\t\t\treturn element[direction.node];\n\t\t});\n\n\t\t// Retrieve the child nodes\n\t\tlinks.forEach((element) => this.traverse(direction, element, visited));\n\t}\n\n\tgetRightArrowIcon() {\n\t\treturn `\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\n\t\t\t<polygon points=\"18 6 16.57 7.393 24.15 15 4 15 4 17 24.15 17 16.57 24.573 18 26 28 16 18 6\"/>\n\t\t\t<rect data-name=\"&lt;Transparent Rectangle&gt;\" style=\"fill: none;\" width=\"32\" height=\"32\"/>\n\t\t</svg>`;\n\t}\n\n\t// Remove event listeners\n\tdestroy() {\n\t\tthis.parent\n\t\t\t.selectAll('path.line,.node-group')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('click', null)\n\t\t\t.on('mouseout', null);\n\t}\n}\n"]}
1
+ {"version":3,"file":"alluvial.js","sourceRoot":"","sources":["alluvial.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Tools } from '../../tools';\nimport * as Configuration from '../../configuration';\nimport { Events, ColorClassNameTypes, RenderTypes } from '../../interfaces';\n\n// D3 imports\nimport { select } from 'd3-selection';\nimport { sankey as d3Sankey, sankeyLinkHorizontal } from 'd3-sankey';\n\nexport class Alluvial extends Component {\n\ttype = 'alluvial';\n\trenderType = RenderTypes.SVG;\n\n\tprivate graph: any;\n\n\trender(animate = true) {\n\t\t// svg and container widths\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\t\tsvg.html('');\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\t// Because of a Firefox bug with regards to sizing & d3 packs,\n\t\t// rather than checking if height or width aren't 0,\n\t\t// we have to make sure they're not smaller than 1\n\t\tif (width < 1 || height < 1) {\n\t\t\treturn;\n\t\t}\n\t\tconst options = this.model.getOptions();\n\t\tconst data = this.model.getDisplayData();\n\n\t\t// Set the custom node padding if provided\n\t\tlet nodePadding = Configuration.alluvial.minNodePadding;\n\t\tif (\n\t\t\toptions.alluvial.nodePadding > Configuration.alluvial.minNodePadding\n\t\t) {\n\t\t\tnodePadding = options.alluvial.nodePadding;\n\t\t}\n\n\t\tconst sankey = d3Sankey()\n\t\t\t.nodeId((d) => d.name)\n\t\t\t.nodeWidth(Configuration.alluvial.nodeWidth)\n\t\t\t// Distance nodes are apart from each other\n\t\t\t.nodePadding(nodePadding)\n\t\t\t// Size of the chart and its padding\n\t\t\t// Chart starts at 2 and ends at width - 2 so the outer nodes can expand from center\n\t\t\t// Chart starts from 30 so node categories can be displayed\n\t\t\t.extent([\n\t\t\t\t[2, 30],\n\t\t\t\t[width - 2, height],\n\t\t\t]);\n\n\t\t// Construct a graph with the provided user data\n\t\t// Data must be deep cloned to ensure user passed data isn't deleted when themes change\n\t\tthis.graph = sankey({\n\t\t\tnodes: options.alluvial.nodes.map((d) => Object.assign({}, d)),\n\t\t\tlinks: data.map((d) => Object.assign({}, d)),\n\t\t});\n\n\t\t// Filter out unused nodes so they are not rendered\n\t\tthis.graph.nodes = this.graph.nodes.filter((node) => node.value !== 0);\n\n\t\t// Determine the category name placement x position\n\t\tconst nodeCoordinates = {};\n\t\tthis.graph.nodes.forEach((element) => {\n\t\t\tconst point = element.x0;\n\n\t\t\t// Only 1 category per x-value\n\t\t\tif (element.category) {\n\t\t\t\tnodeCoordinates[point] = element?.category;\n\t\t\t}\n\t\t});\n\n\t\t// Add node category text\n\t\tconst alluvialCategory = svg\n\t\t\t.append('g')\n\t\t\t.classed('header-arrows', true)\n\t\t\t.selectAll('g')\n\t\t\t.data(Object.keys(nodeCoordinates))\n\t\t\t.join('g')\n\t\t\t.attr('transform', (d) => {\n\t\t\t\treturn `translate(${d}, 0)`;\n\t\t\t});\n\n\t\t// Add the category text\n\t\talluvialCategory\n\t\t\t.append('text')\n\t\t\t.attr('id', (d, i) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-category-${i}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.style('font-size', '14px')\n\t\t\t.text((d) => {\n\t\t\t\tif (nodeCoordinates[d]) {\n\t\t\t\t\treturn nodeCoordinates[d];\n\t\t\t\t}\n\t\t\t\treturn '';\n\t\t\t})\n\t\t\t.attr('y', 20)\n\t\t\t.attr('x', (d, i) => {\n\t\t\t\tconst elementID = this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-category-${i}`\n\t\t\t\t);\n\n\t\t\t\tconst { width } = DOMUtils.getSVGElementSize(\n\t\t\t\t\tselect(`text#${elementID}`),\n\t\t\t\t\t{ useBBox: true }\n\t\t\t\t);\n\n\t\t\t\t// Make the text on the left on node group (except first column)\n\t\t\t\tlet x = 0;\n\t\t\t\tif (d + x >= width) {\n\t\t\t\t\tx = -width + 4;\n\t\t\t\t}\n\t\t\t\treturn x;\n\t\t\t});\n\n\t\t// Draws the links (Waves)\n\t\tsvg.append('g')\n\t\t\t.attr('fill', 'none')\n\t\t\t.selectAll('g')\n\t\t\t.data(this.graph.links)\n\t\t\t.join('path')\n\t\t\t.classed('link', true)\n\t\t\t.attr('d', sankeyLinkHorizontal())\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-line-${d.index}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('class', (d) => {\n\t\t\t\t// Use a single color for the lines\n\t\t\t\tif (options.alluvial.monochrome) {\n\t\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\t\tdataGroupName: 0,\n\t\t\t\t\t\toriginalClassName: 'link',\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\tdataGroupName: d.source.index,\n\t\t\t\t\toriginalClassName: 'link',\n\t\t\t\t});\n\t\t\t})\n\t\t\t.style('stroke', (d) => this.model.getFillColor(d.source.name))\n\t\t\t.attr('stroke-width', (d) => Math.max(1, d.width))\n\t\t\t.style('stroke-opacity', Configuration.alluvial.opacity.default)\n\t\t\t.attr(\n\t\t\t\t'aria-label',\n\t\t\t\t(d) =>\n\t\t\t\t\t`${d.source.name} → ${d.target.name} (${d.value}${\n\t\t\t\t\t\toptions.alluvial.units\n\t\t\t\t\t\t\t? ' ' + options.alluvial.units\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t})`\n\t\t\t);\n\n\t\t// Creating the groups\n\t\tconst node = svg\n\t\t\t.append('g')\n\t\t\t.selectAll('g')\n\t\t\t.data(this.graph.nodes)\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-node-${d.index}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.classed('node-group', true)\n\t\t\t.attr('transform', (d) => `translate(${d.x0}, ${d.y0})`);\n\n\t\t// Creating the nodes\n\t\tnode.append('rect')\n\t\t\t.classed('node', true)\n\t\t\t.attr('height', (d) => d.y1 - d.y0)\n\t\t\t.attr('width', (d) => d.x1 - d.x0)\n\t\t\t.attr('fill', 'black');\n\n\t\t// Group to hold the text & rectangle background\n\t\tconst textNode = node\n\t\t\t.append('g')\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-node-title-${d.index}`\n\t\t\t\t)\n\t\t\t);\n\n\t\t// Node title - text\n\t\ttextNode\n\t\t\t.append('text')\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-node-text-${d.index}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('class', 'node-text')\n\t\t\t.style('font-size', '12px')\n\t\t\t.attr('text-anchor', 'start')\n\t\t\t.attr('fill', 'white')\n\t\t\t// Padding to text\n\t\t\t.attr('x', 4)\n\t\t\t// shift 13 pixels down to fit background container\n\t\t\t.attr('dy', 13)\n\t\t\t.text((d) => {\n\t\t\t\treturn `${d.name} (${d.value})`;\n\t\t\t})\n\t\t\t.attr('aria-label', (d) => {\n\t\t\t\treturn `${d.name} (${d.value})`;\n\t\t\t});\n\n\t\t// Text background\n\t\ttextNode\n\t\t\t.append('rect')\n\t\t\t.classed('node-text-bg', true)\n\t\t\t.attr('width', (d, i) => {\n\t\t\t\tconst elementID = this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-node-text-${i}`\n\t\t\t\t);\n\n\t\t\t\t// Determine rectangle width based on text width\n\t\t\t\tconst { width } = DOMUtils.getSVGElementSize(\n\t\t\t\t\tselect(`text#${elementID}`),\n\t\t\t\t\t{ useBBox: true }\n\t\t\t\t);\n\n\t\t\t\treturn width + 8;\n\t\t\t})\n\t\t\t.attr('height', 18)\n\t\t\t.attr('stroke-width', 2)\n\t\t\t.lower();\n\n\t\t// Position group based on text width\n\t\ttextNode.attr('transform', (d, i) => {\n\t\t\tconst elementID = this.services.domUtils.generateElementIDString(\n\t\t\t\t`alluvial-node-text-${i}`\n\t\t\t);\n\n\t\t\tconst { width } = DOMUtils.getSVGElementSize(\n\t\t\t\tselect(`text#${elementID}`),\n\t\t\t\t{ useBBox: true }\n\t\t\t);\n\n\t\t\t// Subtracting 9 since text background is 18 to center\n\t\t\tconst y = (d.y1 - d.y0) / 2 - 9;\n\t\t\t// Node width\n\t\t\tlet x = d.x1 - d.x0;\n\n\t\t\t// Display bars on the right instead of left of the node\n\t\t\tif (d.x1 >= width) {\n\t\t\t\t// 16 = node width (4) + text container padding (8) + distance between node and text container (4)\n\t\t\t\tx = x - (width + 16);\n\t\t\t} else {\n\t\t\t\t// Add padding to text containers\n\t\t\t\tx += 4;\n\t\t\t}\n\n\t\t\treturn `translate(${x}, ${y})`;\n\t\t});\n\n\t\tthis.addLineEventListener();\n\t\tthis.addNodeEventListener();\n\t}\n\n\taddLineEventListener() {\n\t\tconst options = this.getOptions();\n\t\tconst self = this;\n\n\t\t// Set delay to counter flashy behaviour\n\t\tconst debouncedLineHighlight = Tools.debounce(\n\t\t\t(link, event = 'mouseover') => {\n\t\t\t\tconst allLinks = self.parent\n\t\t\t\t\t.selectAll('path.link')\n\t\t\t\t\t.transition()\n\t\t\t\t\t.call((t) =>\n\t\t\t\t\t\tself.services.transitions.setupTransition({\n\t\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\t\tname: 'alluvial-links-mouse-highlight',\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\n\t\t\t\tif (event === 'mouseout') {\n\t\t\t\t\tselect(link).lower();\n\t\t\t\t\tallLinks.style(\n\t\t\t\t\t\t'stroke-opacity',\n\t\t\t\t\t\tConfiguration.alluvial.opacity.default\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tallLinks.style('stroke-opacity', function () {\n\t\t\t\t\t\t// highlight and raise if link is this\n\t\t\t\t\t\tif (link === this) {\n\t\t\t\t\t\t\tselect(this).raise();\n\t\t\t\t\t\t\treturn Configuration.alluvial.opacity.selected;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn Configuration.alluvial.opacity.unfocus;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\t33\n\t\t);\n\n\t\tthis.parent\n\t\t\t.selectAll('path.link')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tdebouncedLineHighlight(this, 'mouseover');\n\t\t\t\thoveredElement.classed('link-hovered', true);\n\n\t\t\t\tconst strokeColor = getComputedStyle(this).getPropertyValue(\n\t\t\t\t\t'stroke'\n\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse over event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.LINE_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Dispatch tooltip show event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: datum.target.name,\n\t\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\t\tdatum.value +\n\t\t\t\t\t\t\t\t(options.alluvial.units\n\t\t\t\t\t\t\t\t\t? ` ${options.alluvial.units}`\n\t\t\t\t\t\t\t\t\t: ''),\n\t\t\t\t\t\t\tcolor: strokeColor,\n\t\t\t\t\t\t\tlabelIcon: self.getRightArrowIcon(),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\t// Dispatch mouse move event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.LINE_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\t// Dispatch tooltip move event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse click event\n\t\t\t\tself.services.events.dispatchEvent(Events.Alluvial.LINE_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tdebouncedLineHighlight(this, 'mouseout');\n\t\t\t\thoveredElement.classed('link-hovered', false);\n\n\t\t\t\t// Dispatch mouse out event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.LINE_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Dispatch hide tooltip event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\taddNodeEventListener() {\n\t\tconst self = this;\n\n\t\t// Set delay to counter flashy behaviour\n\t\tconst debouncedLineHighlight = Tools.debounce(\n\t\t\t(links = [], event = 'mouseover') => {\n\t\t\t\tif (event === 'mouseout' || links.length === 0) {\n\t\t\t\t\t// set all links to default opacity & corret link order\n\t\t\t\t\tself.parent\n\t\t\t\t\t\t.selectAll('path.link')\n\t\t\t\t\t\t.classed('link-hovered', false)\n\t\t\t\t\t\t.data(this.graph.links, (d) => d.index)\n\t\t\t\t\t\t.order()\n\t\t\t\t\t\t.style(\n\t\t\t\t\t\t\t'stroke-opacity',\n\t\t\t\t\t\t\tConfiguration.alluvial.opacity.default\n\t\t\t\t\t\t);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Highlight all nodes\n\t\t\t\tconst allLinks = self.parent\n\t\t\t\t\t.selectAll('path.link')\n\t\t\t\t\t.transition()\n\t\t\t\t\t.call((t) =>\n\t\t\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\t\tname: 'alluvial-link-mouse-highlight',\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\n\t\t\t\tallLinks.style('stroke-opacity', function (d) {\n\t\t\t\t\t// Raise the links & increase stroke-opacity to selected\n\t\t\t\t\tif (links.some((element) => element === d.index)) {\n\t\t\t\t\t\tselect(this).classed('link-hovered', true).raise();\n\t\t\t\t\t\treturn Configuration.alluvial.opacity.selected;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Configuration.alluvial.opacity.unfocus;\n\t\t\t\t});\n\t\t\t},\n\t\t\t66\n\t\t);\n\n\t\tself.parent\n\t\t\t.selectAll('.node-group')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Highlight all links that pass through node\n\t\t\t\tconst paths = [];\n\n\t\t\t\t// Outgoing links\n\t\t\t\tself.traverse(\n\t\t\t\t\t{ link: 'sourceLinks', node: 'target' },\n\t\t\t\t\tdatum,\n\t\t\t\t\tpaths\n\t\t\t\t);\n\n\t\t\t\t//Incoming links\n\t\t\t\tself.traverse(\n\t\t\t\t\t{ link: 'targetLinks', node: 'source' },\n\t\t\t\t\tdatum,\n\t\t\t\t\tpaths\n\t\t\t\t);\n\n\t\t\t\t// Highlight all linked lines in the graph data structure\n\t\t\t\tif (paths.length) {\n\t\t\t\t\t// Get transformation value of node\n\t\t\t\t\tconst nodeMatrix = Tools.getTranformOffsets(\n\t\t\t\t\t\thoveredElement.attr('transform')\n\t\t\t\t\t);\n\n\t\t\t\t\t// Move node to the left by 2 to grow node from the center\n\t\t\t\t\thoveredElement.attr(\n\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t`translate(${nodeMatrix.x - 2}, ${nodeMatrix.y})`\n\t\t\t\t\t);\n\n\t\t\t\t\thoveredElement\n\t\t\t\t\t\t.classed('node-hovered', true)\n\t\t\t\t\t\t.selectAll('rect.node')\n\t\t\t\t\t\t.attr('width', 8);\n\n\t\t\t\t\t// Translate first column text container to the\n\t\t\t\t\t// right so it doesn't clash with expanding node\n\t\t\t\t\tif (datum.x0 - 2 === 0) {\n\t\t\t\t\t\tconst elementID = self.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t\t`alluvial-node-title-${datum.index}`\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst titleContainer = self.parent.select(\n\t\t\t\t\t\t\t`g#${elementID}`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst titleMatrix = Tools.getTranformOffsets(\n\t\t\t\t\t\t\ttitleContainer.attr('transform')\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\ttitleContainer.attr(\n\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t`translate(${titleMatrix.x + 4},${titleMatrix.y})`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst elementID = self.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t`alluvial-node-text-${datum.index}`\n\t\t\t\t\t);\n\n\t\t\t\t\tself.parent\n\t\t\t\t\t\t.select(`text#${elementID}`)\n\t\t\t\t\t\t.style('font-weight', 'bold');\n\n\t\t\t\t\tdebouncedLineHighlight(paths, 'mouseover');\n\n\t\t\t\t\t// Dispatch mouse over event\n\t\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\t\tEvents.Alluvial.NODE_MOUSEOVER,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\t// Dispatch mouse move event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.NODE_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Dispatch tooltip move event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse click event\n\t\t\t\tself.services.events.dispatchEvent(Events.Alluvial.NODE_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Set the node position to initial state (unexpanded)\n\t\t\t\tconst nodeMatrix = Tools.getTranformOffsets(\n\t\t\t\t\thoveredElement.attr('transform')\n\t\t\t\t);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('node-hovered', false)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t`translate(${nodeMatrix.x + 2}, ${nodeMatrix.y})`\n\t\t\t\t\t)\n\t\t\t\t\t.select('rect.node')\n\t\t\t\t\t.attr('width', Configuration.alluvial.nodeWidth);\n\n\t\t\t\t// Translate text container back to initial state\n\t\t\t\tif (datum.x0 - 2 === 0) {\n\t\t\t\t\tconst elementID = self.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t`alluvial-node-title-${datum.index}`\n\t\t\t\t\t);\n\n\t\t\t\t\tconst titleContainer = self.parent.select(`g#${elementID}`);\n\t\t\t\t\tconst titleMatrix = Tools.getTranformOffsets(\n\t\t\t\t\t\ttitleContainer.attr('transform')\n\t\t\t\t\t);\n\n\t\t\t\t\ttitleContainer.attr(\n\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t`translate(${titleMatrix.x - 4},${titleMatrix.y})`\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst elementID = self.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-node-text-${datum.index}`\n\t\t\t\t);\n\n\t\t\t\tself.parent\n\t\t\t\t\t.select(`text#${elementID}`)\n\t\t\t\t\t.style('font-weight', 'normal');\n\n\t\t\t\tdebouncedLineHighlight([], 'mouseout');\n\n\t\t\t\t// Dispatch mouse out event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.NODE_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Dispatch hide tooltip event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t// Traverse graph and get all connected links to node\n\tprivate traverse(\n\t\tdirection:\n\t\t\t| { link: 'sourceLinks'; node: 'target' }\n\t\t\t| { link: 'targetLinks'; node: 'source' },\n\t\tnode,\n\t\tvisited = []\n\t) {\n\t\tconst links = node[direction.link].map((element) => {\n\t\t\tvisited.push(element.index);\n\t\t\treturn element[direction.node];\n\t\t});\n\n\t\t// Retrieve the child nodes\n\t\tlinks.forEach((element) => this.traverse(direction, element, visited));\n\t}\n\n\tgetRightArrowIcon() {\n\t\treturn `\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\n\t\t\t<polygon points=\"18 6 16.57 7.393 24.15 15 4 15 4 17 24.15 17 16.57 24.573 18 26 28 16 18 6\"/>\n\t\t\t<rect data-name=\"&lt;Transparent Rectangle&gt;\" style=\"fill: none;\" width=\"32\" height=\"32\"/>\n\t\t</svg>`;\n\t}\n\n\t// Remove event listeners\n\tdestroy() {\n\t\tthis.parent\n\t\t\t.selectAll('path.line,.node-group')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('click', null)\n\t\t\t.on('mouseout', null);\n\t}\n}\n"]}
@@ -113,6 +113,7 @@ var StackedArea = /** @class */ (function (_super) {
113
113
  })
114
114
  .attr('role', Roles.GRAPHICS_SYMBOL)
115
115
  .attr('aria-roledescription', 'area')
116
+ .attr('aria-label', function (d) { return Tools.getProperty(d, 0, groupMapsTo); })
116
117
  .transition()
117
118
  .call(function (t) {
118
119
  return _this.services.transitions.setupTransition({
@@ -1 +1 @@
1
- {"version":3,"file":"area-stacked.js","sourceRoot":"","sources":["area-stacked.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { Tools } from '../../tools';\nimport * as Configuration from '../../configuration';\nimport {\n\tRoles,\n\tEvents,\n\tColorClassNameTypes,\n\tRenderTypes,\n} from '../../interfaces';\n\n// D3 Imports\nimport { area } from 'd3-shape';\n\nexport class StackedArea extends Component {\n\ttype = 'area-stacked';\n\trenderType = RenderTypes.SVG;\n\n\tareaGenerator: any;\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct area on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight area on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tlet svg = this.getComponentContainer({ withinChartClip: true });\n\t\tconst self = this;\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst percentage = Object.keys(options.axes).some(\n\t\t\t(axis) => options.axes[axis].percentage\n\t\t);\n\n\t\tconst stackedData = this.model.getStackedData({\n\t\t\tpercentage,\n\t\t\tgroups: this.configs.groups,\n\t\t});\n\n\t\tconst firstDatum = Tools.getProperty(stackedData, 0, 0);\n\n\t\t// area doesnt have to use the main range and domain axes - they can be mapped to the secondary (in the case of a combo chart)\n\t\t// however area _cannot_ have multiple datasets that are mapped to _different_ ranges and domains so we can use the first data item\n\t\tconst domainAxisPosition = this.services.cartesianScales.getDomainAxisPosition(\n\t\t\t{ firstDatum }\n\t\t);\n\t\tconst rangeAxisPosition = this.services.cartesianScales.getRangeAxisPosition(\n\t\t\t{ firstDatum }\n\t\t);\n\t\tconst mainYScale = this.services.cartesianScales.getScaleByPosition(\n\t\t\trangeAxisPosition\n\t\t);\n\n\t\tconst areas = svg\n\t\t\t.selectAll('path.area')\n\t\t\t.data(stackedData, (d) => Tools.getProperty(d, 0, groupMapsTo));\n\n\t\t// D3 area generator function\n\t\tthis.areaGenerator = area()\n\t\t\t.x((d: any, i) =>\n\t\t\t\tthis.services.cartesianScales.getValueThroughAxisPosition(\n\t\t\t\t\tdomainAxisPosition,\n\t\t\t\t\td.data.sharedStackKey,\n\t\t\t\t\ti\n\t\t\t\t)\n\t\t\t)\n\t\t\t.y0((d) => mainYScale(d[0]))\n\t\t\t.y1((d) => mainYScale(d[1]))\n\t\t\t.curve(this.services.curves.getD3Curve());\n\n\t\tareas.exit().attr('opacity', 0).remove();\n\n\t\tconst enteringAreas = areas.enter().append('path').attr('opacity', 0);\n\n\t\tenteringAreas\n\t\t\t.merge(areas)\n\t\t\t.data(stackedData, (d) => Tools.getProperty(d, 0, groupMapsTo))\n\t\t\t.attr('class', 'area')\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: Tools.getProperty(d, 0, groupMapsTo),\n\t\t\t\t\toriginalClassName: 'area',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) =>\n\t\t\t\tself.model.getFillColor(Tools.getProperty(d, 0, groupMapsTo))\n\t\t\t)\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'area')\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'area-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', Configuration.area.opacity.selected)\n\t\t\t.attr('d', this.areaGenerator);\n\t}\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.area')\n\t\t\t.transition('legend-hover-area')\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'legend-hover-area',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', (d) => {\n\t\t\t\tif (\n\t\t\t\t\tTools.getProperty(d, 0, groupMapsTo) !==\n\t\t\t\t\thoveredElement.datum().name\n\t\t\t\t) {\n\t\t\t\t\treturn Configuration.area.opacity.unselected;\n\t\t\t\t}\n\n\t\t\t\treturn Configuration.area.opacity.selected;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = () => {\n\t\tthis.parent\n\t\t\t.selectAll('path.area')\n\t\t\t.transition('legend-mouseout-area')\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'legend-mouseout-area',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', Configuration.area.opacity.selected);\n\t};\n}\n"]}
1
+ {"version":3,"file":"area-stacked.js","sourceRoot":"","sources":["area-stacked.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { Tools } from '../../tools';\nimport * as Configuration from '../../configuration';\nimport {\n\tRoles,\n\tEvents,\n\tColorClassNameTypes,\n\tRenderTypes,\n} from '../../interfaces';\n\n// D3 Imports\nimport { area } from 'd3-shape';\n\nexport class StackedArea extends Component {\n\ttype = 'area-stacked';\n\trenderType = RenderTypes.SVG;\n\n\tareaGenerator: any;\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct area on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight area on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tlet svg = this.getComponentContainer({ withinChartClip: true });\n\t\tconst self = this;\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst percentage = Object.keys(options.axes).some(\n\t\t\t(axis) => options.axes[axis].percentage\n\t\t);\n\n\t\tconst stackedData = this.model.getStackedData({\n\t\t\tpercentage,\n\t\t\tgroups: this.configs.groups,\n\t\t});\n\n\t\tconst firstDatum = Tools.getProperty(stackedData, 0, 0);\n\n\t\t// area doesnt have to use the main range and domain axes - they can be mapped to the secondary (in the case of a combo chart)\n\t\t// however area _cannot_ have multiple datasets that are mapped to _different_ ranges and domains so we can use the first data item\n\t\tconst domainAxisPosition = this.services.cartesianScales.getDomainAxisPosition(\n\t\t\t{ firstDatum }\n\t\t);\n\t\tconst rangeAxisPosition = this.services.cartesianScales.getRangeAxisPosition(\n\t\t\t{ firstDatum }\n\t\t);\n\t\tconst mainYScale = this.services.cartesianScales.getScaleByPosition(\n\t\t\trangeAxisPosition\n\t\t);\n\n\t\tconst areas = svg\n\t\t\t.selectAll('path.area')\n\t\t\t.data(stackedData, (d) => Tools.getProperty(d, 0, groupMapsTo));\n\n\t\t// D3 area generator function\n\t\tthis.areaGenerator = area()\n\t\t\t.x((d: any, i) =>\n\t\t\t\tthis.services.cartesianScales.getValueThroughAxisPosition(\n\t\t\t\t\tdomainAxisPosition,\n\t\t\t\t\td.data.sharedStackKey,\n\t\t\t\t\ti\n\t\t\t\t)\n\t\t\t)\n\t\t\t.y0((d) => mainYScale(d[0]))\n\t\t\t.y1((d) => mainYScale(d[1]))\n\t\t\t.curve(this.services.curves.getD3Curve());\n\n\t\tareas.exit().attr('opacity', 0).remove();\n\n\t\tconst enteringAreas = areas.enter().append('path').attr('opacity', 0);\n\n\t\tenteringAreas\n\t\t\t.merge(areas)\n\t\t\t.data(stackedData, (d) => Tools.getProperty(d, 0, groupMapsTo))\n\t\t\t.attr('class', 'area')\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: Tools.getProperty(d, 0, groupMapsTo),\n\t\t\t\t\toriginalClassName: 'area',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) =>\n\t\t\t\tself.model.getFillColor(Tools.getProperty(d, 0, groupMapsTo))\n\t\t\t)\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'area')\n\t\t\t.attr('aria-label', (d) => Tools.getProperty(d, 0, groupMapsTo))\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'area-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', Configuration.area.opacity.selected)\n\t\t\t.attr('d', this.areaGenerator);\n\t}\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.area')\n\t\t\t.transition('legend-hover-area')\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'legend-hover-area',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', (d) => {\n\t\t\t\tif (\n\t\t\t\t\tTools.getProperty(d, 0, groupMapsTo) !==\n\t\t\t\t\thoveredElement.datum().name\n\t\t\t\t) {\n\t\t\t\t\treturn Configuration.area.opacity.unselected;\n\t\t\t\t}\n\n\t\t\t\treturn Configuration.area.opacity.selected;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = () => {\n\t\tthis.parent\n\t\t\t.selectAll('path.area')\n\t\t\t.transition('legend-mouseout-area')\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'legend-mouseout-area',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', Configuration.area.opacity.selected);\n\t};\n}\n"]}
@@ -156,9 +156,7 @@ var Area = /** @class */ (function (_super) {
156
156
  }
157
157
  GradientUtils.appendOrUpdateLinearGradient({
158
158
  svg: this.parent,
159
- id: groupedData[0].name.replace(' ', '') +
160
- '_' +
161
- this.gradient_id,
159
+ id: this.services.domUtils.generateElementIDString(groupedData[0].name.replace(' ', '') + "_" + this.gradient_id),
162
160
  x1: '0%',
163
161
  x2: '0%',
164
162
  y1: '0%',
@@ -181,7 +179,7 @@ var Area = /** @class */ (function (_super) {
181
179
  enteringAreas
182
180
  .merge(areas)
183
181
  .style('fill', function (group) {
184
- return "url(#" + group.name.replace(' ', '') + "_" + _this.gradient_id + ")";
182
+ return "url(#" + _this.services.domUtils.generateElementIDString(group.name.replace(' ', '') + "_" + _this.gradient_id) + ")";
185
183
  })
186
184
  .attr('class', 'area')
187
185
  .attr('class', function (group) {