@carbon/charts 1.6.9 → 1.6.14

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 (196) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/axis-chart.js +1 -1
  3. package/axis-chart.js.map +1 -1
  4. package/build/src/components/essentials/tooltip.d.ts +1 -1
  5. package/build/src/services/scales-cartesian.d.ts +1 -1
  6. package/build/src/tools.d.ts +2420 -151
  7. package/bundle.js +1 -1
  8. package/chart.js +1 -1
  9. package/chart.js.map +1 -1
  10. package/charts/alluvial.js +1 -1
  11. package/charts/alluvial.js.map +1 -1
  12. package/charts/area-stacked.js +1 -1
  13. package/charts/area-stacked.js.map +1 -1
  14. package/charts/area.js +1 -1
  15. package/charts/area.js.map +1 -1
  16. package/charts/bar-grouped.js +1 -1
  17. package/charts/bar-grouped.js.map +1 -1
  18. package/charts/bar-simple.js +1 -1
  19. package/charts/bar-simple.js.map +1 -1
  20. package/charts/bar-stacked.js +1 -1
  21. package/charts/bar-stacked.js.map +1 -1
  22. package/charts/boxplot.js +1 -1
  23. package/charts/boxplot.js.map +1 -1
  24. package/charts/bubble.js +1 -1
  25. package/charts/bubble.js.map +1 -1
  26. package/charts/bullet.js +1 -1
  27. package/charts/bullet.js.map +1 -1
  28. package/charts/circle-pack.js +1 -1
  29. package/charts/circle-pack.js.map +1 -1
  30. package/charts/combo.js +1 -1
  31. package/charts/combo.js.map +1 -1
  32. package/charts/donut.js +1 -1
  33. package/charts/donut.js.map +1 -1
  34. package/charts/gauge.js +1 -1
  35. package/charts/gauge.js.map +1 -1
  36. package/charts/heatmap.js +1 -1
  37. package/charts/heatmap.js.map +1 -1
  38. package/charts/histogram.js +1 -1
  39. package/charts/histogram.js.map +1 -1
  40. package/charts/line.js +1 -1
  41. package/charts/line.js.map +1 -1
  42. package/charts/lollipop.js +1 -1
  43. package/charts/lollipop.js.map +1 -1
  44. package/charts/meter.js +1 -1
  45. package/charts/meter.js.map +1 -1
  46. package/charts/pie.js +1 -1
  47. package/charts/pie.js.map +1 -1
  48. package/charts/radar.js +1 -1
  49. package/charts/radar.js.map +1 -1
  50. package/charts/scatter.js +1 -1
  51. package/charts/scatter.js.map +1 -1
  52. package/charts/tree.js +1 -1
  53. package/charts/tree.js.map +1 -1
  54. package/charts/treemap.js +1 -1
  55. package/charts/treemap.js.map +1 -1
  56. package/charts/wordcloud.js +1 -1
  57. package/charts/wordcloud.js.map +1 -1
  58. package/components/axes/axis.js +3 -3
  59. package/components/axes/axis.js.map +1 -1
  60. package/components/axes/grid.js +1 -1
  61. package/components/axes/grid.js.map +1 -1
  62. package/components/axes/hover-axis.js +1 -1
  63. package/components/axes/hover-axis.js.map +1 -1
  64. package/components/axes/ruler-binned.js +1 -1
  65. package/components/axes/ruler-binned.js.map +1 -1
  66. package/components/axes/ruler.js +1 -1
  67. package/components/axes/ruler.js.map +1 -1
  68. package/components/axes/toolbar.js +1 -1
  69. package/components/axes/toolbar.js.map +1 -1
  70. package/components/axes/two-dimensional-axes.js +1 -1
  71. package/components/axes/two-dimensional-axes.js.map +1 -1
  72. package/components/axes/zero-line.js +1 -1
  73. package/components/axes/zero-line.js.map +1 -1
  74. package/components/axes/zoom-bar.js +1 -1
  75. package/components/axes/zoom-bar.js.map +1 -1
  76. package/components/component.js +1 -1
  77. package/components/component.js.map +1 -1
  78. package/components/essentials/color-scale-legend.js +1 -1
  79. package/components/essentials/color-scale-legend.js.map +1 -1
  80. package/components/essentials/highlights.js +1 -1
  81. package/components/essentials/highlights.js.map +1 -1
  82. package/components/essentials/legend.js +1 -1
  83. package/components/essentials/legend.js.map +1 -1
  84. package/components/essentials/modal.js +1 -1
  85. package/components/essentials/modal.js.map +1 -1
  86. package/components/essentials/threshold.js +1 -1
  87. package/components/essentials/threshold.js.map +1 -1
  88. package/components/essentials/title-meter.js +1 -1
  89. package/components/essentials/title-meter.js.map +1 -1
  90. package/components/essentials/title.js +1 -1
  91. package/components/essentials/title.js.map +1 -1
  92. package/components/essentials/tooltip-axis.js +1 -1
  93. package/components/essentials/tooltip-axis.js.map +1 -1
  94. package/components/essentials/tooltip.d.ts +1 -1
  95. package/components/essentials/tooltip.js +33 -27
  96. package/components/essentials/tooltip.js.map +1 -1
  97. package/components/graphs/alluvial.js +1 -1
  98. package/components/graphs/alluvial.js.map +1 -1
  99. package/components/graphs/area-stacked.js +1 -1
  100. package/components/graphs/area-stacked.js.map +1 -1
  101. package/components/graphs/area.js +1 -1
  102. package/components/graphs/area.js.map +1 -1
  103. package/components/graphs/bar-grouped.js +1 -1
  104. package/components/graphs/bar-grouped.js.map +1 -1
  105. package/components/graphs/bar-simple.js +1 -1
  106. package/components/graphs/bar-simple.js.map +1 -1
  107. package/components/graphs/bar-stacked.js +1 -1
  108. package/components/graphs/bar-stacked.js.map +1 -1
  109. package/components/graphs/bar.js +1 -1
  110. package/components/graphs/bar.js.map +1 -1
  111. package/components/graphs/boxplot.js +1 -1
  112. package/components/graphs/boxplot.js.map +1 -1
  113. package/components/graphs/bubble.js +1 -1
  114. package/components/graphs/bubble.js.map +1 -1
  115. package/components/graphs/bullet.js +1 -1
  116. package/components/graphs/bullet.js.map +1 -1
  117. package/components/graphs/circle-pack.js +1 -1
  118. package/components/graphs/circle-pack.js.map +1 -1
  119. package/components/graphs/donut.js +1 -1
  120. package/components/graphs/donut.js.map +1 -1
  121. package/components/graphs/gauge.js +1 -1
  122. package/components/graphs/gauge.js.map +1 -1
  123. package/components/graphs/heatmap.js +1 -1
  124. package/components/graphs/heatmap.js.map +1 -1
  125. package/components/graphs/histogram.js +1 -1
  126. package/components/graphs/histogram.js.map +1 -1
  127. package/components/graphs/line.js +1 -1
  128. package/components/graphs/line.js.map +1 -1
  129. package/components/graphs/lollipop.js +1 -1
  130. package/components/graphs/lollipop.js.map +1 -1
  131. package/components/graphs/meter.js +1 -1
  132. package/components/graphs/meter.js.map +1 -1
  133. package/components/graphs/pie.js +1 -1
  134. package/components/graphs/pie.js.map +1 -1
  135. package/components/graphs/radar.js +1 -1
  136. package/components/graphs/radar.js.map +1 -1
  137. package/components/graphs/scatter-stacked.js +1 -1
  138. package/components/graphs/scatter-stacked.js.map +1 -1
  139. package/components/graphs/scatter.js +1 -1
  140. package/components/graphs/scatter.js.map +1 -1
  141. package/components/graphs/skeleton-lines.js +1 -1
  142. package/components/graphs/skeleton-lines.js.map +1 -1
  143. package/components/graphs/skeleton.js +1 -1
  144. package/components/graphs/skeleton.js.map +1 -1
  145. package/components/graphs/tree.js +1 -1
  146. package/components/graphs/tree.js.map +1 -1
  147. package/components/graphs/treemap.js +1 -1
  148. package/components/graphs/treemap.js.map +1 -1
  149. package/components/graphs/wordcloud.js +1 -1
  150. package/components/graphs/wordcloud.js.map +1 -1
  151. package/components/layout/layout.js +1 -1
  152. package/components/layout/layout.js.map +1 -1
  153. package/configuration.js +1 -1
  154. package/configuration.js.map +1 -1
  155. package/demo/styles.css +1 -1
  156. package/demo/styles.css.map +1 -1
  157. package/demo/styles.min.css +1 -1
  158. package/demo/styles.min.css.map +1 -1
  159. package/model/boxplot.js +1 -1
  160. package/model/boxplot.js.map +1 -1
  161. package/model/bullet.js +1 -1
  162. package/model/bullet.js.map +1 -1
  163. package/model/cartesian-charts.js +1 -1
  164. package/model/cartesian-charts.js.map +1 -1
  165. package/model/circle-pack.js +1 -1
  166. package/model/circle-pack.js.map +1 -1
  167. package/model/heatmap.js +1 -1
  168. package/model/heatmap.js.map +1 -1
  169. package/model/meter.js +1 -1
  170. package/model/meter.js.map +1 -1
  171. package/model/model.js +1 -1
  172. package/model/model.js.map +1 -1
  173. package/model/radar.js +1 -1
  174. package/model/radar.js.map +1 -1
  175. package/model/treemap.js +1 -1
  176. package/model/treemap.js.map +1 -1
  177. package/package.json +1 -1
  178. package/services/essentials/dom-utils.js +1 -1
  179. package/services/essentials/dom-utils.js.map +1 -1
  180. package/services/essentials/transitions.js +1 -1
  181. package/services/essentials/transitions.js.map +1 -1
  182. package/services/scales-cartesian.js +1 -1
  183. package/services/scales-cartesian.js.map +1 -1
  184. package/services/time-series.js +1 -1
  185. package/services/time-series.js.map +1 -1
  186. package/services/zoom.js +1 -1
  187. package/services/zoom.js.map +1 -1
  188. package/styles/components/_tooltip.scss +4 -1
  189. package/styles.css +1 -1
  190. package/styles.css.map +1 -1
  191. package/styles.min.css +1 -1
  192. package/styles.min.css.map +1 -1
  193. package/tools.d.ts +141 -155
  194. package/tools.js +315 -344
  195. package/tools.js.map +1 -1
  196. package/tsconfig.tsbuildinfo +91 -91
@@ -1 +1 @@
1
- {"version":3,"file":"scatter.js","sourceRoot":"","sources":["scatter.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport {\n\tRoles,\n\tEvents,\n\tColorClassNameTypes,\n\tRenderTypes,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select, Selection } from 'd3-selection';\n\nexport class Scatter extends Component {\n\ttype = 'scatter';\n\trenderType = RenderTypes.SVG;\n\n\tscatterData: any;\n\n\tinit() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct circle on legend item hovers\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\t// Un-highlight circles on legend item mouseouts\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\n\t\tconst { fadeInOnChartHolderMouseover } = this.configs;\n\t\tif (fadeInOnChartHolderMouseover) {\n\t\t\t// Fade-in scatter circles\n\t\t\tevents.addEventListener(\n\t\t\t\tEvents.Chart.MOUSEOVER,\n\t\t\t\tthis.handleChartHolderOnHover\n\t\t\t);\n\t\t\t// Fade-out scatter circles\n\t\t\tevents.addEventListener(\n\t\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\t\tthis.handleChartHolderOnMouseOut\n\t\t\t);\n\t\t}\n\t}\n\n\tfilterBasedOnZoomDomain(data) {\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\tdata\n\t\t);\n\t\tconst zoomDomain = this.model.get('zoomDomain');\n\t\tif (zoomDomain !== undefined) {\n\t\t\treturn data.filter(\n\t\t\t\t(d) =>\n\t\t\t\t\td[domainIdentifier].getTime() >= zoomDomain[0].getTime() &&\n\t\t\t\t\td[domainIdentifier].getTime() <= zoomDomain[1].getTime()\n\t\t\t);\n\t\t}\n\t\treturn data;\n\t}\n\n\tgetScatterData() {\n\t\tconst options = this.getOptions();\n\n\t\tconst { stacked } = this.configs;\n\n\t\tlet scatterData;\n\t\tif (stacked) {\n\t\t\tconst percentage = Object.keys(options.axes).some(\n\t\t\t\t(axis) => options.axes[axis].percentage\n\t\t\t);\n\t\t\tscatterData = this.model.getStackedData({\n\t\t\t\tgroups: this.configs.groups,\n\t\t\t\tpercentage,\n\t\t\t});\n\t\t} else {\n\t\t\tscatterData = this.model\n\t\t\t\t.getDisplayData(this.configs.groups)\n\t\t\t\t.filter((d) => {\n\t\t\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier(\n\t\t\t\t\t\td\n\t\t\t\t\t);\n\t\t\t\t\treturn (\n\t\t\t\t\t\td[rangeIdentifier] !== undefined &&\n\t\t\t\t\t\td[rangeIdentifier] !== null\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\n\t\t// filter out datapoints that aren't part of the zoomed domain\n\t\treturn this.filterBasedOnZoomDomain(scatterData);\n\t}\n\n\trender(animate: boolean) {\n\t\tconst isScatterEnabled =\n\t\t\tTools.getProperty(this.getOptions(), 'points', 'enabled') ||\n\t\t\tTools.getProperty(this.getOptions(), 'bubble', 'enabled');\n\n\t\tif (!isScatterEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\n\t\t// Update data on dot groups\n\t\tconst circles = svg\n\t\t\t.selectAll('circle.dot')\n\t\t\t.data(\n\t\t\t\tthis.getScatterData(),\n\t\t\t\t(datum) => `${datum[groupMapsTo]}-${datum[domainIdentifier]}`\n\t\t\t);\n\n\t\t// Remove circles that need to be removed\n\t\tcircles.exit().attr('opacity', 0).remove();\n\n\t\t// Add the dot groups that need to be introduced\n\t\tconst enteringCircles = circles\n\t\t\t.enter()\n\t\t\t.append('circle')\n\t\t\t.classed('dot', true)\n\t\t\t.attr('opacity', 0);\n\n\t\t// Apply styling & position\n\t\tconst circlesToStyle = enteringCircles.merge(circles);\n\t\tthis.styleCircles(circlesToStyle, animate);\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\t// A value is an anomaly if is above all defined domain and range thresholds\n\tisDatapointThresholdAnomaly(datum: any, index: number) {\n\t\tconst { handleThresholds } = this.configs;\n\t\tif (!handleThresholds) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst { cartesianScales } = this.services;\n\t\tconst orientation = cartesianScales.getOrientation();\n\n\t\t// Get highest domain and range thresholds\n\t\tconst [\n\t\t\txThreshold,\n\t\t\tyThreshold,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\tthis.services.cartesianScales.getHighestDomainThreshold(),\n\t\t\tthis.services.cartesianScales.getHighestRangeThreshold(),\n\t\t\torientation\n\t\t);\n\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\t(d, i) => this.services.cartesianScales.getDomainValue(d, i),\n\t\t\t(d, i) => this.services.cartesianScales.getRangeValue(d, i),\n\t\t\torientation\n\t\t);\n\n\t\t// Get datum x and y values\n\t\tconst xValue = getXValue(datum, index);\n\t\tconst yValue = getYValue(datum, index);\n\n\t\t// To be an anomaly, the value has to be higher or equal than the threshold value\n\t\t// (if are present, both range and domain threshold values)\n\t\tif (yThreshold && xThreshold) {\n\t\t\treturn (\n\t\t\t\tyValue <= yThreshold.scaleValue &&\n\t\t\t\txValue >= xThreshold.scaleValue\n\t\t\t);\n\t\t}\n\n\t\tif (yThreshold) {\n\t\t\treturn yValue <= yThreshold.scaleValue;\n\t\t}\n\n\t\tif (xThreshold) {\n\t\t\treturn xValue >= xThreshold.scaleValue;\n\t\t}\n\t}\n\n\tstyleCircles(selection: Selection<any, any, any, any>, animate: boolean) {\n\t\t// Chart options mixed with the internal configurations\n\t\tconst options = this.getOptions();\n\t\tconst { filled, fillOpacity } = options.points;\n\t\tconst { cartesianScales, transitions } = this.services;\n\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst getDomainValue = (d, i) => cartesianScales.getDomainValue(d, i);\n\t\tconst getRangeValue = (d, i) => cartesianScales.getRangeValue(d, i);\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\tgetDomainValue,\n\t\t\tgetRangeValue,\n\t\t\tcartesianScales.getOrientation()\n\t\t);\n\n\t\tconst { fadeInOnChartHolderMouseover } = this.configs;\n\t\tselection\n\t\t\t.raise()\n\t\t\t.classed('dot', true)\n\t\t\t.attr('class', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\tconst isFilled = this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t\tconst classNamesNeeded = isFilled\n\t\t\t\t\t? [ColorClassNameTypes.FILL, ColorClassNameTypes.STROKE]\n\t\t\t\t\t: [ColorClassNameTypes.STROKE];\n\n\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: classNamesNeeded,\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'dot',\n\t\t\t\t});\n\t\t\t})\n\t\t\t// Set class to highlight the dots that are above all the thresholds, in both directions (vertical and horizontal)\n\t\t\t.classed('threshold-anomaly', (d, i) =>\n\t\t\t\tthis.isDatapointThresholdAnomaly(d, i)\n\t\t\t)\n\t\t\t.classed('filled', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t})\n\t\t\t.classed('unfilled', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn !this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t})\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: 'scatter-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('cx', getXValue)\n\t\t\t.attr('cy', getYValue)\n\t\t\t.attr('r', options.points.radius)\n\t\t\t.style('fill', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\tif (\n\t\t\t\t\tthis.model.getIsFilled(\n\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\td,\n\t\t\t\t\t\tfilled\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn this.model.getFillColor(\n\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\td\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.style('stroke', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn this.model.getStrokeColor(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td\n\t\t\t\t);\n\t\t\t})\n\t\t\t.attr('fill-opacity', filled ? fillOpacity : 1)\n\t\t\t.attr('opacity', fadeInOnChartHolderMouseover ? 0 : 1)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'point')\n\t\t\t.attr('aria-label', (d) => {\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier(d);\n\t\t\t\treturn d[rangeIdentifier];\n\t\t\t});\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\thandleChartHolderOnHover = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition('chart-holder-hover-scatter')\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: 'chart-holder-hover-scatter',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\thandleChartHolderOnMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition('chart-holder-mouseout-scatter')\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: 'chart-holder-mouseout-scatter',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', 0);\n\t};\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition('legend-hover-scatter')\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-scatter',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition('legend-mouseout-scatter')\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-scatter',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\t// This is extended in bubble graphs\n\tgetTooltipAdditionalItems(datum) {\n\t\treturn null;\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tconst { groupMapsTo } = self.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('circle')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.attr('class', (d) =>\n\t\t\t\t\t\tself.model.getColorClassName({\n\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\t\t\toriginalClassName: hoveredElement.attr('class'),\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.style('fill', (d) => {\n\t\t\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\t\td\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn self.model.getFillColor(\n\t\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\t\td\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t\t.classed('unfilled', false);\n\n\t\t\t\t// Show tooltip\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\tdata: [datum],\n\t\t\t\t\tadditionalItems: self.getTooltipAdditionalItems(datum),\n\t\t\t\t});\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_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\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_MOUSEMOVE,\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\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 event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_CLICK,\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})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\tif (!self.configs.filled) {\n\t\t\t\t\tconst { filled } = self.getOptions().points;\n\t\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\tdatum\n\t\t\t\t\t);\n\t\t\t\t\tconst isFilled = self.model.getIsFilled(\n\t\t\t\t\t\tdatum[groupMapsTo],\n\t\t\t\t\t\tdatum[domainIdentifier],\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t\tfilled\n\t\t\t\t\t);\n\t\t\t\t\thoveredElement\n\t\t\t\t\t\t.classed('unfilled', !isFilled)\n\t\t\t\t\t\t.style('fill', (d) => {\n\t\t\t\t\t\t\tif (isFilled || filled) {\n\t\t\t\t\t\t\t\treturn self.model.getFillColor(\n\t\t\t\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\t\t\t\td\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_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// Hide tooltip\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\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('circle')\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst { events } = this.services;\n\t\tevents.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOVER,\n\t\t\tthis.handleChartHolderOnHover\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleChartHolderOnMouseOut\n\t\t);\n\t}\n}\n"]}
1
+ {"version":3,"file":"scatter.js","sourceRoot":"","sources":["scatter.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACN,KAAK,EACL,MAAM,EACN,mBAAmB,EACnB,WAAW,GACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,KAAK,MAAM,aAAa,CAAC;AAErC,aAAa;AACb,OAAO,EAAE,MAAM,EAAa,MAAM,cAAc,CAAC;AAEjD;IAA6B,2BAAS;IAAtC;QAAA,qEAmfC;QAlfA,UAAI,GAAG,SAAS,CAAC;QACjB,gBAAU,GAAG,WAAW,CAAC,GAAG,CAAC;QA8R7B,8BAAwB,GAAG,UAAC,KAAkB;YAC7C,KAAI,CAAC,MAAM;iBACT,SAAS,CAAC,YAAY,CAAC;iBACvB,UAAU,CAAC,4BAA4B,CAAC;iBACxC,IAAI,CAAC,UAAC,CAAC;gBACP,OAAA,KAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC;oBACzC,UAAU,EAAE,CAAC;oBACb,IAAI,EAAE,4BAA4B;iBAClC,CAAC;YAHF,CAGE,CACF;iBACA,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC;QAEF,iCAA2B,GAAG,UAAC,KAAkB;YAChD,KAAI,CAAC,MAAM;iBACT,SAAS,CAAC,YAAY,CAAC;iBACvB,UAAU,CAAC,+BAA+B,CAAC;iBAC3C,IAAI,CAAC,UAAC,CAAC;gBACP,OAAA,KAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC;oBACzC,UAAU,EAAE,CAAC;oBACb,IAAI,EAAE,+BAA+B;iBACrC,CAAC;YAHF,CAGE,CACF;iBACA,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC;QAEF,yBAAmB,GAAG,UAAC,KAAkB;YAChC,IAAA,4CAAc,CAAkB;YAEhC,IAAA,iDAAW,CAA4B;YAE/C,KAAI,CAAC,MAAM;iBACT,SAAS,CAAC,YAAY,CAAC;iBACvB,UAAU,CAAC,sBAAsB,CAAC;iBAClC,IAAI,CAAC,UAAC,CAAC;gBACP,OAAA,KAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC;oBACzC,UAAU,EAAE,CAAC;oBACb,IAAI,EAAE,sBAAsB;iBAC5B,CAAC;YAHF,CAGE,CACF;iBACA,IAAI,CAAC,SAAS,EAAE,UAAC,CAAC;gBAClB,OAAA,CAAC,CAAC,WAAW,CAAC,KAAK,cAAc,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAA3D,CAA2D,CAC3D,CAAC;QACJ,CAAC,CAAC;QAEF,0BAAoB,GAAG,UAAC,KAAkB;YACzC,KAAI,CAAC,MAAM;iBACT,SAAS,CAAC,YAAY,CAAC;iBACvB,UAAU,CAAC,yBAAyB,CAAC;iBACrC,IAAI,CAAC,UAAC,CAAC;gBACP,OAAA,KAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC;oBACzC,UAAU,EAAE,CAAC;oBACb,IAAI,EAAE,yBAAyB;iBAC/B,CAAC;YAHF,CAGE,CACF;iBACA,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC;;IA2JH,CAAC;IA7eA,sBAAI,GAAJ;QACS,IAAA,6BAAM,CAAmB;QACjC,iDAAiD;QACjD,MAAM,CAAC,gBAAgB,CACtB,MAAM,CAAC,MAAM,CAAC,UAAU,EACxB,IAAI,CAAC,mBAAmB,CACxB,CAAC;QACF,gDAAgD;QAChD,MAAM,CAAC,gBAAgB,CACtB,MAAM,CAAC,MAAM,CAAC,aAAa,EAC3B,IAAI,CAAC,oBAAoB,CACzB,CAAC;QAEM,IAAA,wEAA4B,CAAkB;QACtD,IAAI,4BAA4B,EAAE;YACjC,0BAA0B;YAC1B,MAAM,CAAC,gBAAgB,CACtB,MAAM,CAAC,KAAK,CAAC,SAAS,EACtB,IAAI,CAAC,wBAAwB,CAC7B,CAAC;YACF,2BAA2B;YAC3B,MAAM,CAAC,gBAAgB,CACtB,MAAM,CAAC,KAAK,CAAC,QAAQ,EACrB,IAAI,CAAC,2BAA2B,CAChC,CAAC;SACF;IACF,CAAC;IAED,yCAAuB,GAAvB,UAAwB,IAAI;QAC3B,IAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,mBAAmB,CACzE,IAAI,CACJ,CAAC;QACF,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,UAAU,KAAK,SAAS,EAAE;YAC7B,OAAO,IAAI,CAAC,MAAM,CACjB,UAAC,CAAC;gBACD,OAAA,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;oBACxD,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;YADxD,CACwD,CACzD,CAAC;SACF;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,gCAAc,GAAd;QAAA,iBA8BC;QA7BA,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAE1B,IAAA,8BAAO,CAAkB;QAEjC,IAAI,WAAW,CAAC;QAChB,IAAI,OAAO,EAAE;YACZ,IAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAChD,UAAC,IAAI,IAAK,OAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAA7B,CAA6B,CACvC,CAAC;YACF,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;gBACvC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC3B,UAAU,YAAA;aACV,CAAC,CAAC;SACH;aAAM;YACN,WAAW,GAAG,IAAI,CAAC,KAAK;iBACtB,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;iBACnC,MAAM,CAAC,UAAC,CAAC;gBACT,IAAM,eAAe,GAAG,KAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,kBAAkB,CACvE,CAAC,CACD,CAAC;gBACF,OAAO,CACN,CAAC,CAAC,eAAe,CAAC,KAAK,SAAS;oBAChC,CAAC,CAAC,eAAe,CAAC,KAAK,IAAI,CAC3B,CAAC;YACH,CAAC,CAAC,CAAC;SACJ;QAED,8DAA8D;QAC9D,OAAO,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAED,wBAAM,GAAN,UAAO,OAAgB;QACtB,IAAM,gBAAgB,GACrB,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC;YACzD,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAE3D,IAAI,CAAC,gBAAgB,EAAE;YACtB,OAAO;SACP;QAED,qBAAqB;QACrB,IAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QAElE,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,IAAA,sCAAW,CAAkB;QAErC,IAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC;QAE7E,4BAA4B;QAC5B,IAAM,OAAO,GAAG,GAAG;aACjB,SAAS,CAAC,YAAY,CAAC;aACvB,IAAI,CACJ,IAAI,CAAC,cAAc,EAAE,EACrB,UAAC,KAAK,IAAK,OAAG,KAAK,CAAC,WAAW,CAAC,SAAI,KAAK,CAAC,gBAAgB,CAAG,EAAlD,CAAkD,CAC7D,CAAC;QAEH,yCAAyC;QACzC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAE3C,gDAAgD;QAChD,IAAM,eAAe,GAAG,OAAO;aAC7B,KAAK,EAAE;aACP,MAAM,CAAC,QAAQ,CAAC;aAChB,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;aACpB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAErB,2BAA2B;QAC3B,IAAM,cAAc,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAE3C,wCAAwC;QACxC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAED,4EAA4E;IAC5E,6CAA2B,GAA3B,UAA4B,KAAU,EAAE,KAAa;QAArD,iBAgDC;QA/CQ,IAAA,gDAAgB,CAAkB;QAC1C,IAAI,CAAC,gBAAgB,EAAE;YACtB,OAAO,KAAK,CAAC;SACb;QAEO,IAAA,+CAAe,CAAmB;QAC1C,IAAM,WAAW,GAAG,eAAe,CAAC,cAAc,EAAE,CAAC;QAErD,0CAA0C;QACpC,IAAA,iLAOL,EANA,kBAAU,EACV,kBAKA,CAAC;QAEI,IAAA,6NAOL,EANA,iBAAS,EACT,iBAKA,CAAC;QAEF,2BAA2B;QAC3B,IAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACvC,IAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEvC,iFAAiF;QACjF,2DAA2D;QAC3D,IAAI,UAAU,IAAI,UAAU,EAAE;YAC7B,OAAO,CACN,MAAM,IAAI,UAAU,CAAC,UAAU;gBAC/B,MAAM,IAAI,UAAU,CAAC,UAAU,CAC/B,CAAC;SACF;QAED,IAAI,UAAU,EAAE;YACf,OAAO,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC;SACvC;QAED,IAAI,UAAU,EAAE;YACf,OAAO,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC;SACvC;IACF,CAAC;IAED,8BAAY,GAAZ,UAAa,SAAwC,EAAE,OAAgB;QAAvE,iBA+GC;QA9GA,uDAAuD;QACvD,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5B,IAAA,mBAAwC,EAAtC,kBAAM,EAAE,4BAA8B,CAAC;QACzC,IAAA,kBAAgD,EAA9C,oCAAe,EAAE,4BAA6B,CAAC;QAE/C,IAAA,sCAAW,CAAkB;QAErC,IAAM,cAAc,GAAG,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,eAAe,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,EAApC,CAAoC,CAAC;QACtE,IAAM,aAAa,GAAG,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,eAAe,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAnC,CAAmC,CAAC;QAC9D,IAAA,gHAOL,EANA,iBAAS,EACT,iBAKA,CAAC;QAEM,IAAA,wEAA4B,CAAkB;QACtD,SAAS;aACP,KAAK,EAAE;aACP,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;aACpB,IAAI,CAAC,OAAO,EAAE,UAAC,CAAC;YAChB,IAAM,gBAAgB,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAChE,IAAM,QAAQ,GAAG,KAAI,CAAC,KAAK,CAAC,WAAW,CACtC,CAAC,CAAC,WAAW,CAAC,EACd,CAAC,CAAC,gBAAgB,CAAC,EACnB,CAAC,EACD,MAAM,CACN,CAAC;YACF,IAAM,gBAAgB,GAAG,QAAQ;gBAChC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC;gBACxD,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAEhC,OAAO,KAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBACnC,cAAc,EAAE,gBAAgB;gBAChC,aAAa,EAAE,CAAC,CAAC,WAAW,CAAC;gBAC7B,iBAAiB,EAAE,KAAK;aACxB,CAAC,CAAC;QACJ,CAAC,CAAC;YACF,kHAAkH;aACjH,OAAO,CAAC,mBAAmB,EAAE,UAAC,CAAC,EAAE,CAAC;YAClC,OAAA,KAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC;QAAtC,CAAsC,CACtC;aACA,OAAO,CAAC,QAAQ,EAAE,UAAC,CAAC;YACpB,IAAM,gBAAgB,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAChE,OAAO,KAAI,CAAC,KAAK,CAAC,WAAW,CAC5B,CAAC,CAAC,WAAW,CAAC,EACd,CAAC,CAAC,gBAAgB,CAAC,EACnB,CAAC,EACD,MAAM,CACN,CAAC;QACH,CAAC,CAAC;aACD,OAAO,CAAC,UAAU,EAAE,UAAC,CAAC;YACtB,IAAM,gBAAgB,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,WAAW,CAC7B,CAAC,CAAC,WAAW,CAAC,EACd,CAAC,CAAC,gBAAgB,CAAC,EACnB,CAAC,EACD,MAAM,CACN,CAAC;QACH,CAAC,CAAC;aACD,UAAU,EAAE;aACZ,IAAI,CAAC,UAAC,CAAC;YACP,OAAA,KAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC;gBACzC,UAAU,EAAE,CAAC;gBACb,IAAI,EAAE,sBAAsB;gBAC5B,OAAO,SAAA;aACP,CAAC;QAJF,CAIE,CACF;aACA,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;aACrB,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;aACrB,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;aAChC,KAAK,CAAC,MAAM,EAAE,UAAC,CAAC;YAChB,IAAM,gBAAgB,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAChE,IACC,KAAI,CAAC,KAAK,CAAC,WAAW,CACrB,CAAC,CAAC,WAAW,CAAC,EACd,CAAC,CAAC,gBAAgB,CAAC,EACnB,CAAC,EACD,MAAM,CACN,EACA;gBACD,OAAO,KAAI,CAAC,KAAK,CAAC,YAAY,CAC7B,CAAC,CAAC,WAAW,CAAC,EACd,CAAC,CAAC,gBAAgB,CAAC,EACnB,CAAC,CACD,CAAC;aACF;QACF,CAAC,CAAC;aACD,KAAK,CAAC,QAAQ,EAAE,UAAC,CAAC;YAClB,IAAM,gBAAgB,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAChE,OAAO,KAAI,CAAC,KAAK,CAAC,cAAc,CAC/B,CAAC,CAAC,WAAW,CAAC,EACd,CAAC,CAAC,gBAAgB,CAAC,EACnB,CAAC,CACD,CAAC;QACH,CAAC,CAAC;aACD,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9C,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,OAAO;aACN,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC;aACnC,IAAI,CAAC,sBAAsB,EAAE,OAAO,CAAC;aACrC,IAAI,CAAC,YAAY,EAAE,UAAC,CAAC;YACrB,IAAM,eAAe,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEJ,wCAAwC;QACxC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IA4DD,oCAAoC;IACpC,2CAAyB,GAAzB,UAA0B,KAAK;QAC9B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,mCAAiB,GAAjB;QACC,IAAM,IAAI,GAAG,IAAI,CAAC;QACV,IAAA,gDAAW,CAA4B;QAE/C,IAAI,CAAC,MAAM;aACT,SAAS,CAAC,QAAQ,CAAC;aACnB,EAAE,CAAC,WAAW,EAAE,UAAU,KAAK,EAAE,KAAK;YACtC,IAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAEpC,cAAc;iBACZ,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC;iBACxB,IAAI,CAAC,OAAO,EAAE,UAAC,CAAC;gBAChB,OAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;oBAC5B,cAAc,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;oBAC1C,aAAa,EAAE,CAAC,CAAC,WAAW,CAAC;oBAC7B,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;iBAC/C,CAAC;YAJF,CAIE,CACF;iBACA,KAAK,CAAC,MAAM,EAAE,UAAC,CAAC;gBAChB,IAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,mBAAmB,CACzE,CAAC,CACD,CAAC;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAC7B,CAAC,CAAC,WAAW,CAAC,EACd,CAAC,CAAC,gBAAgB,CAAC,EACnB,CAAC,CACD,CAAC;YACH,CAAC,CAAC;iBACD,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAE7B,eAAe;YACf,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;gBACvD,KAAK,OAAA;gBACL,cAAc,gBAAA;gBACd,IAAI,EAAE,CAAC,KAAK,CAAC;gBACb,eAAe,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;aACtD,CAAC,CAAC;YAEH,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CACjC,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAChC;gBACC,KAAK,OAAA;gBACL,OAAO,EAAE,cAAc;gBACvB,KAAK,OAAA;aACL,CACD,CAAC;QACH,CAAC,CAAC;aACD,EAAE,CAAC,WAAW,EAAE,UAAU,KAAK,EAAE,KAAK;YACtC,IAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAEpC,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CACjC,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAChC;gBACC,KAAK,OAAA;gBACL,OAAO,EAAE,cAAc;gBACvB,KAAK,OAAA;aACL,CACD,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;gBACvD,KAAK,OAAA;aACL,CAAC,CAAC;QACJ,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,EAAE,KAAK;YAClC,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CACjC,MAAM,CAAC,OAAO,CAAC,aAAa,EAC5B;gBACC,KAAK,OAAA;gBACL,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC;gBACrB,KAAK,OAAA;aACL,CACD,CAAC;QACH,CAAC,CAAC;aACD,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,EAAE,KAAK;YACrC,IAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAEzC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACjB,IAAA,0CAAM,CAA8B;gBAC5C,IAAM,kBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,mBAAmB,CACzE,KAAK,CACL,CAAC;gBACF,IAAM,UAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CACtC,KAAK,CAAC,WAAW,CAAC,EAClB,KAAK,CAAC,kBAAgB,CAAC,EACvB,KAAK,EACL,QAAM,CACN,CAAC;gBACF,cAAc;qBACZ,OAAO,CAAC,UAAU,EAAE,CAAC,UAAQ,CAAC;qBAC9B,KAAK,CAAC,MAAM,EAAE,UAAC,CAAC;oBAChB,IAAI,UAAQ,IAAI,QAAM,EAAE;wBACvB,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAC7B,CAAC,CAAC,WAAW,CAAC,EACd,CAAC,CAAC,kBAAgB,CAAC,EACnB,CAAC,CACD,CAAC;qBACF;oBACD,OAAO,IAAI,CAAC;gBACb,CAAC,CAAC,CAAC;aACJ;YAED,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CACjC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAC/B;gBACC,KAAK,OAAA;gBACL,OAAO,EAAE,cAAc;gBACvB,KAAK,OAAA;aACL,CACD,CAAC;YAEF,eAAe;YACf,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;gBACvD,cAAc,gBAAA;aACd,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yBAAO,GAAP;QACC,yBAAyB;QACzB,IAAI,CAAC,MAAM;aACT,SAAS,CAAC,QAAQ,CAAC;aACnB,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC;aACrB,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEvB,0BAA0B;QAClB,IAAA,6BAAM,CAAmB;QACjC,MAAM,CAAC,mBAAmB,CACzB,MAAM,CAAC,MAAM,CAAC,UAAU,EACxB,IAAI,CAAC,mBAAmB,CACxB,CAAC;QACF,MAAM,CAAC,mBAAmB,CACzB,MAAM,CAAC,MAAM,CAAC,aAAa,EAC3B,IAAI,CAAC,oBAAoB,CACzB,CAAC;QACF,MAAM,CAAC,mBAAmB,CACzB,MAAM,CAAC,KAAK,CAAC,SAAS,EACtB,IAAI,CAAC,wBAAwB,CAC7B,CAAC;QACF,MAAM,CAAC,mBAAmB,CACzB,MAAM,CAAC,KAAK,CAAC,QAAQ,EACrB,IAAI,CAAC,2BAA2B,CAChC,CAAC;IACH,CAAC;IACF,cAAC;AAAD,CAAC,AAnfD,CAA6B,SAAS,GAmfrC","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport {\n\tRoles,\n\tEvents,\n\tColorClassNameTypes,\n\tRenderTypes,\n} from '../../interfaces';\nimport * as Tools from '../../tools';\n\n// D3 Imports\nimport { select, Selection } from 'd3-selection';\n\nexport class Scatter extends Component {\n\ttype = 'scatter';\n\trenderType = RenderTypes.SVG;\n\n\tscatterData: any;\n\n\tinit() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct circle on legend item hovers\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\t// Un-highlight circles on legend item mouseouts\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\n\t\tconst { fadeInOnChartHolderMouseover } = this.configs;\n\t\tif (fadeInOnChartHolderMouseover) {\n\t\t\t// Fade-in scatter circles\n\t\t\tevents.addEventListener(\n\t\t\t\tEvents.Chart.MOUSEOVER,\n\t\t\t\tthis.handleChartHolderOnHover\n\t\t\t);\n\t\t\t// Fade-out scatter circles\n\t\t\tevents.addEventListener(\n\t\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\t\tthis.handleChartHolderOnMouseOut\n\t\t\t);\n\t\t}\n\t}\n\n\tfilterBasedOnZoomDomain(data) {\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\tdata\n\t\t);\n\t\tconst zoomDomain = this.model.get('zoomDomain');\n\t\tif (zoomDomain !== undefined) {\n\t\t\treturn data.filter(\n\t\t\t\t(d) =>\n\t\t\t\t\td[domainIdentifier].getTime() >= zoomDomain[0].getTime() &&\n\t\t\t\t\td[domainIdentifier].getTime() <= zoomDomain[1].getTime()\n\t\t\t);\n\t\t}\n\t\treturn data;\n\t}\n\n\tgetScatterData() {\n\t\tconst options = this.getOptions();\n\n\t\tconst { stacked } = this.configs;\n\n\t\tlet scatterData;\n\t\tif (stacked) {\n\t\t\tconst percentage = Object.keys(options.axes).some(\n\t\t\t\t(axis) => options.axes[axis].percentage\n\t\t\t);\n\t\t\tscatterData = this.model.getStackedData({\n\t\t\t\tgroups: this.configs.groups,\n\t\t\t\tpercentage,\n\t\t\t});\n\t\t} else {\n\t\t\tscatterData = this.model\n\t\t\t\t.getDisplayData(this.configs.groups)\n\t\t\t\t.filter((d) => {\n\t\t\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier(\n\t\t\t\t\t\td\n\t\t\t\t\t);\n\t\t\t\t\treturn (\n\t\t\t\t\t\td[rangeIdentifier] !== undefined &&\n\t\t\t\t\t\td[rangeIdentifier] !== null\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\n\t\t// filter out datapoints that aren't part of the zoomed domain\n\t\treturn this.filterBasedOnZoomDomain(scatterData);\n\t}\n\n\trender(animate: boolean) {\n\t\tconst isScatterEnabled =\n\t\t\tTools.getProperty(this.getOptions(), 'points', 'enabled') ||\n\t\t\tTools.getProperty(this.getOptions(), 'bubble', 'enabled');\n\n\t\tif (!isScatterEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\n\t\t// Update data on dot groups\n\t\tconst circles = svg\n\t\t\t.selectAll('circle.dot')\n\t\t\t.data(\n\t\t\t\tthis.getScatterData(),\n\t\t\t\t(datum) => `${datum[groupMapsTo]}-${datum[domainIdentifier]}`\n\t\t\t);\n\n\t\t// Remove circles that need to be removed\n\t\tcircles.exit().attr('opacity', 0).remove();\n\n\t\t// Add the dot groups that need to be introduced\n\t\tconst enteringCircles = circles\n\t\t\t.enter()\n\t\t\t.append('circle')\n\t\t\t.classed('dot', true)\n\t\t\t.attr('opacity', 0);\n\n\t\t// Apply styling & position\n\t\tconst circlesToStyle = enteringCircles.merge(circles);\n\t\tthis.styleCircles(circlesToStyle, animate);\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\t// A value is an anomaly if is above all defined domain and range thresholds\n\tisDatapointThresholdAnomaly(datum: any, index: number) {\n\t\tconst { handleThresholds } = this.configs;\n\t\tif (!handleThresholds) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst { cartesianScales } = this.services;\n\t\tconst orientation = cartesianScales.getOrientation();\n\n\t\t// Get highest domain and range thresholds\n\t\tconst [\n\t\t\txThreshold,\n\t\t\tyThreshold,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\tthis.services.cartesianScales.getHighestDomainThreshold(),\n\t\t\tthis.services.cartesianScales.getHighestRangeThreshold(),\n\t\t\torientation\n\t\t);\n\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\t(d, i) => this.services.cartesianScales.getDomainValue(d, i),\n\t\t\t(d, i) => this.services.cartesianScales.getRangeValue(d, i),\n\t\t\torientation\n\t\t);\n\n\t\t// Get datum x and y values\n\t\tconst xValue = getXValue(datum, index);\n\t\tconst yValue = getYValue(datum, index);\n\n\t\t// To be an anomaly, the value has to be higher or equal than the threshold value\n\t\t// (if are present, both range and domain threshold values)\n\t\tif (yThreshold && xThreshold) {\n\t\t\treturn (\n\t\t\t\tyValue <= yThreshold.scaleValue &&\n\t\t\t\txValue >= xThreshold.scaleValue\n\t\t\t);\n\t\t}\n\n\t\tif (yThreshold) {\n\t\t\treturn yValue <= yThreshold.scaleValue;\n\t\t}\n\n\t\tif (xThreshold) {\n\t\t\treturn xValue >= xThreshold.scaleValue;\n\t\t}\n\t}\n\n\tstyleCircles(selection: Selection<any, any, any, any>, animate: boolean) {\n\t\t// Chart options mixed with the internal configurations\n\t\tconst options = this.getOptions();\n\t\tconst { filled, fillOpacity } = options.points;\n\t\tconst { cartesianScales, transitions } = this.services;\n\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst getDomainValue = (d, i) => cartesianScales.getDomainValue(d, i);\n\t\tconst getRangeValue = (d, i) => cartesianScales.getRangeValue(d, i);\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\tgetDomainValue,\n\t\t\tgetRangeValue,\n\t\t\tcartesianScales.getOrientation()\n\t\t);\n\n\t\tconst { fadeInOnChartHolderMouseover } = this.configs;\n\t\tselection\n\t\t\t.raise()\n\t\t\t.classed('dot', true)\n\t\t\t.attr('class', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\tconst isFilled = this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t\tconst classNamesNeeded = isFilled\n\t\t\t\t\t? [ColorClassNameTypes.FILL, ColorClassNameTypes.STROKE]\n\t\t\t\t\t: [ColorClassNameTypes.STROKE];\n\n\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: classNamesNeeded,\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'dot',\n\t\t\t\t});\n\t\t\t})\n\t\t\t// Set class to highlight the dots that are above all the thresholds, in both directions (vertical and horizontal)\n\t\t\t.classed('threshold-anomaly', (d, i) =>\n\t\t\t\tthis.isDatapointThresholdAnomaly(d, i)\n\t\t\t)\n\t\t\t.classed('filled', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t})\n\t\t\t.classed('unfilled', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn !this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t})\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: 'scatter-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('cx', getXValue)\n\t\t\t.attr('cy', getYValue)\n\t\t\t.attr('r', options.points.radius)\n\t\t\t.style('fill', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\tif (\n\t\t\t\t\tthis.model.getIsFilled(\n\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\td,\n\t\t\t\t\t\tfilled\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn this.model.getFillColor(\n\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\td\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.style('stroke', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn this.model.getStrokeColor(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td\n\t\t\t\t);\n\t\t\t})\n\t\t\t.attr('fill-opacity', filled ? fillOpacity : 1)\n\t\t\t.attr('opacity', fadeInOnChartHolderMouseover ? 0 : 1)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'point')\n\t\t\t.attr('aria-label', (d) => {\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier(d);\n\t\t\t\treturn d[rangeIdentifier];\n\t\t\t});\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\thandleChartHolderOnHover = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition('chart-holder-hover-scatter')\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: 'chart-holder-hover-scatter',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\thandleChartHolderOnMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition('chart-holder-mouseout-scatter')\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: 'chart-holder-mouseout-scatter',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', 0);\n\t};\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition('legend-hover-scatter')\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-scatter',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition('legend-mouseout-scatter')\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-scatter',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\t// This is extended in bubble graphs\n\tgetTooltipAdditionalItems(datum) {\n\t\treturn null;\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tconst { groupMapsTo } = self.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('circle')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.attr('class', (d) =>\n\t\t\t\t\t\tself.model.getColorClassName({\n\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\t\t\toriginalClassName: hoveredElement.attr('class'),\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.style('fill', (d) => {\n\t\t\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\t\td\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn self.model.getFillColor(\n\t\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\t\td\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t\t.classed('unfilled', false);\n\n\t\t\t\t// Show tooltip\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\tdata: [datum],\n\t\t\t\t\tadditionalItems: self.getTooltipAdditionalItems(datum),\n\t\t\t\t});\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_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\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_MOUSEMOVE,\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\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 event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_CLICK,\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})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\tif (!self.configs.filled) {\n\t\t\t\t\tconst { filled } = self.getOptions().points;\n\t\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\tdatum\n\t\t\t\t\t);\n\t\t\t\t\tconst isFilled = self.model.getIsFilled(\n\t\t\t\t\t\tdatum[groupMapsTo],\n\t\t\t\t\t\tdatum[domainIdentifier],\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t\tfilled\n\t\t\t\t\t);\n\t\t\t\t\thoveredElement\n\t\t\t\t\t\t.classed('unfilled', !isFilled)\n\t\t\t\t\t\t.style('fill', (d) => {\n\t\t\t\t\t\t\tif (isFilled || filled) {\n\t\t\t\t\t\t\t\treturn self.model.getFillColor(\n\t\t\t\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\t\t\t\td\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_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// Hide tooltip\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\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('circle')\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst { events } = this.services;\n\t\tevents.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOVER,\n\t\t\tthis.handleChartHolderOnHover\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleChartHolderOnMouseOut\n\t\t);\n\t}\n}\n"]}
@@ -14,7 +14,7 @@ var __extends = (this && this.__extends) || (function () {
14
14
  // Internal Imports
15
15
  import { Skeleton } from '../graphs/skeleton';
16
16
  import { DOMUtils } from '../../services';
17
- import { Tools } from '../../tools';
17
+ import * as Tools from '../../tools';
18
18
  var SkeletonLines = /** @class */ (function (_super) {
19
19
  __extends(SkeletonLines, _super);
20
20
  function SkeletonLines() {
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton-lines.js","sourceRoot":"","sources":["skeleton-lines.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Skeleton } from '../graphs/skeleton';\nimport { DOMUtils } from '../../services';\nimport { Tools } from '../../tools';\n\nexport class SkeletonLines extends Skeleton {\n\ttype = 'skeleton-lines';\n\txScale: any;\n\tyScale: any;\n\tbackdrop: any;\n\n\trender() {\n\t\tconst isDataLoading = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'data',\n\t\t\t'loading'\n\t\t);\n\n\t\tconst isSparkline =\n\t\t\t!Tools.getProperty(this.getOptions(), 'grid', 'x', 'enabled') &&\n\t\t\t!Tools.getProperty(this.getOptions(), 'grid', 'y', 'enabled') &&\n\t\t\t!Tools.getProperty(\n\t\t\t\tthis.getOptions(),\n\t\t\t\t'axes',\n\t\t\t\t'bottom',\n\t\t\t\t'visible'\n\t\t\t) &&\n\t\t\t!Tools.getProperty(this.getOptions(), 'axes', 'left', 'visible');\n\n\t\t// display a skeleton if there is no chart data or the loading flag is set to true\n\t\tif (isDataLoading && !isSparkline) {\n\t\t\tsuper.renderGridSkeleton(isDataLoading);\n\t\t} else if (isDataLoading && isSparkline) {\n\t\t\tthis.renderSparklineSkeleton(isDataLoading);\n\t\t} else {\n\t\t\tthis.removeSkeleton();\n\t\t}\n\t}\n\n\trenderSparklineSkeleton(showShimmerEffect: boolean) {\n\t\tthis.setScales();\n\t\tthis.drawBackdrop(showShimmerEffect);\n\t\tthis.drawSparkline(showShimmerEffect);\n\t\tthis.updateBackdropStyle();\n\t\tif (showShimmerEffect) {\n\t\t\tthis.setShimmerEffect('shimmer-lines');\n\t\t}\n\t}\n\n\tdrawSparkline(showShimmerEffect: boolean) {\n\t\tconst width = this.backdrop.attr('width');\n\t\tconst ticksValues = [100];\n\t\tconst sparklineSkeleton = DOMUtils.appendOrSelect(\n\t\t\tthis.backdrop,\n\t\t\t'g.y.skeleton'\n\t\t);\n\t\tconst update = sparklineSkeleton.selectAll('line').data(ticksValues);\n\t\tupdate\n\t\t\t.enter()\n\t\t\t.append('line')\n\t\t\t.merge(update)\n\t\t\t.attr('x1', 0)\n\t\t\t.attr('x2', width)\n\t\t\t.attr('y1', (d) => d)\n\t\t\t.attr('y2', (d) => d);\n\n\t\tsparklineSkeleton\n\t\t\t.selectAll('line')\n\t\t\t.classed('shimmer-effect-lines', showShimmerEffect)\n\t\t\t.classed('empty-state-lines', !showShimmerEffect)\n\t\t\t.style(\n\t\t\t\t'stroke',\n\t\t\t\tshowShimmerEffect\n\t\t\t\t\t? `url(#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t\t`shimmer-lines`\n\t\t\t\t\t )})`\n\t\t\t\t\t: null\n\t\t\t);\n\t}\n\n\tupdateBackdropStyle() {\n\t\tconst svg = this.parent;\n\n\t\tthis.backdrop = DOMUtils.appendOrSelect(svg, 'svg.chart-skeleton.DAII');\n\t\tconst backdropRect = DOMUtils.appendOrSelect(\n\t\t\tthis.backdrop,\n\t\t\t'rect.chart-skeleton-backdrop'\n\t\t);\n\n\t\tbackdropRect\n\t\t\t.classed('shimmer-effect-lines', false)\n\t\t\t.classed('shimmer-effect-sparkline', true)\n\t\t\t.style('stroke', null);\n\t}\n}\n"]}
1
+ {"version":3,"file":"skeleton-lines.js","sourceRoot":"","sources":["skeleton-lines.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Skeleton } from '../graphs/skeleton';\nimport { DOMUtils } from '../../services';\nimport * as Tools from '../../tools';\n\nexport class SkeletonLines extends Skeleton {\n\ttype = 'skeleton-lines';\n\txScale: any;\n\tyScale: any;\n\tbackdrop: any;\n\n\trender() {\n\t\tconst isDataLoading = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'data',\n\t\t\t'loading'\n\t\t);\n\n\t\tconst isSparkline =\n\t\t\t!Tools.getProperty(this.getOptions(), 'grid', 'x', 'enabled') &&\n\t\t\t!Tools.getProperty(this.getOptions(), 'grid', 'y', 'enabled') &&\n\t\t\t!Tools.getProperty(\n\t\t\t\tthis.getOptions(),\n\t\t\t\t'axes',\n\t\t\t\t'bottom',\n\t\t\t\t'visible'\n\t\t\t) &&\n\t\t\t!Tools.getProperty(this.getOptions(), 'axes', 'left', 'visible');\n\n\t\t// display a skeleton if there is no chart data or the loading flag is set to true\n\t\tif (isDataLoading && !isSparkline) {\n\t\t\tsuper.renderGridSkeleton(isDataLoading);\n\t\t} else if (isDataLoading && isSparkline) {\n\t\t\tthis.renderSparklineSkeleton(isDataLoading);\n\t\t} else {\n\t\t\tthis.removeSkeleton();\n\t\t}\n\t}\n\n\trenderSparklineSkeleton(showShimmerEffect: boolean) {\n\t\tthis.setScales();\n\t\tthis.drawBackdrop(showShimmerEffect);\n\t\tthis.drawSparkline(showShimmerEffect);\n\t\tthis.updateBackdropStyle();\n\t\tif (showShimmerEffect) {\n\t\t\tthis.setShimmerEffect('shimmer-lines');\n\t\t}\n\t}\n\n\tdrawSparkline(showShimmerEffect: boolean) {\n\t\tconst width = this.backdrop.attr('width');\n\t\tconst ticksValues = [100];\n\t\tconst sparklineSkeleton = DOMUtils.appendOrSelect(\n\t\t\tthis.backdrop,\n\t\t\t'g.y.skeleton'\n\t\t);\n\t\tconst update = sparklineSkeleton.selectAll('line').data(ticksValues);\n\t\tupdate\n\t\t\t.enter()\n\t\t\t.append('line')\n\t\t\t.merge(update)\n\t\t\t.attr('x1', 0)\n\t\t\t.attr('x2', width)\n\t\t\t.attr('y1', (d) => d)\n\t\t\t.attr('y2', (d) => d);\n\n\t\tsparklineSkeleton\n\t\t\t.selectAll('line')\n\t\t\t.classed('shimmer-effect-lines', showShimmerEffect)\n\t\t\t.classed('empty-state-lines', !showShimmerEffect)\n\t\t\t.style(\n\t\t\t\t'stroke',\n\t\t\t\tshowShimmerEffect\n\t\t\t\t\t? `url(#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t\t`shimmer-lines`\n\t\t\t\t\t )})`\n\t\t\t\t\t: null\n\t\t\t);\n\t}\n\n\tupdateBackdropStyle() {\n\t\tconst svg = this.parent;\n\n\t\tthis.backdrop = DOMUtils.appendOrSelect(svg, 'svg.chart-skeleton.DAII');\n\t\tconst backdropRect = DOMUtils.appendOrSelect(\n\t\t\tthis.backdrop,\n\t\t\t'rect.chart-skeleton-backdrop'\n\t\t);\n\n\t\tbackdropRect\n\t\t\t.classed('shimmer-effect-lines', false)\n\t\t\t.classed('shimmer-effect-sparkline', true)\n\t\t\t.style('stroke', null);\n\t}\n}\n"]}
@@ -14,7 +14,7 @@ var __extends = (this && this.__extends) || (function () {
14
14
  // Internal Imports
15
15
  import { Component } from '../component';
16
16
  import { DOMUtils } from '../../services';
17
- import { Tools } from '../../tools';
17
+ import * as Tools from '../../tools';
18
18
  import { Skeletons, CartesianOrientations, Alignments, } from '../../interfaces/enums';
19
19
  import * as Configuration from '../../configuration';
20
20
  // D3 Imports
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton.js","sourceRoot":"","sources":["skeleton.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Tools } from '../../tools';\nimport {\n\tSkeletons,\n\tCartesianOrientations,\n\tAlignments,\n} from '../../interfaces/enums';\nimport * as Configuration from '../../configuration';\n\n// D3 Imports\nimport { scaleLinear } from 'd3-scale';\nimport { easeLinear } from 'd3-ease';\nimport { arc } from 'd3-shape';\n\nexport class Skeleton extends Component {\n\ttype = 'skeleton';\n\txScale: any;\n\tyScale: any;\n\tbackdrop: any;\n\n\trender() {\n\t\tconst isDataLoading = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'data',\n\t\t\t'loading'\n\t\t);\n\n\t\t// display a skeleton if there is no chart data or the loading flag is set to true\n\t\tif (isDataLoading) {\n\t\t\tthis.renderSkeleton(isDataLoading);\n\t\t} else {\n\t\t\tthis.removeSkeleton();\n\t\t}\n\t}\n\n\trenderSkeleton(showShimmerEffect: boolean) {\n\t\tif (this.configs.skeleton === Skeletons.GRID) {\n\t\t\tthis.renderGridSkeleton(showShimmerEffect);\n\t\t} else if (this.configs.skeleton === Skeletons.VERT_OR_HORIZ) {\n\t\t\tthis.renderVertOrHorizSkeleton(showShimmerEffect);\n\t\t} else if (this.configs.skeleton === Skeletons.PIE) {\n\t\t\tthis.renderPieSkeleton(showShimmerEffect);\n\t\t} else if (this.configs.skeleton === Skeletons.DONUT) {\n\t\t\tthis.renderDonutSkeleton(showShimmerEffect);\n\t\t} else {\n\t\t\tthrow new Error(\n\t\t\t\t`\"${this.configs.skeleton}\" is not a valid Skeleton type.`\n\t\t\t);\n\t\t}\n\t}\n\n\trenderGridSkeleton(showShimmerEffect: boolean) {\n\t\tthis.setScales();\n\t\tthis.drawBackdrop(showShimmerEffect);\n\t\tthis.drawXGrid(showShimmerEffect);\n\t\tthis.drawYGrid(showShimmerEffect);\n\t\tif (showShimmerEffect) {\n\t\t\tthis.setShimmerEffect('shimmer-lines');\n\t\t}\n\t}\n\n\trenderVertOrHorizSkeleton(showShimmerEffect: boolean) {\n\t\tconst orientation = this.services.cartesianScales.getOrientation();\n\t\tthis.setScales();\n\t\tthis.drawBackdrop(showShimmerEffect);\n\t\tif (orientation === CartesianOrientations.VERTICAL) {\n\t\t\tthis.drawYGrid(showShimmerEffect);\n\t\t}\n\t\tif (orientation === CartesianOrientations.HORIZONTAL) {\n\t\t\tthis.drawXGrid(showShimmerEffect);\n\t\t}\n\n\t\tthis.setShimmerEffect('shimmer-lines');\n\t}\n\n\trenderPieSkeleton(showShimmerEffect: boolean) {\n\t\tconst outerRadius = this.computeOuterRadius();\n\t\tconst innerRadius = 0;\n\t\tthis.drawRing(outerRadius, innerRadius, showShimmerEffect);\n\t\tif (showShimmerEffect) {\n\t\t\tthis.setShimmerEffect('shimmer-areas');\n\t\t}\n\t}\n\n\trenderDonutSkeleton(showShimmerEffect: boolean) {\n\t\tconst outerRadius = this.computeOuterRadius();\n\t\tconst innerRadius = this.computeInnerRadius();\n\t\tthis.drawRing(outerRadius, innerRadius, showShimmerEffect);\n\t\tif (showShimmerEffect) {\n\t\t\tthis.setShimmerEffect('shimmer-areas');\n\t\t}\n\t}\n\n\tsetScales() {\n\t\tconst xRange = this.services.cartesianScales.getMainXScale().range();\n\t\tconst yRange = this.services.cartesianScales.getMainYScale().range();\n\t\tthis.xScale = scaleLinear().domain([0, 1]).range(xRange);\n\t\tthis.yScale = scaleLinear().domain([0, 1]).range(yRange);\n\t}\n\n\tdrawBackdrop(showShimmerEffect: boolean) {\n\t\tconst svg = this.parent;\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tthis.backdrop = DOMUtils.appendOrSelect(svg, 'svg.chart-skeleton.DAII')\n\t\t\t.attr('width', width)\n\t\t\t.attr('height', height);\n\n\t\tconst backdropRect = DOMUtils.appendOrSelect(\n\t\t\tthis.backdrop,\n\t\t\t'rect.chart-skeleton-backdrop'\n\t\t);\n\t\tbackdropRect.attr('width', '100%').attr('height', '100%');\n\n\t\tconst [xScaleStart, xScaleEnd] = this.xScale.range();\n\t\tconst [yScaleEnd, yScaleStart] = this.yScale.range();\n\n\t\tthis.backdrop\n\t\t\t.merge(backdropRect)\n\t\t\t.attr('x', xScaleStart)\n\t\t\t.attr('y', yScaleStart);\n\n\t\tbackdropRect\n\t\t\t.classed('shimmer-effect-lines', showShimmerEffect)\n\t\t\t.classed('empty-state-lines', !showShimmerEffect)\n\t\t\t.style(\n\t\t\t\t'stroke',\n\t\t\t\tshowShimmerEffect\n\t\t\t\t\t? `url(#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t\t`shimmer-lines`\n\t\t\t\t\t )})`\n\t\t\t\t\t: null\n\t\t\t);\n\t}\n\n\tdrawXGrid(showShimmerEffect: boolean) {\n\t\tconst width = this.backdrop.attr('width');\n\t\tconst ticksNumber = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'grid',\n\t\t\t'x',\n\t\t\t'numberOfTicks'\n\t\t);\n\t\tconst ticksValues = this.xScale\n\t\t\t.ticks(ticksNumber)\n\t\t\t.map((d) => d * width);\n\n\t\tconst xGridG = DOMUtils.appendOrSelect(this.backdrop, 'g.x.skeleton');\n\t\tconst update = xGridG.selectAll('line').data(ticksValues);\n\t\tupdate\n\t\t\t.enter()\n\t\t\t.append('line')\n\t\t\t.merge(update)\n\t\t\t.attr('x1', (d) => d)\n\t\t\t.attr('x2', (d) => d)\n\t\t\t.attr('y1', 0)\n\t\t\t.attr('y2', '100%');\n\n\t\txGridG\n\t\t\t.selectAll('line')\n\t\t\t.classed('shimmer-effect-lines', showShimmerEffect)\n\t\t\t.classed('empty-state-lines', !showShimmerEffect)\n\t\t\t.style(\n\t\t\t\t'stroke',\n\t\t\t\tshowShimmerEffect\n\t\t\t\t\t? `url(#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t\t`shimmer-lines`\n\t\t\t\t\t )})`\n\t\t\t\t\t: null\n\t\t\t);\n\t}\n\n\tdrawYGrid(showShimmerEffect: boolean) {\n\t\tconst height = this.backdrop.attr('height');\n\t\tconst width = this.backdrop.attr('width');\n\t\tconst ticksNumber = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'grid',\n\t\t\t'y',\n\t\t\t'numberOfTicks'\n\t\t);\n\t\tconst ticksValues = this.xScale\n\t\t\t.ticks(ticksNumber)\n\t\t\t.map((d) => d * height);\n\n\t\tconst yGridG = DOMUtils.appendOrSelect(this.backdrop, 'g.y.skeleton');\n\t\tconst update = yGridG.selectAll('line').data(ticksValues);\n\t\tupdate\n\t\t\t.enter()\n\t\t\t.append('line')\n\t\t\t.merge(update)\n\t\t\t.attr('x1', 0)\n\t\t\t.attr('x2', width)\n\t\t\t.attr('y1', (d) => d)\n\t\t\t.attr('y2', (d) => d);\n\n\t\tyGridG\n\t\t\t.selectAll('line')\n\t\t\t.classed('shimmer-effect-lines', showShimmerEffect)\n\t\t\t.classed('empty-state-lines', !showShimmerEffect)\n\t\t\t.style(\n\t\t\t\t'stroke',\n\t\t\t\tshowShimmerEffect\n\t\t\t\t\t? `url(#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t\t`shimmer-lines`\n\t\t\t\t\t )})`\n\t\t\t\t\t: null\n\t\t\t);\n\t}\n\n\tdrawRing(outerRadius: number, innerRadius: number, shimmer = true) {\n\t\tconst svg = this.parent;\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tconst container = DOMUtils.appendOrSelect(svg, 'svg.chart-skeleton')\n\t\t\t.attr('width', width)\n\t\t\t.attr('height', height);\n\n\t\tconst optionName = innerRadius === 0 ? 'pie' : 'donut';\n\n\t\tconst alignment = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\toptionName,\n\t\t\t'alignment'\n\t\t);\n\n\t\tDOMUtils.appendOrSelect(container, 'rect.chart-skeleton-area-container')\n\t\t\t.attr('width', width)\n\t\t\t.attr('height', height)\n\t\t\t.attr('fill', 'none');\n\n\t\tconst arcPathGenerator = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(outerRadius)\n\t\t\t.startAngle(0)\n\t\t\t.endAngle(Math.PI * 2);\n\n\t\t// centering circle inside the container\n\t\tconst tcx = outerRadius + Math.abs(Configuration.pie.radiusOffset);\n\t\tconst tcy =\n\t\t\touterRadius + (Math.min(width, height) - outerRadius * 2) / 2;\n\n\t\tconst skeletonAreaShape = DOMUtils.appendOrSelect(container, 'path')\n\t\t\t.attr('class', 'skeleton-area-shape')\n\t\t\t.attr('transform', `translate(${tcx}, ${tcy})`)\n\t\t\t.attr('d', arcPathGenerator)\n\t\t\t.classed('shimmer-effect-areas', shimmer)\n\t\t\t.classed('empty-state-areas', !shimmer)\n\t\t\t.style(\n\t\t\t\t'fill',\n\t\t\t\tshimmer\n\t\t\t\t\t? `url(#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t\t`shimmer-areas`\n\t\t\t\t\t )})`\n\t\t\t\t\t: null\n\t\t\t);\n\n\t\t// Position skeleton\n\t\tlet translateX = outerRadius + Configuration.pie.xOffset;\n\t\tif (alignment === Alignments.CENTER) {\n\t\t\ttranslateX = width / 2;\n\t\t} else if (alignment === Alignments.RIGHT) {\n\t\t\ttranslateX = width - outerRadius - Configuration.pie.xOffset;\n\t\t}\n\n\t\tconst translateY = outerRadius + Configuration.pie.yOffset;\n\t\tskeletonAreaShape.attr(\n\t\t\t'transform',\n\t\t\t`translate(${translateX}, ${translateY})`\n\t\t);\n\t}\n\n\t// same logic in pie\n\tcomputeOuterRadius() {\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\t\tconst radius = Math.min(width, height) / 2;\n\t\treturn radius + Configuration.pie.radiusOffset;\n\t}\n\n\t// same logic in donut\n\tcomputeInnerRadius() {\n\t\treturn this.computeOuterRadius() * (3 / 4);\n\t}\n\n\tsetShimmerEffect(gradientId: string) {\n\t\tconst animationDuration = 2000; // ms\n\t\tconst delay = 1000; // ms\n\t\tconst shimmerWidth = 0.2;\n\t\tconst stopBgShimmerClass = 'stop-bg-shimmer';\n\t\tconst stopShimmerClass = 'stop-shimmer';\n\t\tconst container = this.parent.select('.chart-skeleton');\n\t\tconst { width } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\t\tconst startPoint = 0;\n\t\tconst endPoint = width;\n\n\t\t// append the defs as first child of container\n\t\tconst defs = DOMUtils.appendOrSelect(container, 'defs').lower();\n\t\tconst linearGradient = DOMUtils.appendOrSelect(defs, 'linearGradient')\n\t\t\t.attr(\n\t\t\t\t'id',\n\t\t\t\tthis.services.domUtils.generateElementIDString(gradientId)\n\t\t\t)\n\t\t\t.attr('class', gradientId)\n\t\t\t.attr('x1', startPoint - 3 * shimmerWidth * width)\n\t\t\t.attr('x2', endPoint)\n\t\t\t.attr('y1', 0)\n\t\t\t.attr('y2', 0)\n\t\t\t.attr('gradientUnits', 'userSpaceOnUse')\n\t\t\t.attr('gradientTransform', `translate(0, 0)`);\n\t\tconst stops = `\n\t\t\t<stop class=\"${stopBgShimmerClass}\" offset=\"${startPoint}\"></stop>\n\t\t\t<stop class=\"${stopShimmerClass}\" offset=\"${startPoint + shimmerWidth}\"></stop>\n\t\t\t<stop class=\"${stopBgShimmerClass}\" offset=\"${\n\t\t\tstartPoint + 2 * shimmerWidth\n\t\t}\"></stop>\n\t\t`;\n\t\tlinearGradient.html(stops);\n\n\t\trepeat();\n\t\tfunction repeat() {\n\t\t\tlinearGradient\n\t\t\t\t.attr(\n\t\t\t\t\t'gradientTransform',\n\t\t\t\t\t`translate(${startPoint - 3 * shimmerWidth * width}, 0)`\n\t\t\t\t)\n\t\t\t\t.transition()\n\t\t\t\t.duration(animationDuration)\n\t\t\t\t.delay(delay)\n\t\t\t\t.ease(easeLinear)\n\t\t\t\t.attr(\n\t\t\t\t\t'gradientTransform',\n\t\t\t\t\t`translate(${endPoint + 3 * shimmerWidth * width}, 0)`\n\t\t\t\t)\n\t\t\t\t.on('end', repeat);\n\t\t}\n\t}\n\n\tremoveSkeleton() {\n\t\tconst container = this.parent.select('.chart-skeleton');\n\t\tcontainer.remove();\n\t}\n}\n"]}
1
+ {"version":3,"file":"skeleton.js","sourceRoot":"","sources":["skeleton.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport * as Tools from '../../tools';\nimport {\n\tSkeletons,\n\tCartesianOrientations,\n\tAlignments,\n} from '../../interfaces/enums';\nimport * as Configuration from '../../configuration';\n\n// D3 Imports\nimport { scaleLinear } from 'd3-scale';\nimport { easeLinear } from 'd3-ease';\nimport { arc } from 'd3-shape';\n\nexport class Skeleton extends Component {\n\ttype = 'skeleton';\n\txScale: any;\n\tyScale: any;\n\tbackdrop: any;\n\n\trender() {\n\t\tconst isDataLoading = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'data',\n\t\t\t'loading'\n\t\t);\n\n\t\t// display a skeleton if there is no chart data or the loading flag is set to true\n\t\tif (isDataLoading) {\n\t\t\tthis.renderSkeleton(isDataLoading);\n\t\t} else {\n\t\t\tthis.removeSkeleton();\n\t\t}\n\t}\n\n\trenderSkeleton(showShimmerEffect: boolean) {\n\t\tif (this.configs.skeleton === Skeletons.GRID) {\n\t\t\tthis.renderGridSkeleton(showShimmerEffect);\n\t\t} else if (this.configs.skeleton === Skeletons.VERT_OR_HORIZ) {\n\t\t\tthis.renderVertOrHorizSkeleton(showShimmerEffect);\n\t\t} else if (this.configs.skeleton === Skeletons.PIE) {\n\t\t\tthis.renderPieSkeleton(showShimmerEffect);\n\t\t} else if (this.configs.skeleton === Skeletons.DONUT) {\n\t\t\tthis.renderDonutSkeleton(showShimmerEffect);\n\t\t} else {\n\t\t\tthrow new Error(\n\t\t\t\t`\"${this.configs.skeleton}\" is not a valid Skeleton type.`\n\t\t\t);\n\t\t}\n\t}\n\n\trenderGridSkeleton(showShimmerEffect: boolean) {\n\t\tthis.setScales();\n\t\tthis.drawBackdrop(showShimmerEffect);\n\t\tthis.drawXGrid(showShimmerEffect);\n\t\tthis.drawYGrid(showShimmerEffect);\n\t\tif (showShimmerEffect) {\n\t\t\tthis.setShimmerEffect('shimmer-lines');\n\t\t}\n\t}\n\n\trenderVertOrHorizSkeleton(showShimmerEffect: boolean) {\n\t\tconst orientation = this.services.cartesianScales.getOrientation();\n\t\tthis.setScales();\n\t\tthis.drawBackdrop(showShimmerEffect);\n\t\tif (orientation === CartesianOrientations.VERTICAL) {\n\t\t\tthis.drawYGrid(showShimmerEffect);\n\t\t}\n\t\tif (orientation === CartesianOrientations.HORIZONTAL) {\n\t\t\tthis.drawXGrid(showShimmerEffect);\n\t\t}\n\n\t\tthis.setShimmerEffect('shimmer-lines');\n\t}\n\n\trenderPieSkeleton(showShimmerEffect: boolean) {\n\t\tconst outerRadius = this.computeOuterRadius();\n\t\tconst innerRadius = 0;\n\t\tthis.drawRing(outerRadius, innerRadius, showShimmerEffect);\n\t\tif (showShimmerEffect) {\n\t\t\tthis.setShimmerEffect('shimmer-areas');\n\t\t}\n\t}\n\n\trenderDonutSkeleton(showShimmerEffect: boolean) {\n\t\tconst outerRadius = this.computeOuterRadius();\n\t\tconst innerRadius = this.computeInnerRadius();\n\t\tthis.drawRing(outerRadius, innerRadius, showShimmerEffect);\n\t\tif (showShimmerEffect) {\n\t\t\tthis.setShimmerEffect('shimmer-areas');\n\t\t}\n\t}\n\n\tsetScales() {\n\t\tconst xRange = this.services.cartesianScales.getMainXScale().range();\n\t\tconst yRange = this.services.cartesianScales.getMainYScale().range();\n\t\tthis.xScale = scaleLinear().domain([0, 1]).range(xRange);\n\t\tthis.yScale = scaleLinear().domain([0, 1]).range(yRange);\n\t}\n\n\tdrawBackdrop(showShimmerEffect: boolean) {\n\t\tconst svg = this.parent;\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tthis.backdrop = DOMUtils.appendOrSelect(svg, 'svg.chart-skeleton.DAII')\n\t\t\t.attr('width', width)\n\t\t\t.attr('height', height);\n\n\t\tconst backdropRect = DOMUtils.appendOrSelect(\n\t\t\tthis.backdrop,\n\t\t\t'rect.chart-skeleton-backdrop'\n\t\t);\n\t\tbackdropRect.attr('width', '100%').attr('height', '100%');\n\n\t\tconst [xScaleStart, xScaleEnd] = this.xScale.range();\n\t\tconst [yScaleEnd, yScaleStart] = this.yScale.range();\n\n\t\tthis.backdrop\n\t\t\t.merge(backdropRect)\n\t\t\t.attr('x', xScaleStart)\n\t\t\t.attr('y', yScaleStart);\n\n\t\tbackdropRect\n\t\t\t.classed('shimmer-effect-lines', showShimmerEffect)\n\t\t\t.classed('empty-state-lines', !showShimmerEffect)\n\t\t\t.style(\n\t\t\t\t'stroke',\n\t\t\t\tshowShimmerEffect\n\t\t\t\t\t? `url(#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t\t`shimmer-lines`\n\t\t\t\t\t )})`\n\t\t\t\t\t: null\n\t\t\t);\n\t}\n\n\tdrawXGrid(showShimmerEffect: boolean) {\n\t\tconst width = this.backdrop.attr('width');\n\t\tconst ticksNumber = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'grid',\n\t\t\t'x',\n\t\t\t'numberOfTicks'\n\t\t);\n\t\tconst ticksValues = this.xScale\n\t\t\t.ticks(ticksNumber)\n\t\t\t.map((d) => d * width);\n\n\t\tconst xGridG = DOMUtils.appendOrSelect(this.backdrop, 'g.x.skeleton');\n\t\tconst update = xGridG.selectAll('line').data(ticksValues);\n\t\tupdate\n\t\t\t.enter()\n\t\t\t.append('line')\n\t\t\t.merge(update)\n\t\t\t.attr('x1', (d) => d)\n\t\t\t.attr('x2', (d) => d)\n\t\t\t.attr('y1', 0)\n\t\t\t.attr('y2', '100%');\n\n\t\txGridG\n\t\t\t.selectAll('line')\n\t\t\t.classed('shimmer-effect-lines', showShimmerEffect)\n\t\t\t.classed('empty-state-lines', !showShimmerEffect)\n\t\t\t.style(\n\t\t\t\t'stroke',\n\t\t\t\tshowShimmerEffect\n\t\t\t\t\t? `url(#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t\t`shimmer-lines`\n\t\t\t\t\t )})`\n\t\t\t\t\t: null\n\t\t\t);\n\t}\n\n\tdrawYGrid(showShimmerEffect: boolean) {\n\t\tconst height = this.backdrop.attr('height');\n\t\tconst width = this.backdrop.attr('width');\n\t\tconst ticksNumber = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'grid',\n\t\t\t'y',\n\t\t\t'numberOfTicks'\n\t\t);\n\t\tconst ticksValues = this.xScale\n\t\t\t.ticks(ticksNumber)\n\t\t\t.map((d) => d * height);\n\n\t\tconst yGridG = DOMUtils.appendOrSelect(this.backdrop, 'g.y.skeleton');\n\t\tconst update = yGridG.selectAll('line').data(ticksValues);\n\t\tupdate\n\t\t\t.enter()\n\t\t\t.append('line')\n\t\t\t.merge(update)\n\t\t\t.attr('x1', 0)\n\t\t\t.attr('x2', width)\n\t\t\t.attr('y1', (d) => d)\n\t\t\t.attr('y2', (d) => d);\n\n\t\tyGridG\n\t\t\t.selectAll('line')\n\t\t\t.classed('shimmer-effect-lines', showShimmerEffect)\n\t\t\t.classed('empty-state-lines', !showShimmerEffect)\n\t\t\t.style(\n\t\t\t\t'stroke',\n\t\t\t\tshowShimmerEffect\n\t\t\t\t\t? `url(#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t\t`shimmer-lines`\n\t\t\t\t\t )})`\n\t\t\t\t\t: null\n\t\t\t);\n\t}\n\n\tdrawRing(outerRadius: number, innerRadius: number, shimmer = true) {\n\t\tconst svg = this.parent;\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tconst container = DOMUtils.appendOrSelect(svg, 'svg.chart-skeleton')\n\t\t\t.attr('width', width)\n\t\t\t.attr('height', height);\n\n\t\tconst optionName = innerRadius === 0 ? 'pie' : 'donut';\n\n\t\tconst alignment = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\toptionName,\n\t\t\t'alignment'\n\t\t);\n\n\t\tDOMUtils.appendOrSelect(container, 'rect.chart-skeleton-area-container')\n\t\t\t.attr('width', width)\n\t\t\t.attr('height', height)\n\t\t\t.attr('fill', 'none');\n\n\t\tconst arcPathGenerator = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(outerRadius)\n\t\t\t.startAngle(0)\n\t\t\t.endAngle(Math.PI * 2);\n\n\t\t// centering circle inside the container\n\t\tconst tcx = outerRadius + Math.abs(Configuration.pie.radiusOffset);\n\t\tconst tcy =\n\t\t\touterRadius + (Math.min(width, height) - outerRadius * 2) / 2;\n\n\t\tconst skeletonAreaShape = DOMUtils.appendOrSelect(container, 'path')\n\t\t\t.attr('class', 'skeleton-area-shape')\n\t\t\t.attr('transform', `translate(${tcx}, ${tcy})`)\n\t\t\t.attr('d', arcPathGenerator)\n\t\t\t.classed('shimmer-effect-areas', shimmer)\n\t\t\t.classed('empty-state-areas', !shimmer)\n\t\t\t.style(\n\t\t\t\t'fill',\n\t\t\t\tshimmer\n\t\t\t\t\t? `url(#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t\t`shimmer-areas`\n\t\t\t\t\t )})`\n\t\t\t\t\t: null\n\t\t\t);\n\n\t\t// Position skeleton\n\t\tlet translateX = outerRadius + Configuration.pie.xOffset;\n\t\tif (alignment === Alignments.CENTER) {\n\t\t\ttranslateX = width / 2;\n\t\t} else if (alignment === Alignments.RIGHT) {\n\t\t\ttranslateX = width - outerRadius - Configuration.pie.xOffset;\n\t\t}\n\n\t\tconst translateY = outerRadius + Configuration.pie.yOffset;\n\t\tskeletonAreaShape.attr(\n\t\t\t'transform',\n\t\t\t`translate(${translateX}, ${translateY})`\n\t\t);\n\t}\n\n\t// same logic in pie\n\tcomputeOuterRadius() {\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\t\tconst radius = Math.min(width, height) / 2;\n\t\treturn radius + Configuration.pie.radiusOffset;\n\t}\n\n\t// same logic in donut\n\tcomputeInnerRadius() {\n\t\treturn this.computeOuterRadius() * (3 / 4);\n\t}\n\n\tsetShimmerEffect(gradientId: string) {\n\t\tconst animationDuration = 2000; // ms\n\t\tconst delay = 1000; // ms\n\t\tconst shimmerWidth = 0.2;\n\t\tconst stopBgShimmerClass = 'stop-bg-shimmer';\n\t\tconst stopShimmerClass = 'stop-shimmer';\n\t\tconst container = this.parent.select('.chart-skeleton');\n\t\tconst { width } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\t\tconst startPoint = 0;\n\t\tconst endPoint = width;\n\n\t\t// append the defs as first child of container\n\t\tconst defs = DOMUtils.appendOrSelect(container, 'defs').lower();\n\t\tconst linearGradient = DOMUtils.appendOrSelect(defs, 'linearGradient')\n\t\t\t.attr(\n\t\t\t\t'id',\n\t\t\t\tthis.services.domUtils.generateElementIDString(gradientId)\n\t\t\t)\n\t\t\t.attr('class', gradientId)\n\t\t\t.attr('x1', startPoint - 3 * shimmerWidth * width)\n\t\t\t.attr('x2', endPoint)\n\t\t\t.attr('y1', 0)\n\t\t\t.attr('y2', 0)\n\t\t\t.attr('gradientUnits', 'userSpaceOnUse')\n\t\t\t.attr('gradientTransform', `translate(0, 0)`);\n\t\tconst stops = `\n\t\t\t<stop class=\"${stopBgShimmerClass}\" offset=\"${startPoint}\"></stop>\n\t\t\t<stop class=\"${stopShimmerClass}\" offset=\"${startPoint + shimmerWidth}\"></stop>\n\t\t\t<stop class=\"${stopBgShimmerClass}\" offset=\"${\n\t\t\tstartPoint + 2 * shimmerWidth\n\t\t}\"></stop>\n\t\t`;\n\t\tlinearGradient.html(stops);\n\n\t\trepeat();\n\t\tfunction repeat() {\n\t\t\tlinearGradient\n\t\t\t\t.attr(\n\t\t\t\t\t'gradientTransform',\n\t\t\t\t\t`translate(${startPoint - 3 * shimmerWidth * width}, 0)`\n\t\t\t\t)\n\t\t\t\t.transition()\n\t\t\t\t.duration(animationDuration)\n\t\t\t\t.delay(delay)\n\t\t\t\t.ease(easeLinear)\n\t\t\t\t.attr(\n\t\t\t\t\t'gradientTransform',\n\t\t\t\t\t`translate(${endPoint + 3 * shimmerWidth * width}, 0)`\n\t\t\t\t)\n\t\t\t\t.on('end', repeat);\n\t\t}\n\t}\n\n\tremoveSkeleton() {\n\t\tconst container = this.parent.select('.chart-skeleton');\n\t\tcontainer.remove();\n\t}\n}\n"]}
@@ -15,7 +15,7 @@ var __extends = (this && this.__extends) || (function () {
15
15
  import { Component } from '../component';
16
16
  import { DOMUtils } from '../../services';
17
17
  import { Events, RenderTypes, TreeTypes } from '../../interfaces';
18
- import { Tools } from '../../tools';
18
+ import * as Tools from '../../tools';
19
19
  // D3 Imports
20
20
  import { cluster as d3Cluster, tree as d3Tree, hierarchy } from 'd3-hierarchy';
21
21
  import { linkHorizontal } from 'd3-shape';
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sourceRoot":"","sources":["tree.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Events, RenderTypes, TreeTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { cluster as d3Cluster, tree as d3Tree, hierarchy } from 'd3-hierarchy';\nimport { linkHorizontal } from 'd3-shape';\nimport { select } from 'd3-selection';\n\nconst NODE_OFFSET = 6;\n\nexport class Tree extends Component {\n\ttype = 'tree';\n\trenderType = RenderTypes.SVG;\n\n\tgetLongestLabel(data) {\n\t\tlet longestLabel = '';\n\t\tdata.forEach((d) => {\n\t\t\tlet longestLabelInChildren = d.children\n\t\t\t\t? this.getLongestLabel(d.children)\n\t\t\t\t: '';\n\t\t\tif (\n\t\t\t\tlongestLabelInChildren.length > longestLabel.length ||\n\t\t\t\td.name.length > longestLabel.length\n\t\t\t) {\n\t\t\t\tlongestLabel =\n\t\t\t\t\tlongestLabelInChildren.length > d.name.length\n\t\t\t\t\t\t? longestLabelInChildren\n\t\t\t\t\t\t: d.name;\n\t\t\t}\n\t\t});\n\n\t\treturn longestLabel;\n\t}\n\n\tgetMockLabelWidth(svg, label) {\n\t\t// Add mock label to get dimensions\n\t\tconst mockLabel = svg\n\t\t\t.append('text')\n\t\t\t.attr('dy', '0.31em')\n\t\t\t.attr('x', 0)\n\t\t\t.attr('text-anchor', 'end')\n\t\t\t.text(label);\n\n\t\t// Get the mock label width\n\t\tconst { width: mockLabelWidth } = DOMUtils.getSVGElementSize(\n\t\t\tmockLabel.node(),\n\t\t\t{\n\t\t\t\tuseBBox: true,\n\t\t\t}\n\t\t);\n\n\t\t// Remove the mock title label\n\t\tmockLabel.remove();\n\n\t\treturn mockLabelWidth;\n\t}\n\n\trender(animate = true) {\n\t\tconst svg = this.getComponentContainer();\n\n\t\t// Empty out the svg before rendering the tree\n\t\tsvg.html('');\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tif (width < 1 || height < 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst options = this.model.getOptions();\n\t\tconst displayData = this.model.getDisplayData();\n\n\t\tconst rootTitle =\n\t\t\tTools.getProperty(options, 'tree', 'rootTitle') || 'Tree';\n\n\t\tconst mockRootTitleWidth = this.getMockLabelWidth(svg, rootTitle);\n\n\t\tlet longestLabel = this.getLongestLabel(displayData);\n\t\tconst mockLongestLabelWidth = this.getMockLabelWidth(svg, longestLabel);\n\n\t\tconst margin = {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft:\n\t\t\t\tmockRootTitleWidth > 0\n\t\t\t\t\t? mockRootTitleWidth + NODE_OFFSET\n\t\t\t\t\t: 30 - NODE_OFFSET,\n\t\t};\n\t\tconst root = hierarchy({\n\t\t\tname: rootTitle,\n\t\t\tchildren: displayData,\n\t\t}) as any;\n\n\t\tconst dx = 10;\n\t\tconst dy = width / 6;\n\n\t\tconst update = (source) => {\n\t\t\tconst nodes = root.descendants().reverse();\n\t\t\tconst links = root.links();\n\n\t\t\tlet left = root;\n\t\t\tlet right = root;\n\t\t\troot.eachBefore((node) => {\n\t\t\t\tif (node.x < left.x) left = node;\n\t\t\t\tif (node.x > right.x) right = node;\n\t\t\t});\n\n\t\t\tconst height = right.x - left.x;\n\n\t\t\tconst transition = svg\n\t\t\t\t.transition()\n\t\t\t\t.call((t) =>\n\t\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\tname: 'tree-update-viewbox',\n\t\t\t\t\t\tanimate: true,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('viewBox', [-margin.left, left.x, width, height]);\n\n\t\t\t// Update data on nodes\n\t\t\tconst nodeGroups = nodeGroup\n\t\t\t\t.selectAll('g')\n\t\t\t\t.data(nodes, (d) => d.id);\n\n\t\t\tconst self = this;\n\t\t\t// Add any entering nodes\n\t\t\tconst nodeGroupsEnter = nodeGroups\n\t\t\t\t.enter()\n\t\t\t\t.append('g')\n\t\t\t\t.attr('transform', () => `translate(${source.y0},${source.x0})`)\n\t\t\t\t.attr('class', (d) =>\n\t\t\t\t\td.depth !== 0 && d.children && d.children.length > 0\n\t\t\t\t\t\t? 'clickable'\n\t\t\t\t\t\t: null\n\t\t\t\t)\n\t\t\t\t.on('mouseover', function (event, d) {\n\t\t\t\t\t// Dispatch mouse event\n\t\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\t\tEvents.Tree.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: select(this),\n\t\t\t\t\t\t\tdatum: d,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.on('click', function (event, d) {\n\t\t\t\t\tif (d.depth !== 0) {\n\t\t\t\t\t\td.children = d.children ? null : d._children;\n\n\t\t\t\t\t\tupdate(d);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Dispatch mouse event\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tree.NODE_CLICK, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum: d,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.on('mouseout', function (event, d) {\n\t\t\t\t\t// Dispatch mouse event\n\t\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\t\tEvents.Tree.NODE_MOUSEOUT,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\t\tdatum: d,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t// Add node circles to entering nodes\n\t\t\tnodeGroupsEnter\n\t\t\t\t.append('circle')\n\t\t\t\t.attr('r', 2.5)\n\t\t\t\t.attr('class', (d) => (d._children ? 'parent' : 'child'))\n\t\t\t\t.attr('stroke-width', 10);\n\n\t\t\t// Add node labels\n\t\t\tnodeGroupsEnter\n\t\t\t\t.append('text')\n\t\t\t\t.attr('dy', '0.31em')\n\t\t\t\t.attr('x', (d) => (d._children ? -NODE_OFFSET : NODE_OFFSET))\n\t\t\t\t.attr('text-anchor', (d) => (d._children ? 'end' : 'start'))\n\t\t\t\t.text((d) => d.data.name)\n\t\t\t\t.clone(true)\n\t\t\t\t.attr('class', 'text-stroke')\n\t\t\t\t.lower();\n\n\t\t\t// Reposition nodes\n\t\t\tnodeGroups\n\t\t\t\t.merge(nodeGroupsEnter)\n\t\t\t\t.transition(transition)\n\t\t\t\t.attr('transform', (d) => `translate(${d.y},${d.x})`)\n\t\t\t\t.attr('fill-opacity', 1)\n\t\t\t\t.attr('stroke-opacity', 1);\n\n\t\t\t// Remove exiting nodes\n\t\t\tnodeGroups\n\t\t\t\t.exit()\n\t\t\t\t.transition(transition)\n\t\t\t\t.remove()\n\t\t\t\t.attr('transform', () => `translate(${source.y},${source.x})`)\n\t\t\t\t.attr('fill-opacity', 0)\n\t\t\t\t.attr('stroke-opacity', 0);\n\n\t\t\t// Update data on links\n\t\t\tconst linkPaths = linkGroup\n\t\t\t\t.selectAll('path')\n\t\t\t\t.data(links, (d) => d.target.id);\n\n\t\t\t// Add any entering link paths\n\t\t\tconst linkPathsEnter = linkPaths\n\t\t\t\t.enter()\n\t\t\t\t.append('path')\n\t\t\t\t.attr('d', (d) => {\n\t\t\t\t\tconst o = { x: source.x0, y: source.y0 };\n\t\t\t\t\treturn diagonal({ source: o, target: o });\n\t\t\t\t});\n\n\t\t\t// Reposition updating link paths\n\t\t\tlinkPaths\n\t\t\t\t.merge(linkPathsEnter)\n\t\t\t\t.transition(transition)\n\t\t\t\t.attr('d', diagonal);\n\n\t\t\t// Remove any exiting link paths\n\t\t\tlinkPaths\n\t\t\t\t.exit()\n\t\t\t\t.transition(transition)\n\t\t\t\t.remove()\n\t\t\t\t.attr('d', () => {\n\t\t\t\t\tconst o = { x: source.x, y: source.y };\n\t\t\t\t\treturn diagonal({ source: o, target: o });\n\t\t\t\t});\n\n\t\t\t// Update position data for nodes\n\t\t\troot.eachBefore((d) => {\n\t\t\t\td.x0 = d.x;\n\t\t\t\td.y0 = d.y;\n\t\t\t});\n\t\t};\n\n\t\tconst descendants = root.descendants();\n\t\tconst maxDepth = descendants[descendants.length - 1].depth;\n\n\t\tconst tree =\n\t\t\tTools.getProperty(options, 'tree', 'type') === TreeTypes.DENDROGRAM\n\t\t\t\t? d3Cluster().size([\n\t\t\t\t\t\theight,\n\t\t\t\t\t\twidth -\n\t\t\t\t\t\t\tmockLongestLabelWidth -\n\t\t\t\t\t\t\tmaxDepth * NODE_OFFSET -\n\t\t\t\t\t\t\tmockRootTitleWidth,\n\t\t\t\t ])\n\t\t\t\t: d3Tree()\n\t\t\t\t\t\t.nodeSize([dx, dy])\n\t\t\t\t\t\t.size([\n\t\t\t\t\t\t\theight,\n\t\t\t\t\t\t\twidth -\n\t\t\t\t\t\t\t\tmockLongestLabelWidth -\n\t\t\t\t\t\t\t\tmaxDepth * NODE_OFFSET -\n\t\t\t\t\t\t\t\tmockRootTitleWidth,\n\t\t\t\t\t\t]);\n\n\t\tconst diagonal = linkHorizontal()\n\t\t\t.x((d: any) => d.y)\n\t\t\t.y((d: any) => d.x) as any;\n\n\t\troot.x0 = dy / 2;\n\t\troot.y0 = 0;\n\t\troot.descendants().forEach((d, i) => {\n\t\t\td.id = i;\n\t\t\td._children = d.children;\n\t\t});\n\n\t\ttree(root);\n\n\t\tsvg.attr('viewBox', [-margin.left, -margin.top, width, dx]).style(\n\t\t\t'user-select',\n\t\t\t'none'\n\t\t);\n\n\t\tconst linkGroup = svg.append('g').attr('class', 'links');\n\t\tconst nodeGroup = svg.append('g').attr('class', 'nodes');\n\n\t\tupdate(root);\n\t}\n}\n"]}
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["tree.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Events, RenderTypes, TreeTypes } from '../../interfaces';\nimport * as Tools from '../../tools';\n\n// D3 Imports\nimport { cluster as d3Cluster, tree as d3Tree, hierarchy } from 'd3-hierarchy';\nimport { linkHorizontal } from 'd3-shape';\nimport { select } from 'd3-selection';\n\nconst NODE_OFFSET = 6;\n\nexport class Tree extends Component {\n\ttype = 'tree';\n\trenderType = RenderTypes.SVG;\n\n\tgetLongestLabel(data) {\n\t\tlet longestLabel = '';\n\t\tdata.forEach((d) => {\n\t\t\tlet longestLabelInChildren = d.children\n\t\t\t\t? this.getLongestLabel(d.children)\n\t\t\t\t: '';\n\t\t\tif (\n\t\t\t\tlongestLabelInChildren.length > longestLabel.length ||\n\t\t\t\td.name.length > longestLabel.length\n\t\t\t) {\n\t\t\t\tlongestLabel =\n\t\t\t\t\tlongestLabelInChildren.length > d.name.length\n\t\t\t\t\t\t? longestLabelInChildren\n\t\t\t\t\t\t: d.name;\n\t\t\t}\n\t\t});\n\n\t\treturn longestLabel;\n\t}\n\n\tgetMockLabelWidth(svg, label) {\n\t\t// Add mock label to get dimensions\n\t\tconst mockLabel = svg\n\t\t\t.append('text')\n\t\t\t.attr('dy', '0.31em')\n\t\t\t.attr('x', 0)\n\t\t\t.attr('text-anchor', 'end')\n\t\t\t.text(label);\n\n\t\t// Get the mock label width\n\t\tconst { width: mockLabelWidth } = DOMUtils.getSVGElementSize(\n\t\t\tmockLabel.node(),\n\t\t\t{\n\t\t\t\tuseBBox: true,\n\t\t\t}\n\t\t);\n\n\t\t// Remove the mock title label\n\t\tmockLabel.remove();\n\n\t\treturn mockLabelWidth;\n\t}\n\n\trender(animate = true) {\n\t\tconst svg = this.getComponentContainer();\n\n\t\t// Empty out the svg before rendering the tree\n\t\tsvg.html('');\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tif (width < 1 || height < 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst options = this.model.getOptions();\n\t\tconst displayData = this.model.getDisplayData();\n\n\t\tconst rootTitle =\n\t\t\tTools.getProperty(options, 'tree', 'rootTitle') || 'Tree';\n\n\t\tconst mockRootTitleWidth = this.getMockLabelWidth(svg, rootTitle);\n\n\t\tlet longestLabel = this.getLongestLabel(displayData);\n\t\tconst mockLongestLabelWidth = this.getMockLabelWidth(svg, longestLabel);\n\n\t\tconst margin = {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft:\n\t\t\t\tmockRootTitleWidth > 0\n\t\t\t\t\t? mockRootTitleWidth + NODE_OFFSET\n\t\t\t\t\t: 30 - NODE_OFFSET,\n\t\t};\n\t\tconst root = hierarchy({\n\t\t\tname: rootTitle,\n\t\t\tchildren: displayData,\n\t\t}) as any;\n\n\t\tconst dx = 10;\n\t\tconst dy = width / 6;\n\n\t\tconst update = (source) => {\n\t\t\tconst nodes = root.descendants().reverse();\n\t\t\tconst links = root.links();\n\n\t\t\tlet left = root;\n\t\t\tlet right = root;\n\t\t\troot.eachBefore((node) => {\n\t\t\t\tif (node.x < left.x) left = node;\n\t\t\t\tif (node.x > right.x) right = node;\n\t\t\t});\n\n\t\t\tconst height = right.x - left.x;\n\n\t\t\tconst transition = svg\n\t\t\t\t.transition()\n\t\t\t\t.call((t) =>\n\t\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\tname: 'tree-update-viewbox',\n\t\t\t\t\t\tanimate: true,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('viewBox', [-margin.left, left.x, width, height]);\n\n\t\t\t// Update data on nodes\n\t\t\tconst nodeGroups = nodeGroup\n\t\t\t\t.selectAll('g')\n\t\t\t\t.data(nodes, (d) => d.id);\n\n\t\t\tconst self = this;\n\t\t\t// Add any entering nodes\n\t\t\tconst nodeGroupsEnter = nodeGroups\n\t\t\t\t.enter()\n\t\t\t\t.append('g')\n\t\t\t\t.attr('transform', () => `translate(${source.y0},${source.x0})`)\n\t\t\t\t.attr('class', (d) =>\n\t\t\t\t\td.depth !== 0 && d.children && d.children.length > 0\n\t\t\t\t\t\t? 'clickable'\n\t\t\t\t\t\t: null\n\t\t\t\t)\n\t\t\t\t.on('mouseover', function (event, d) {\n\t\t\t\t\t// Dispatch mouse event\n\t\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\t\tEvents.Tree.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: select(this),\n\t\t\t\t\t\t\tdatum: d,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.on('click', function (event, d) {\n\t\t\t\t\tif (d.depth !== 0) {\n\t\t\t\t\t\td.children = d.children ? null : d._children;\n\n\t\t\t\t\t\tupdate(d);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Dispatch mouse event\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tree.NODE_CLICK, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum: d,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.on('mouseout', function (event, d) {\n\t\t\t\t\t// Dispatch mouse event\n\t\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\t\tEvents.Tree.NODE_MOUSEOUT,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\t\tdatum: d,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t// Add node circles to entering nodes\n\t\t\tnodeGroupsEnter\n\t\t\t\t.append('circle')\n\t\t\t\t.attr('r', 2.5)\n\t\t\t\t.attr('class', (d) => (d._children ? 'parent' : 'child'))\n\t\t\t\t.attr('stroke-width', 10);\n\n\t\t\t// Add node labels\n\t\t\tnodeGroupsEnter\n\t\t\t\t.append('text')\n\t\t\t\t.attr('dy', '0.31em')\n\t\t\t\t.attr('x', (d) => (d._children ? -NODE_OFFSET : NODE_OFFSET))\n\t\t\t\t.attr('text-anchor', (d) => (d._children ? 'end' : 'start'))\n\t\t\t\t.text((d) => d.data.name)\n\t\t\t\t.clone(true)\n\t\t\t\t.attr('class', 'text-stroke')\n\t\t\t\t.lower();\n\n\t\t\t// Reposition nodes\n\t\t\tnodeGroups\n\t\t\t\t.merge(nodeGroupsEnter)\n\t\t\t\t.transition(transition)\n\t\t\t\t.attr('transform', (d) => `translate(${d.y},${d.x})`)\n\t\t\t\t.attr('fill-opacity', 1)\n\t\t\t\t.attr('stroke-opacity', 1);\n\n\t\t\t// Remove exiting nodes\n\t\t\tnodeGroups\n\t\t\t\t.exit()\n\t\t\t\t.transition(transition)\n\t\t\t\t.remove()\n\t\t\t\t.attr('transform', () => `translate(${source.y},${source.x})`)\n\t\t\t\t.attr('fill-opacity', 0)\n\t\t\t\t.attr('stroke-opacity', 0);\n\n\t\t\t// Update data on links\n\t\t\tconst linkPaths = linkGroup\n\t\t\t\t.selectAll('path')\n\t\t\t\t.data(links, (d) => d.target.id);\n\n\t\t\t// Add any entering link paths\n\t\t\tconst linkPathsEnter = linkPaths\n\t\t\t\t.enter()\n\t\t\t\t.append('path')\n\t\t\t\t.attr('d', (d) => {\n\t\t\t\t\tconst o = { x: source.x0, y: source.y0 };\n\t\t\t\t\treturn diagonal({ source: o, target: o });\n\t\t\t\t});\n\n\t\t\t// Reposition updating link paths\n\t\t\tlinkPaths\n\t\t\t\t.merge(linkPathsEnter)\n\t\t\t\t.transition(transition)\n\t\t\t\t.attr('d', diagonal);\n\n\t\t\t// Remove any exiting link paths\n\t\t\tlinkPaths\n\t\t\t\t.exit()\n\t\t\t\t.transition(transition)\n\t\t\t\t.remove()\n\t\t\t\t.attr('d', () => {\n\t\t\t\t\tconst o = { x: source.x, y: source.y };\n\t\t\t\t\treturn diagonal({ source: o, target: o });\n\t\t\t\t});\n\n\t\t\t// Update position data for nodes\n\t\t\troot.eachBefore((d) => {\n\t\t\t\td.x0 = d.x;\n\t\t\t\td.y0 = d.y;\n\t\t\t});\n\t\t};\n\n\t\tconst descendants = root.descendants();\n\t\tconst maxDepth = descendants[descendants.length - 1].depth;\n\n\t\tconst tree =\n\t\t\tTools.getProperty(options, 'tree', 'type') === TreeTypes.DENDROGRAM\n\t\t\t\t? d3Cluster().size([\n\t\t\t\t\t\theight,\n\t\t\t\t\t\twidth -\n\t\t\t\t\t\t\tmockLongestLabelWidth -\n\t\t\t\t\t\t\tmaxDepth * NODE_OFFSET -\n\t\t\t\t\t\t\tmockRootTitleWidth,\n\t\t\t\t ])\n\t\t\t\t: d3Tree()\n\t\t\t\t\t\t.nodeSize([dx, dy])\n\t\t\t\t\t\t.size([\n\t\t\t\t\t\t\theight,\n\t\t\t\t\t\t\twidth -\n\t\t\t\t\t\t\t\tmockLongestLabelWidth -\n\t\t\t\t\t\t\t\tmaxDepth * NODE_OFFSET -\n\t\t\t\t\t\t\t\tmockRootTitleWidth,\n\t\t\t\t\t\t]);\n\n\t\tconst diagonal = linkHorizontal()\n\t\t\t.x((d: any) => d.y)\n\t\t\t.y((d: any) => d.x) as any;\n\n\t\troot.x0 = dy / 2;\n\t\troot.y0 = 0;\n\t\troot.descendants().forEach((d, i) => {\n\t\t\td.id = i;\n\t\t\td._children = d.children;\n\t\t});\n\n\t\ttree(root);\n\n\t\tsvg.attr('viewBox', [-margin.left, -margin.top, width, dx]).style(\n\t\t\t'user-select',\n\t\t\t'none'\n\t\t);\n\n\t\tconst linkGroup = svg.append('g').attr('class', 'links');\n\t\tconst nodeGroup = svg.append('g').attr('class', 'nodes');\n\n\t\tupdate(root);\n\t}\n}\n"]}
@@ -15,7 +15,7 @@ var __extends = (this && this.__extends) || (function () {
15
15
  import { Component } from '../component';
16
16
  import { DOMUtils } from '../../services';
17
17
  import { Events, ColorClassNameTypes, RenderTypes } from '../../interfaces';
18
- import { Tools } from '../../tools';
18
+ import * as Tools from '../../tools';
19
19
  // D3 Imports
20
20
  import { hierarchy as d3Hierarchy, treemap as d3Treemap } from 'd3-hierarchy';
21
21
  import { hsl, color } from 'd3-color';
@@ -1 +1 @@
1
- {"version":3,"file":"treemap.js","sourceRoot":"","sources":["treemap.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Events, ColorClassNameTypes, RenderTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { hierarchy as d3Hierarchy, treemap as d3Treemap } from 'd3-hierarchy';\nimport { sum } from 'd3-array';\nimport { hsl, color } from 'd3-color';\nimport { select } from 'd3-selection';\n\n// Carbon colors\nimport { colors } from '@carbon/colors';\n\nconst findColorShade = (hex) => {\n\tif (!hex) {\n\t\treturn null;\n\t}\n\n\tfor (let colorName of Object.keys(colors)) {\n\t\tconst colorShades = colors[colorName];\n\n\t\tfor (let colorShadeLevel of Object.keys(colorShades)) {\n\t\t\tconst colorShade = colorShades[colorShadeLevel];\n\n\t\t\tif (colorShade === hex) {\n\t\t\t\treturn colorShadeLevel;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n};\n\nconst textFillColor = function () {\n\tconst correspondingLeaf = select(this.parentNode).select(\n\t\t'rect.leaf'\n\t) as any;\n\tconst correspondingLeafFill = getComputedStyle(\n\t\tcorrespondingLeaf.node(),\n\t\tnull\n\t).getPropertyValue('fill');\n\tconst cl = color(correspondingLeafFill) as any;\n\n\tlet colorShade;\n\tif (cl) {\n\t\tcolorShade = findColorShade(cl ? cl.hex() : null);\n\t}\n\n\tif (colorShade === null || colorShade === undefined) {\n\t\tconst lightness = hsl(cl).l;\n\t\tcolorShade = Math.abs(lightness * 100 - 100);\n\t}\n\n\treturn colorShade > 50 ? 'white' : 'black';\n};\n\nlet uidCounter = 0;\nexport class Treemap extends Component {\n\ttype = 'treemap';\n\trenderType = RenderTypes.SVG;\n\n\tinit() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct circle on legend item hovers\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\t// Un-highlight circles on legend item mouseouts\n\t\tevents.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\tconst svg = this.getComponentContainer();\n\n\t\tconst allData = this.model.getData();\n\t\tconst displayData = this.model.getDisplayData();\n\t\tconst options = this.model.getOptions();\n\n\t\tconst windowLocation = Tools.getProperty(window, 'location');\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tconst hierarchy = d3Hierarchy({\n\t\t\tname: options.title || 'Treemap',\n\t\t\tchildren: displayData,\n\t\t})\n\t\t\t.sum((d: any) => d.value)\n\t\t\t.sort((a, b) => b.value - a.value);\n\n\t\tconst root = d3Treemap()\n\t\t\t.size([width, height])\n\t\t\t.paddingInner(1)\n\t\t\t.paddingOuter(0)\n\t\t\t.round(true)(hierarchy);\n\t\tconst { transitions } = this.services;\n\n\t\tconst leafGroups = svg\n\t\t\t.selectAll(\"g[data-name='leaf']\")\n\t\t\t.data(root.leaves(), (leaf) => leaf.data.name);\n\n\t\t// Remove leaf groups that need to be removed\n\t\tleafGroups.exit().attr('opacity', 0).remove();\n\n\t\t// Add the leaf groups that need to be introduced\n\t\tconst enteringLeafGroups = leafGroups\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.attr('data-name', 'leaf')\n\t\t\t.attr('data-uid', () => uidCounter++);\n\n\t\tconst allLeafGroups = enteringLeafGroups.merge(leafGroups);\n\n\t\tallLeafGroups\n\t\t\t.attr('data-name', 'leaf')\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: 'treemap-group-update',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('transform', (d) => `translate(${d.x0},${d.y0})`);\n\n\t\tconst rects = allLeafGroups.selectAll('rect.leaf').data((d) => [d]);\n\n\t\trects.exit().attr('width', 0).attr('height', 0).remove();\n\n\t\tconst enteringRects = rects\n\t\t\t.enter()\n\t\t\t.append('rect')\n\t\t\t.classed('leaf', true);\n\n\t\tenteringRects\n\t\t\t.merge(rects)\n\t\t\t.attr('width', 0)\n\t\t\t.attr('height', 0)\n\t\t\t.attr('id', function () {\n\t\t\t\tconst uid = select(this.parentNode).attr('data-uid');\n\t\t\t\treturn `${options.style.prefix}-leaf-${uid}`;\n\t\t\t})\n\t\t\t.attr('class', (d) => {\n\t\t\t\twhile (d.depth > 1) d = d.parent;\n\n\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: d.data.name,\n\t\t\t\t\toriginalClassName: 'leaf',\n\t\t\t\t});\n\t\t\t})\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: 'treemap-leaf-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('width', (d) => d.x1 - d.x0)\n\t\t\t.attr('height', (d) => d.y1 - d.y0)\n\t\t\t.style('fill', (d) => {\n\t\t\t\twhile (d.depth > 1) d = d.parent;\n\t\t\t\treturn this.model.getFillColor(d.data.name);\n\t\t\t});\n\n\t\t// Update all clip paths\n\t\tallLeafGroups\n\t\t\t.selectAll('clipPath')\n\t\t\t.data(\n\t\t\t\t(d) => {\n\t\t\t\t\tif (d.data.showLabel !== true) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [1];\n\t\t\t\t},\n\t\t\t\t(d) => d\n\t\t\t)\n\t\t\t.join(\n\t\t\t\t(enter) => {\n\t\t\t\t\tenter\n\t\t\t\t\t\t.append('clipPath')\n\t\t\t\t\t\t.attr('id', function () {\n\t\t\t\t\t\t\tconst uid = select(this.parentNode).attr(\n\t\t\t\t\t\t\t\t'data-uid'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn `${options.style.prefix}-clip-${uid}`;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.append('use')\n\t\t\t\t\t\t.attr('xlink:href', function () {\n\t\t\t\t\t\t\tconst uid = select(this.parentNode.parentNode).attr(\n\t\t\t\t\t\t\t\t'data-uid'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst leafID = `${options.style.prefix}-leaf-${uid}`;\n\n\t\t\t\t\t\t\treturn new URL(`#${leafID}`, windowLocation) + '';\n\t\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t(update) => null,\n\t\t\t\t(exit) => exit.remove()\n\t\t\t);\n\n\t\t// Update all titles\n\t\tallLeafGroups\n\t\t\t.selectAll('text')\n\t\t\t.data(\n\t\t\t\t(d) => {\n\t\t\t\t\tif (d.data.showLabel !== true) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tlet parent = d;\n\t\t\t\t\twhile (parent.depth > 1) parent = parent.parent;\n\t\t\t\t\tconst color = hsl(\n\t\t\t\t\t\tthis.model.getFillColor(parent.data.name)\n\t\t\t\t\t);\n\t\t\t\t\treturn [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttext: d.data.name,\n\t\t\t\t\t\t\tcolor: color.l < 0.5 ? 'white' : 'black',\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t},\n\t\t\t\t(d) => d\n\t\t\t)\n\t\t\t.join(\n\t\t\t\t(enter) => {\n\t\t\t\t\tconst addedText = enter\n\t\t\t\t\t\t.append('text')\n\t\t\t\t\t\t.text((d) => d.text)\n\t\t\t\t\t\t.style('fill', textFillColor)\n\t\t\t\t\t\t.attr('x', 7)\n\t\t\t\t\t\t.attr('y', 18);\n\n\t\t\t\t\tif (windowLocation) {\n\t\t\t\t\t\taddedText.attr('clip-path', function () {\n\t\t\t\t\t\t\tconst uid = select(this.parentNode).attr(\n\t\t\t\t\t\t\t\t'data-uid'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst clipPathID = `${options.style.prefix}-clip-${uid}`;\n\n\t\t\t\t\t\t\treturn `url(${\n\t\t\t\t\t\t\t\tnew URL(`#${clipPathID}`, windowLocation) + ''\n\t\t\t\t\t\t\t})`;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t(update) =>\n\t\t\t\t\tupdate.text((d) => d.text).style('fill', textFillColor),\n\t\t\t\t(exit) => exit.remove()\n\t\t\t);\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('rect.leaf')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tlet fillColor = getComputedStyle(this, null).getPropertyValue(\n\t\t\t\t\t'fill'\n\t\t\t\t);\n\n\t\t\t\tlet parent = datum;\n\t\t\t\twhile (parent.depth > 1) parent = parent.parent;\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.transition('graph_element_mouseover_fill_update')\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: 'graph_element_mouseover_fill_update',\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.style('fill', (d: any) => {\n\t\t\t\t\t\tconst customColor = self.model.getFillColor(\n\t\t\t\t\t\t\td.parent.data.name\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (customColor) {\n\t\t\t\t\t\t\tfillColor = customColor;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn color(fillColor).darker(0.7).toString();\n\t\t\t\t\t});\n\n\t\t\t\t// Show tooltip\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\tcolor: fillColor,\n\t\t\t\t\t\t\tlabel: parent.data.name,\n\t\t\t\t\t\t\tbold: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: datum.data.name,\n\t\t\t\t\t\t\tvalue: datum.data.value,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Treemap.LEAF_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\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Treemap.LEAF_MOUSEMOVE,\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\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 event\n\t\t\t\tself.services.events.dispatchEvent(Events.Treemap.LEAF_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\thoveredElement.classed('hovered', false);\n\n\t\t\t\tlet parent = datum;\n\t\t\t\twhile (parent.depth > 1) parent = parent.parent;\n\n\t\t\t\thoveredElement\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: 'graph_element_mouseout_fill_update',\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.style('fill', (d: any) =>\n\t\t\t\t\t\tself.model.getFillColor(d.parent.data.name)\n\t\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Treemap.LEAF_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// Hide tooltip\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\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tthis.parent\n\t\t\t.selectAll(\"g[data-name='leaf']\")\n\t\t\t.transition('legend-hover-treemap')\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-treemap',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td.parent.data.name === hoveredElement.datum()['name'] ? 1 : 0.3\n\t\t\t);\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll(\"g[data-name='leaf']\")\n\t\t\t.transition('legend-mouseout-treemap')\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-treemap',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n}\n"]}
1
+ {"version":3,"file":"treemap.js","sourceRoot":"","sources":["treemap.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Events, ColorClassNameTypes, RenderTypes } from '../../interfaces';\nimport * as Tools from '../../tools';\n\n// D3 Imports\nimport { hierarchy as d3Hierarchy, treemap as d3Treemap } from 'd3-hierarchy';\nimport { sum } from 'd3-array';\nimport { hsl, color } from 'd3-color';\nimport { select } from 'd3-selection';\n\n// Carbon colors\nimport { colors } from '@carbon/colors';\n\nconst findColorShade = (hex) => {\n\tif (!hex) {\n\t\treturn null;\n\t}\n\n\tfor (let colorName of Object.keys(colors)) {\n\t\tconst colorShades = colors[colorName];\n\n\t\tfor (let colorShadeLevel of Object.keys(colorShades)) {\n\t\t\tconst colorShade = colorShades[colorShadeLevel];\n\n\t\t\tif (colorShade === hex) {\n\t\t\t\treturn colorShadeLevel;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n};\n\nconst textFillColor = function () {\n\tconst correspondingLeaf = select(this.parentNode).select(\n\t\t'rect.leaf'\n\t) as any;\n\tconst correspondingLeafFill = getComputedStyle(\n\t\tcorrespondingLeaf.node(),\n\t\tnull\n\t).getPropertyValue('fill');\n\tconst cl = color(correspondingLeafFill) as any;\n\n\tlet colorShade;\n\tif (cl) {\n\t\tcolorShade = findColorShade(cl ? cl.hex() : null);\n\t}\n\n\tif (colorShade === null || colorShade === undefined) {\n\t\tconst lightness = hsl(cl).l;\n\t\tcolorShade = Math.abs(lightness * 100 - 100);\n\t}\n\n\treturn colorShade > 50 ? 'white' : 'black';\n};\n\nlet uidCounter = 0;\nexport class Treemap extends Component {\n\ttype = 'treemap';\n\trenderType = RenderTypes.SVG;\n\n\tinit() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct circle on legend item hovers\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\t// Un-highlight circles on legend item mouseouts\n\t\tevents.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\tconst svg = this.getComponentContainer();\n\n\t\tconst allData = this.model.getData();\n\t\tconst displayData = this.model.getDisplayData();\n\t\tconst options = this.model.getOptions();\n\n\t\tconst windowLocation = Tools.getProperty(window, 'location');\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tconst hierarchy = d3Hierarchy({\n\t\t\tname: options.title || 'Treemap',\n\t\t\tchildren: displayData,\n\t\t})\n\t\t\t.sum((d: any) => d.value)\n\t\t\t.sort((a, b) => b.value - a.value);\n\n\t\tconst root = d3Treemap()\n\t\t\t.size([width, height])\n\t\t\t.paddingInner(1)\n\t\t\t.paddingOuter(0)\n\t\t\t.round(true)(hierarchy);\n\t\tconst { transitions } = this.services;\n\n\t\tconst leafGroups = svg\n\t\t\t.selectAll(\"g[data-name='leaf']\")\n\t\t\t.data(root.leaves(), (leaf) => leaf.data.name);\n\n\t\t// Remove leaf groups that need to be removed\n\t\tleafGroups.exit().attr('opacity', 0).remove();\n\n\t\t// Add the leaf groups that need to be introduced\n\t\tconst enteringLeafGroups = leafGroups\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.attr('data-name', 'leaf')\n\t\t\t.attr('data-uid', () => uidCounter++);\n\n\t\tconst allLeafGroups = enteringLeafGroups.merge(leafGroups);\n\n\t\tallLeafGroups\n\t\t\t.attr('data-name', 'leaf')\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: 'treemap-group-update',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('transform', (d) => `translate(${d.x0},${d.y0})`);\n\n\t\tconst rects = allLeafGroups.selectAll('rect.leaf').data((d) => [d]);\n\n\t\trects.exit().attr('width', 0).attr('height', 0).remove();\n\n\t\tconst enteringRects = rects\n\t\t\t.enter()\n\t\t\t.append('rect')\n\t\t\t.classed('leaf', true);\n\n\t\tenteringRects\n\t\t\t.merge(rects)\n\t\t\t.attr('width', 0)\n\t\t\t.attr('height', 0)\n\t\t\t.attr('id', function () {\n\t\t\t\tconst uid = select(this.parentNode).attr('data-uid');\n\t\t\t\treturn `${options.style.prefix}-leaf-${uid}`;\n\t\t\t})\n\t\t\t.attr('class', (d) => {\n\t\t\t\twhile (d.depth > 1) d = d.parent;\n\n\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: d.data.name,\n\t\t\t\t\toriginalClassName: 'leaf',\n\t\t\t\t});\n\t\t\t})\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: 'treemap-leaf-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('width', (d) => d.x1 - d.x0)\n\t\t\t.attr('height', (d) => d.y1 - d.y0)\n\t\t\t.style('fill', (d) => {\n\t\t\t\twhile (d.depth > 1) d = d.parent;\n\t\t\t\treturn this.model.getFillColor(d.data.name);\n\t\t\t});\n\n\t\t// Update all clip paths\n\t\tallLeafGroups\n\t\t\t.selectAll('clipPath')\n\t\t\t.data(\n\t\t\t\t(d) => {\n\t\t\t\t\tif (d.data.showLabel !== true) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [1];\n\t\t\t\t},\n\t\t\t\t(d) => d\n\t\t\t)\n\t\t\t.join(\n\t\t\t\t(enter) => {\n\t\t\t\t\tenter\n\t\t\t\t\t\t.append('clipPath')\n\t\t\t\t\t\t.attr('id', function () {\n\t\t\t\t\t\t\tconst uid = select(this.parentNode).attr(\n\t\t\t\t\t\t\t\t'data-uid'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn `${options.style.prefix}-clip-${uid}`;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.append('use')\n\t\t\t\t\t\t.attr('xlink:href', function () {\n\t\t\t\t\t\t\tconst uid = select(this.parentNode.parentNode).attr(\n\t\t\t\t\t\t\t\t'data-uid'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst leafID = `${options.style.prefix}-leaf-${uid}`;\n\n\t\t\t\t\t\t\treturn new URL(`#${leafID}`, windowLocation) + '';\n\t\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t(update) => null,\n\t\t\t\t(exit) => exit.remove()\n\t\t\t);\n\n\t\t// Update all titles\n\t\tallLeafGroups\n\t\t\t.selectAll('text')\n\t\t\t.data(\n\t\t\t\t(d) => {\n\t\t\t\t\tif (d.data.showLabel !== true) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tlet parent = d;\n\t\t\t\t\twhile (parent.depth > 1) parent = parent.parent;\n\t\t\t\t\tconst color = hsl(\n\t\t\t\t\t\tthis.model.getFillColor(parent.data.name)\n\t\t\t\t\t);\n\t\t\t\t\treturn [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttext: d.data.name,\n\t\t\t\t\t\t\tcolor: color.l < 0.5 ? 'white' : 'black',\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t},\n\t\t\t\t(d) => d\n\t\t\t)\n\t\t\t.join(\n\t\t\t\t(enter) => {\n\t\t\t\t\tconst addedText = enter\n\t\t\t\t\t\t.append('text')\n\t\t\t\t\t\t.text((d) => d.text)\n\t\t\t\t\t\t.style('fill', textFillColor)\n\t\t\t\t\t\t.attr('x', 7)\n\t\t\t\t\t\t.attr('y', 18);\n\n\t\t\t\t\tif (windowLocation) {\n\t\t\t\t\t\taddedText.attr('clip-path', function () {\n\t\t\t\t\t\t\tconst uid = select(this.parentNode).attr(\n\t\t\t\t\t\t\t\t'data-uid'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst clipPathID = `${options.style.prefix}-clip-${uid}`;\n\n\t\t\t\t\t\t\treturn `url(${\n\t\t\t\t\t\t\t\tnew URL(`#${clipPathID}`, windowLocation) + ''\n\t\t\t\t\t\t\t})`;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t(update) =>\n\t\t\t\t\tupdate.text((d) => d.text).style('fill', textFillColor),\n\t\t\t\t(exit) => exit.remove()\n\t\t\t);\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('rect.leaf')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tlet fillColor = getComputedStyle(this, null).getPropertyValue(\n\t\t\t\t\t'fill'\n\t\t\t\t);\n\n\t\t\t\tlet parent = datum;\n\t\t\t\twhile (parent.depth > 1) parent = parent.parent;\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.transition('graph_element_mouseover_fill_update')\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: 'graph_element_mouseover_fill_update',\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.style('fill', (d: any) => {\n\t\t\t\t\t\tconst customColor = self.model.getFillColor(\n\t\t\t\t\t\t\td.parent.data.name\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (customColor) {\n\t\t\t\t\t\t\tfillColor = customColor;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn color(fillColor).darker(0.7).toString();\n\t\t\t\t\t});\n\n\t\t\t\t// Show tooltip\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\tcolor: fillColor,\n\t\t\t\t\t\t\tlabel: parent.data.name,\n\t\t\t\t\t\t\tbold: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: datum.data.name,\n\t\t\t\t\t\t\tvalue: datum.data.value,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Treemap.LEAF_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\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Treemap.LEAF_MOUSEMOVE,\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\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 event\n\t\t\t\tself.services.events.dispatchEvent(Events.Treemap.LEAF_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\thoveredElement.classed('hovered', false);\n\n\t\t\t\tlet parent = datum;\n\t\t\t\twhile (parent.depth > 1) parent = parent.parent;\n\n\t\t\t\thoveredElement\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: 'graph_element_mouseout_fill_update',\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.style('fill', (d: any) =>\n\t\t\t\t\t\tself.model.getFillColor(d.parent.data.name)\n\t\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Treemap.LEAF_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// Hide tooltip\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\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tthis.parent\n\t\t\t.selectAll(\"g[data-name='leaf']\")\n\t\t\t.transition('legend-hover-treemap')\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-treemap',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td.parent.data.name === hoveredElement.datum()['name'] ? 1 : 0.3\n\t\t\t);\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll(\"g[data-name='leaf']\")\n\t\t\t.transition('legend-mouseout-treemap')\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-treemap',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n}\n"]}
@@ -15,7 +15,7 @@ var __extends = (this && this.__extends) || (function () {
15
15
  import { Component } from '../component';
16
16
  import { DOMUtils } from '../../services';
17
17
  import { Events, ColorClassNameTypes, RenderTypes } from '../../interfaces';
18
- import { Tools } from '../../tools';
18
+ import * as Tools from '../../tools';
19
19
  // D3 Imports
20
20
  import { select } from 'd3-selection';
21
21
  import { scaleLinear } from 'd3-scale';