@carbon/charts 0.41.96 → 0.41.99

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 (93) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/build/src/components/axes/toolbar.d.ts +2 -2
  3. package/build/src/components/axes/zoom-bar.d.ts +1 -1
  4. package/build/src/components/essentials/threshold.d.ts +4 -1
  5. package/build/src/components/graphs/area-stacked.d.ts +0 -1
  6. package/build/src/interfaces/axis-scales.d.ts +2 -2
  7. package/build/src/model.d.ts +1 -4
  8. package/build/src/services/essentials/transitions.d.ts +8 -1
  9. package/build/src/tools.d.ts +2 -2
  10. package/bundle.js +1 -1
  11. package/components/axes/axis.js +28 -7
  12. package/components/axes/axis.js.map +1 -1
  13. package/components/axes/grid-brush.js +9 -5
  14. package/components/axes/grid-brush.js.map +1 -1
  15. package/components/axes/grid.js +20 -4
  16. package/components/axes/grid.js.map +1 -1
  17. package/components/axes/ruler.js +11 -14
  18. package/components/axes/ruler.js.map +1 -1
  19. package/components/axes/toolbar.d.ts +2 -2
  20. package/components/axes/toolbar.js +5 -5
  21. package/components/axes/toolbar.js.map +1 -1
  22. package/components/axes/zero-line.js +9 -1
  23. package/components/axes/zero-line.js.map +1 -1
  24. package/components/axes/zoom-bar.d.ts +1 -1
  25. package/components/axes/zoom-bar.js +4 -5
  26. package/components/axes/zoom-bar.js.map +1 -1
  27. package/components/essentials/legend.js +11 -7
  28. package/components/essentials/legend.js.map +1 -1
  29. package/components/essentials/threshold.d.ts +4 -1
  30. package/components/essentials/threshold.js +30 -9
  31. package/components/essentials/threshold.js.map +1 -1
  32. package/components/essentials/title.js +12 -6
  33. package/components/essentials/title.js.map +1 -1
  34. package/components/essentials/tooltip.js +5 -2
  35. package/components/essentials/tooltip.js.map +1 -1
  36. package/components/graphs/area-stacked.d.ts +0 -1
  37. package/components/graphs/area-stacked.js +8 -9
  38. package/components/graphs/area-stacked.js.map +1 -1
  39. package/components/graphs/area.js +8 -6
  40. package/components/graphs/area.js.map +1 -1
  41. package/components/graphs/bar-grouped.js +33 -10
  42. package/components/graphs/bar-grouped.js.map +1 -1
  43. package/components/graphs/bar-simple.js +20 -7
  44. package/components/graphs/bar-simple.js.map +1 -1
  45. package/components/graphs/bar-stacked.js +20 -6
  46. package/components/graphs/bar-stacked.js.map +1 -1
  47. package/components/graphs/boxplot.js +80 -17
  48. package/components/graphs/boxplot.js.map +1 -1
  49. package/components/graphs/bubble.js +8 -1
  50. package/components/graphs/bubble.js.map +1 -1
  51. package/components/graphs/bullet.js +45 -10
  52. package/components/graphs/bullet.js.map +1 -1
  53. package/components/graphs/circle-pack.js +13 -6
  54. package/components/graphs/circle-pack.js.map +1 -1
  55. package/components/graphs/donut.js +9 -1
  56. package/components/graphs/donut.js.map +1 -1
  57. package/components/graphs/gauge.js +8 -4
  58. package/components/graphs/gauge.js.map +1 -1
  59. package/components/graphs/line.js +9 -7
  60. package/components/graphs/line.js.map +1 -1
  61. package/components/graphs/lollipop.js +8 -6
  62. package/components/graphs/lollipop.js.map +1 -1
  63. package/components/graphs/meter.js +16 -2
  64. package/components/graphs/meter.js.map +1 -1
  65. package/components/graphs/pie.js +23 -8
  66. package/components/graphs/pie.js.map +1 -1
  67. package/components/graphs/radar.js +12 -5
  68. package/components/graphs/radar.js.map +1 -1
  69. package/components/graphs/scatter.js +20 -6
  70. package/components/graphs/scatter.js.map +1 -1
  71. package/components/graphs/treemap.js +28 -7
  72. package/components/graphs/treemap.js.map +1 -1
  73. package/components/graphs/wordcloud.js +11 -5
  74. package/components/graphs/wordcloud.js.map +1 -1
  75. package/demo/data/bundle.js +1 -1
  76. package/demo/data/line.js +1 -1
  77. package/demo/data/line.js.map +1 -1
  78. package/demo/tsconfig.tsbuildinfo +2 -673
  79. package/interfaces/axis-scales.d.ts +2 -2
  80. package/interfaces/axis-scales.js.map +1 -1
  81. package/model.d.ts +1 -4
  82. package/model.js +4 -5
  83. package/model.js.map +1 -1
  84. package/package.json +4 -4
  85. package/services/essentials/transitions.d.ts +8 -1
  86. package/services/essentials/transitions.js +13 -1
  87. package/services/essentials/transitions.js.map +1 -1
  88. package/services/scales-cartesian.js +2 -3
  89. package/services/scales-cartesian.js.map +1 -1
  90. package/tools.d.ts +2 -2
  91. package/tools.js +11 -5
  92. package/tools.js.map +1 -1
  93. package/tsconfig.tsbuildinfo +192 -625
@@ -1 +1 @@
1
- {"version":3,"file":"gauge.js","sourceRoot":"","sources":["gauge.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport {\n\tRoles,\n\tEvents,\n\tGaugeTypes,\n\tArrowDirections,\n\tColorClassNameTypes,\n\tAlignments,\n\tRenderTypes,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { arc } from 'd3-shape';\n\n// arrow paths for delta\nconst ARROW_UP_PATH_STRING = '4,10 8,6 12,10';\nconst ARROW_DOWN_PATH_STRING = '12,6 8,10 4,6';\n\nexport class Gauge extends Component {\n\ttype = 'gauge';\n\trenderType = RenderTypes.SVG;\n\n\t// We need to store our arcs so that addEventListeners() can access them\n\tarc: any;\n\tbackgroundArc: any;\n\n\tgetValue(): number {\n\t\tconst data = this.model.getData();\n\t\tconst value = data.find((d) => d.group === 'value')?.value ?? null;\n\t\treturn value;\n\t}\n\n\tgetValueRatio(): number {\n\t\tconst value = Tools.clamp(this.getValue(), 0, 100);\n\t\treturn value / 100;\n\t}\n\n\tgetDelta(): number {\n\t\tconst data = this.model.getData();\n\t\tconst delta = data.find((d) => d.group === 'delta')?.value ?? null;\n\t\treturn delta;\n\t}\n\n\tgetArcRatio(): number {\n\t\tconst options = this.getOptions();\n\t\tconst type = Tools.getProperty(options, 'gauge', 'type');\n\t\tconst arcRatio = type === GaugeTypes.FULL ? 1 : 0.5;\n\t\treturn arcRatio;\n\t}\n\n\tgetArcSize(): number {\n\t\treturn this.getArcRatio() * Math.PI * 2;\n\t}\n\n\tgetStartAngle(): number {\n\t\tconst arcSize = this.getArcSize();\n\t\tif (arcSize === 2 * Math.PI) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn -arcSize / 2;\n\t}\n\n\t// use provided arrow direction or default to using the delta\n\tgetArrow(delta): string {\n\t\tconst options = this.getOptions();\n\t\tconst arrowDirection = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'direction'\n\t\t);\n\n\t\tswitch (arrowDirection) {\n\t\t\tcase ArrowDirections.UP:\n\t\t\t\treturn ARROW_UP_PATH_STRING;\n\t\t\tcase ArrowDirections.DOWN:\n\t\t\t\treturn ARROW_DOWN_PATH_STRING;\n\t\t\tdefault:\n\t\t\t\treturn delta > 0\n\t\t\t\t\t? ARROW_UP_PATH_STRING\n\t\t\t\t\t: ARROW_DOWN_PATH_STRING;\n\t\t}\n\t}\n\n\trender(animate = true) {\n\t\tconst svg = this.getComponentContainer()\n\t\t\t.attr('width', '100%')\n\t\t\t.attr('height', '100%');\n\t\tconst options = this.getOptions();\n\n\t\tconst value = this.getValue();\n\t\tconst valueRatio = this.getValueRatio();\n\t\tconst arcSize = this.getArcSize();\n\n\t\t// angles for drawing the gauge\n\t\tconst startAngle = this.getStartAngle();\n\t\tconst rotationAngle = valueRatio * arcSize;\n\t\tconst currentAngle = startAngle + rotationAngle;\n\t\tconst endAngle = startAngle + arcSize;\n\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\t\tconst innerRadius = this.getInnerRadius();\n\n\t\t// draw the container and arc\n\t\tthis.backgroundArc = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(radius)\n\t\t\t.startAngle(currentAngle)\n\t\t\t.endAngle(endAngle);\n\n\t\tthis.arc = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(radius)\n\t\t\t.startAngle(startAngle)\n\t\t\t.endAngle(currentAngle);\n\n\t\t// draw the container\n\t\tDOMUtils.appendOrSelect(svg, 'path.arc-background')\n\t\t\t.attr('d', this.backgroundArc)\n\t\t\t.attr('role', Roles.GROUP);\n\n\t\t// Add data arc\n\t\tconst arcValue = svg.selectAll('path.arc-foreground').data([value]);\n\t\tconst arcEnter = arcValue.enter().append('path');\n\n\t\tarcEnter\n\t\t\t.merge(arcValue)\n\t\t\t.attr(\n\t\t\t\t'class',\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: 'value',\n\t\t\t\t\toriginalClassName: 'arc-foreground',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) =>\n\t\t\t\tTools.getProperty(this.getOptions(), 'color', 'scale', 'value')\n\t\t\t)\n\t\t\t.attr('d', this.arc)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'value')\n\t\t\t.attr('aria-label', (d) => d.value);\n\n\t\t// draw the value and delta to the center\n\t\tthis.drawValueNumber();\n\t\tthis.drawDelta();\n\n\t\tarcValue.exit().remove();\n\n\t\tconst alignment = Tools.getProperty(options, 'gauge', 'alignment');\n\n\t\tconst { width } = DOMUtils.getSVGElementSize(this.getParent(), {\n\t\t\tuseAttr: true,\n\t\t});\n\n\t\t// Position gauge\n\t\tlet gaugeTranslateX = radius;\n\t\tif (alignment === Alignments.CENTER) {\n\t\t\tgaugeTranslateX = width / 2;\n\t\t} else if (alignment === Alignments.RIGHT) {\n\t\t\tgaugeTranslateX = width - radius;\n\t\t}\n\t\tsvg.attr('x', gaugeTranslateX).attr('y', radius);\n\n\t\t// Add event listeners\n\t\tthis.addEventListeners();\n\t}\n\n\t/**\n\t * draws the value number associated with the Gauge component in the center\n\t */\n\tdrawValueNumber() {\n\t\tconst svg = this.getComponentContainer();\n\t\tconst options = this.getOptions();\n\n\t\tconst arcType = Tools.getProperty(options, 'gauge', 'type');\n\t\tconst value = this.getValue();\n\t\tconst delta = this.getDelta();\n\n\t\t// Sizing and positions relative to the radius\n\t\tconst radius = this.computeRadius();\n\n\t\tconst valueFontSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'valueFontSize'\n\t\t);\n\t\t// if there is a delta, use the size to center the numbers, otherwise center the valueNumber\n\t\tconst deltaFontSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaFontSize'\n\t\t);\n\n\t\tconst numberSpacing = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberSpacing'\n\t\t);\n\n\t\tconst showPercentageSymbol = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'showPercentageSymbol'\n\t\t);\n\n\t\t// circular gauge without delta should have valueNumber centered\n\t\tlet numbersYPosition = 0;\n\t\tif (arcType === GaugeTypes.FULL && !delta) {\n\t\t\tnumbersYPosition = deltaFontSize(radius);\n\t\t} else if (arcType === GaugeTypes.SEMI && delta) {\n\t\t\t// semi circular gauge we want the numbers aligned to the chart container\n\t\t\tnumbersYPosition = -(deltaFontSize(radius) + numberSpacing);\n\t\t}\n\n\t\t// Add the numbers at the center\n\t\tconst numbersGroup = DOMUtils.appendOrSelect(\n\t\t\tsvg,\n\t\t\t'g.gauge-numbers'\n\t\t).attr('transform', `translate(0, ${numbersYPosition})`);\n\n\t\tconst fontSize = valueFontSize(radius);\n\t\t// Add the big number\n\t\tconst valueNumberGroup = DOMUtils.appendOrSelect(\n\t\t\tnumbersGroup,\n\t\t\t'g.gauge-value-number'\n\t\t);\n\n\t\tconst numberFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberFormatter'\n\t\t);\n\t\tconst valueNumber = valueNumberGroup\n\t\t\t.selectAll('text.gauge-value-number')\n\t\t\t.data([value]);\n\n\t\tvalueNumber\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.attr('class', 'gauge-value-number')\n\t\t\t.merge(valueNumber)\n\t\t\t.style('font-size', `${fontSize}px`)\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.text((d) => numberFormatter(d));\n\n\t\t// add the percentage symbol beside the valueNumber\n\t\tconst {\n\t\t\twidth: valueNumberWidth,\n\t\t} = DOMUtils.getSVGElementSize(\n\t\t\tDOMUtils.appendOrSelect(svg, 'text.gauge-value-number'),\n\t\t\t{ useBBox: true }\n\t\t);\n\n\t\tconst symbolFontSize = fontSize / 2;\n\t\tconst gaugeSymbol = showPercentageSymbol ? '%' : '';\n\t\tconst symbol = DOMUtils.appendOrSelect(\n\t\t\tvalueNumberGroup,\n\t\t\t'text.gauge-value-symbol'\n\t\t)\n\t\t\t.style('font-size', `${symbolFontSize}px`)\n\t\t\t.attr('x', valueNumberWidth / 2)\n\t\t\t.text(gaugeSymbol);\n\n\t\tconst {\n\t\t\twidth: symbolWidth,\n\t\t\theight: symbolHeight,\n\t\t} = DOMUtils.getSVGElementSize(symbol, { useBBox: true });\n\n\t\t// adjust the symbol to superscript using the bbox instead of the font-size cause\n\t\t// we want to align the actual character to the value number\n\t\tsymbol.attr('y', `-${symbolHeight / 2}px`);\n\n\t\t// move the value group depending on the symbol's drawn size\n\t\tvalueNumberGroup.attr('transform', `translate(-${symbolWidth / 2}, 0)`); // Optical centering for the presence of the smaller % symbol\n\t}\n\n\t/**\n\t * adds the delta number for the gauge\n\t */\n\tdrawDelta() {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer();\n\t\tconst options = this.getOptions();\n\t\tconst delta = this.getDelta();\n\n\t\t// Sizing and positions relative to the radius\n\t\tconst radius = this.computeRadius();\n\t\tconst deltaFontSize = delta\n\t\t\t? Tools.getProperty(options, 'gauge', 'deltaFontSize')\n\t\t\t: () => 0;\n\n\t\t// use numberFormatter here only if there is a delta supplied\n\t\tconst numberFormatter = delta\n\t\t\t? Tools.getProperty(options, 'gauge', 'numberFormatter')\n\t\t\t: () => null;\n\n\t\tconst arrowSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'size'\n\t\t);\n\t\tconst numberSpacing = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberSpacing'\n\t\t);\n\n\t\tconst showPercentageSymbol = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'showPercentageSymbol'\n\t\t);\n\n\t\tconst numbersGroup = DOMUtils.appendOrSelect(svg, 'g.gauge-numbers');\n\n\t\t// Add the smaller number of the delta\n\t\tconst deltaGroup = DOMUtils.appendOrSelect(\n\t\t\tnumbersGroup,\n\t\t\t'g.gauge-delta'\n\t\t).attr(\n\t\t\t'transform',\n\t\t\t`translate(0, ${deltaFontSize(radius) + numberSpacing})`\n\t\t);\n\n\t\tconst deltaNumber = DOMUtils.appendOrSelect(\n\t\t\tdeltaGroup,\n\t\t\t'text.gauge-delta-number'\n\t\t);\n\t\tconst gaugeSymbol = showPercentageSymbol ? '%' : '';\n\n\t\tdeltaNumber.data(delta === null ? [] : [delta]);\n\n\t\tdeltaNumber\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.classed('gauge-delta-number', true)\n\t\t\t.merge(deltaNumber)\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.style('font-size', `${deltaFontSize(radius)}px`)\n\t\t\t.text((d) => `${numberFormatter(d)}${gaugeSymbol}`);\n\n\t\t// Add the caret for the delta number\n\t\tconst {\n\t\t\twidth: deltaNumberWidth,\n\t\t} = DOMUtils.getSVGElementSize(\n\t\t\tDOMUtils.appendOrSelect(svg, '.gauge-delta-number'),\n\t\t\t{ useBBox: true }\n\t\t);\n\n\t\t// check if delta arrow is disabled\n\t\tconst arrowEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'enabled'\n\t\t);\n\n\t\tconst deltaArrow = deltaGroup\n\t\t\t.selectAll('svg.gauge-delta-arrow')\n\t\t\t.data(delta !== null && arrowEnabled ? [delta] : []);\n\n\t\tdeltaArrow\n\t\t\t.enter()\n\t\t\t.append('svg')\n\t\t\t.merge(deltaArrow)\n\t\t\t.attr('class', 'gauge-delta-arrow')\n\t\t\t.attr('x', -arrowSize(radius) - deltaNumberWidth / 2)\n\t\t\t.attr('y', -arrowSize(radius) / 2 - deltaFontSize(radius) * 0.35)\n\t\t\t.attr('width', arrowSize(radius))\n\t\t\t.attr('height', arrowSize(radius))\n\t\t\t.attr('viewBox', '0 0 16 16')\n\t\t\t/*\n\t\t\t * using .each() here to ensure that the below function runs\n\t\t\t * after svg.gauge-delta-arrow has been mounted onto the DOM\n\t\t\t */\n\t\t\t.each(function () {\n\t\t\t\tconst deltaArrowSelection = select(this);\n\n\t\t\t\t// Needed to correctly size SVG in Firefox\n\t\t\t\tDOMUtils.appendOrSelect(\n\t\t\t\t\tdeltaArrowSelection,\n\t\t\t\t\t'rect.gauge-delta-arrow-backdrop'\n\t\t\t\t)\n\t\t\t\t\t.attr('width', '16')\n\t\t\t\t\t.attr('height', '16')\n\t\t\t\t\t.attr('fill', 'none');\n\n\t\t\t\t// Draw the arrow with status\n\t\t\t\tconst status = Tools.getProperty(options, 'gauge', 'status');\n\t\t\t\tDOMUtils.appendOrSelect(deltaArrowSelection, 'polygon.gauge-delta-arrow')\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'class',\n\t\t\t\t\t\tstatus !== null\n\t\t\t\t\t\t\t? `gauge-delta-arrow status--${status}`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t)\n\t\t\t\t\t.attr('points', self.getArrow(delta));\n\t\t\t});\n\n\t\tdeltaArrow.exit().remove();\n\t\tdeltaNumber.exit().remove();\n\t}\n\n\tgetInnerRadius() {\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\t\tconst arcWidth = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'gauge',\n\t\t\t'arcWidth'\n\t\t);\n\t\treturn radius - arcWidth;\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('path.arc-foreground')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEOVER, {\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('mousemove', function (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(Events.Gauge.ARC_MOUSEMOVE, {\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_CLICK, {\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 (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(Events.Gauge.ARC_MOUSEOUT, {\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t// Helper functions\n\tprotected computeRadius() {\n\t\tconst options = this.getOptions();\n\t\tconst arcType = Tools.getProperty(options, 'gauge', 'type');\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\t\tconst radius =\n\t\t\tarcType === GaugeTypes.SEMI\n\t\t\t\t? Math.min(width / 2, height)\n\t\t\t\t: Math.min(width / 2, height / 2);\n\n\t\treturn radius;\n\t}\n}\n"]}
1
+ {"version":3,"file":"gauge.js","sourceRoot":"","sources":["gauge.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport {\n\tRoles,\n\tEvents,\n\tGaugeTypes,\n\tArrowDirections,\n\tColorClassNameTypes,\n\tAlignments,\n\tRenderTypes,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { arc } from 'd3-shape';\n\n// arrow paths for delta\nconst ARROW_UP_PATH_STRING = '4,10 8,6 12,10';\nconst ARROW_DOWN_PATH_STRING = '12,6 8,10 4,6';\n\nexport class Gauge extends Component {\n\ttype = 'gauge';\n\trenderType = RenderTypes.SVG;\n\n\t// We need to store our arcs so that addEventListeners() can access them\n\tarc: any;\n\tbackgroundArc: any;\n\n\tgetValue(): number {\n\t\tconst data = this.model.getData();\n\t\tconst value = data.find((d) => d.group === 'value')?.value ?? null;\n\t\treturn value;\n\t}\n\n\tgetValueRatio(): number {\n\t\tconst value = Tools.clamp(this.getValue(), 0, 100);\n\t\treturn value / 100;\n\t}\n\n\tgetDelta(): number {\n\t\tconst data = this.model.getData();\n\t\tconst delta = data.find((d) => d.group === 'delta')?.value ?? null;\n\t\treturn delta;\n\t}\n\n\tgetArcRatio(): number {\n\t\tconst options = this.getOptions();\n\t\tconst type = Tools.getProperty(options, 'gauge', 'type');\n\t\tconst arcRatio = type === GaugeTypes.FULL ? 1 : 0.5;\n\t\treturn arcRatio;\n\t}\n\n\tgetArcSize(): number {\n\t\treturn this.getArcRatio() * Math.PI * 2;\n\t}\n\n\tgetStartAngle(): number {\n\t\tconst arcSize = this.getArcSize();\n\t\tif (arcSize === 2 * Math.PI) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn -arcSize / 2;\n\t}\n\n\t// use provided arrow direction or default to using the delta\n\tgetArrow(delta): string {\n\t\tconst options = this.getOptions();\n\t\tconst arrowDirection = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'direction'\n\t\t);\n\n\t\tswitch (arrowDirection) {\n\t\t\tcase ArrowDirections.UP:\n\t\t\t\treturn ARROW_UP_PATH_STRING;\n\t\t\tcase ArrowDirections.DOWN:\n\t\t\t\treturn ARROW_DOWN_PATH_STRING;\n\t\t\tdefault:\n\t\t\t\treturn delta > 0\n\t\t\t\t\t? ARROW_UP_PATH_STRING\n\t\t\t\t\t: ARROW_DOWN_PATH_STRING;\n\t\t}\n\t}\n\n\trender(animate = true) {\n\t\tconst svg = this.getComponentContainer()\n\t\t\t.attr('width', '100%')\n\t\t\t.attr('height', '100%');\n\t\tconst options = this.getOptions();\n\n\t\tconst value = this.getValue();\n\t\tconst valueRatio = this.getValueRatio();\n\t\tconst arcSize = this.getArcSize();\n\n\t\t// angles for drawing the gauge\n\t\tconst startAngle = this.getStartAngle();\n\t\tconst rotationAngle = valueRatio * arcSize;\n\t\tconst currentAngle = startAngle + rotationAngle;\n\t\tconst endAngle = startAngle + arcSize;\n\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\t\tconst innerRadius = this.getInnerRadius();\n\n\t\t// draw the container and arc\n\t\tthis.backgroundArc = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(radius)\n\t\t\t.startAngle(currentAngle)\n\t\t\t.endAngle(endAngle);\n\n\t\tthis.arc = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(radius)\n\t\t\t.startAngle(startAngle)\n\t\t\t.endAngle(currentAngle);\n\n\t\t// draw the container\n\t\tDOMUtils.appendOrSelect(svg, 'path.arc-background')\n\t\t\t.attr('d', this.backgroundArc)\n\t\t\t.attr('role', Roles.GROUP);\n\n\t\t// Add data arc\n\t\tconst arcValue = svg.selectAll('path.arc-foreground').data([value]);\n\t\tconst arcEnter = arcValue.enter().append('path');\n\n\t\tarcEnter\n\t\t\t.merge(arcValue)\n\t\t\t.attr(\n\t\t\t\t'class',\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: 'value',\n\t\t\t\t\toriginalClassName: 'arc-foreground',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) =>\n\t\t\t\tTools.getProperty(this.getOptions(), 'color', 'scale', 'value')\n\t\t\t)\n\t\t\t.attr('d', this.arc)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'value')\n\t\t\t.attr('aria-label', (d) => d.value);\n\n\t\t// draw the value and delta to the center\n\t\tthis.drawValueNumber();\n\t\tthis.drawDelta();\n\n\t\tarcValue.exit().remove();\n\n\t\tconst alignment = Tools.getProperty(options, 'gauge', 'alignment');\n\n\t\tconst { width } = DOMUtils.getSVGElementSize(this.getParent(), {\n\t\t\tuseAttr: true,\n\t\t});\n\n\t\t// Position gauge\n\t\tlet gaugeTranslateX = radius;\n\t\tif (alignment === Alignments.CENTER) {\n\t\t\tgaugeTranslateX = width / 2;\n\t\t} else if (alignment === Alignments.RIGHT) {\n\t\t\tgaugeTranslateX = width - radius;\n\t\t}\n\t\tsvg.attr('x', gaugeTranslateX).attr('y', radius);\n\n\t\t// Add event listeners\n\t\tthis.addEventListeners();\n\t}\n\n\t/**\n\t * draws the value number associated with the Gauge component in the center\n\t */\n\tdrawValueNumber() {\n\t\tconst svg = this.getComponentContainer();\n\t\tconst options = this.getOptions();\n\n\t\tconst arcType = Tools.getProperty(options, 'gauge', 'type');\n\t\tconst value = this.getValue();\n\t\tconst delta = this.getDelta();\n\n\t\t// Sizing and positions relative to the radius\n\t\tconst radius = this.computeRadius();\n\n\t\tconst valueFontSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'valueFontSize'\n\t\t);\n\t\t// if there is a delta, use the size to center the numbers, otherwise center the valueNumber\n\t\tconst deltaFontSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaFontSize'\n\t\t);\n\n\t\tconst numberSpacing = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberSpacing'\n\t\t);\n\n\t\tconst showPercentageSymbol = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'showPercentageSymbol'\n\t\t);\n\n\t\t// circular gauge without delta should have valueNumber centered\n\t\tlet numbersYPosition = 0;\n\t\tif (arcType === GaugeTypes.FULL && !delta) {\n\t\t\tnumbersYPosition = deltaFontSize(radius);\n\t\t} else if (arcType === GaugeTypes.SEMI && delta) {\n\t\t\t// semi circular gauge we want the numbers aligned to the chart container\n\t\t\tnumbersYPosition = -(deltaFontSize(radius) + numberSpacing);\n\t\t}\n\n\t\t// Add the numbers at the center\n\t\tconst numbersGroup = DOMUtils.appendOrSelect(\n\t\t\tsvg,\n\t\t\t'g.gauge-numbers'\n\t\t).attr('transform', `translate(0, ${numbersYPosition})`);\n\n\t\tconst fontSize = valueFontSize(radius);\n\t\t// Add the big number\n\t\tconst valueNumberGroup = DOMUtils.appendOrSelect(\n\t\t\tnumbersGroup,\n\t\t\t'g.gauge-value-number'\n\t\t);\n\n\t\tconst numberFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberFormatter'\n\t\t);\n\t\tconst valueNumber = valueNumberGroup\n\t\t\t.selectAll('text.gauge-value-number')\n\t\t\t.data([value]);\n\n\t\tvalueNumber\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.attr('class', 'gauge-value-number')\n\t\t\t.merge(valueNumber)\n\t\t\t.style('font-size', `${fontSize}px`)\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.text((d) => numberFormatter(d));\n\n\t\t// add the percentage symbol beside the valueNumber\n\t\tconst {\n\t\t\twidth: valueNumberWidth,\n\t\t} = DOMUtils.getSVGElementSize(\n\t\t\tDOMUtils.appendOrSelect(svg, 'text.gauge-value-number'),\n\t\t\t{ useBBox: true }\n\t\t);\n\n\t\tconst symbolFontSize = fontSize / 2;\n\t\tconst gaugeSymbol = showPercentageSymbol ? '%' : '';\n\t\tconst symbol = DOMUtils.appendOrSelect(\n\t\t\tvalueNumberGroup,\n\t\t\t'text.gauge-value-symbol'\n\t\t)\n\t\t\t.style('font-size', `${symbolFontSize}px`)\n\t\t\t.attr('x', valueNumberWidth / 2)\n\t\t\t.text(gaugeSymbol);\n\n\t\tconst {\n\t\t\twidth: symbolWidth,\n\t\t\theight: symbolHeight,\n\t\t} = DOMUtils.getSVGElementSize(symbol, { useBBox: true });\n\n\t\t// adjust the symbol to superscript using the bbox instead of the font-size cause\n\t\t// we want to align the actual character to the value number\n\t\tsymbol.attr('y', `-${symbolHeight / 2}px`);\n\n\t\t// move the value group depending on the symbol's drawn size\n\t\tvalueNumberGroup.attr('transform', `translate(-${symbolWidth / 2}, 0)`); // Optical centering for the presence of the smaller % symbol\n\t}\n\n\t/**\n\t * adds the delta number for the gauge\n\t */\n\tdrawDelta() {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer();\n\t\tconst options = this.getOptions();\n\t\tconst delta = this.getDelta();\n\n\t\t// Sizing and positions relative to the radius\n\t\tconst radius = this.computeRadius();\n\t\tconst deltaFontSize = delta\n\t\t\t? Tools.getProperty(options, 'gauge', 'deltaFontSize')\n\t\t\t: () => 0;\n\n\t\t// use numberFormatter here only if there is a delta supplied\n\t\tconst numberFormatter = delta\n\t\t\t? Tools.getProperty(options, 'gauge', 'numberFormatter')\n\t\t\t: () => null;\n\n\t\tconst arrowSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'size'\n\t\t);\n\t\tconst numberSpacing = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberSpacing'\n\t\t);\n\n\t\tconst showPercentageSymbol = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'showPercentageSymbol'\n\t\t);\n\n\t\tconst numbersGroup = DOMUtils.appendOrSelect(svg, 'g.gauge-numbers');\n\n\t\t// Add the smaller number of the delta\n\t\tconst deltaGroup = DOMUtils.appendOrSelect(\n\t\t\tnumbersGroup,\n\t\t\t'g.gauge-delta'\n\t\t).attr(\n\t\t\t'transform',\n\t\t\t`translate(0, ${deltaFontSize(radius) + numberSpacing})`\n\t\t);\n\n\t\tconst deltaNumber = DOMUtils.appendOrSelect(\n\t\t\tdeltaGroup,\n\t\t\t'text.gauge-delta-number'\n\t\t);\n\t\tconst gaugeSymbol = showPercentageSymbol ? '%' : '';\n\n\t\tdeltaNumber.data(delta === null ? [] : [delta]);\n\n\t\tdeltaNumber\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.classed('gauge-delta-number', true)\n\t\t\t.merge(deltaNumber)\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.style('font-size', `${deltaFontSize(radius)}px`)\n\t\t\t.text((d) => `${numberFormatter(d)}${gaugeSymbol}`);\n\n\t\t// Add the caret for the delta number\n\t\tconst {\n\t\t\twidth: deltaNumberWidth,\n\t\t} = DOMUtils.getSVGElementSize(\n\t\t\tDOMUtils.appendOrSelect(svg, '.gauge-delta-number'),\n\t\t\t{ useBBox: true }\n\t\t);\n\n\t\t// check if delta arrow is disabled\n\t\tconst arrowEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'enabled'\n\t\t);\n\n\t\tconst deltaArrow = deltaGroup\n\t\t\t.selectAll('svg.gauge-delta-arrow')\n\t\t\t.data(delta !== null && arrowEnabled ? [delta] : []);\n\n\t\tdeltaArrow\n\t\t\t.enter()\n\t\t\t.append('svg')\n\t\t\t.merge(deltaArrow)\n\t\t\t.attr('class', 'gauge-delta-arrow')\n\t\t\t.attr('x', -arrowSize(radius) - deltaNumberWidth / 2)\n\t\t\t.attr('y', -arrowSize(radius) / 2 - deltaFontSize(radius) * 0.35)\n\t\t\t.attr('width', arrowSize(radius))\n\t\t\t.attr('height', arrowSize(radius))\n\t\t\t.attr('viewBox', '0 0 16 16')\n\t\t\t/*\n\t\t\t * using .each() here to ensure that the below function runs\n\t\t\t * after svg.gauge-delta-arrow has been mounted onto the DOM\n\t\t\t */\n\t\t\t.each(function () {\n\t\t\t\tconst deltaArrowSelection = select(this);\n\n\t\t\t\t// Needed to correctly size SVG in Firefox\n\t\t\t\tDOMUtils.appendOrSelect(\n\t\t\t\t\tdeltaArrowSelection,\n\t\t\t\t\t'rect.gauge-delta-arrow-backdrop'\n\t\t\t\t)\n\t\t\t\t\t.attr('width', '16')\n\t\t\t\t\t.attr('height', '16')\n\t\t\t\t\t.attr('fill', 'none');\n\n\t\t\t\t// Draw the arrow with status\n\t\t\t\tconst status = Tools.getProperty(options, 'gauge', 'status');\n\t\t\t\tDOMUtils.appendOrSelect(\n\t\t\t\t\tdeltaArrowSelection,\n\t\t\t\t\t'polygon.gauge-delta-arrow'\n\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'class',\n\t\t\t\t\t\tstatus !== null\n\t\t\t\t\t\t\t? `gauge-delta-arrow status--${status}`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t)\n\t\t\t\t\t.attr('points', self.getArrow(delta));\n\t\t\t});\n\n\t\tdeltaArrow.exit().remove();\n\t\tdeltaNumber.exit().remove();\n\t}\n\n\tgetInnerRadius() {\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\t\tconst arcWidth = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'gauge',\n\t\t\t'arcWidth'\n\t\t);\n\t\treturn radius - arcWidth;\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('path.arc-foreground')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEOVER, {\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('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(Events.Gauge.ARC_MOUSEMOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\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.Gauge.ARC_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEOUT, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t// Helper functions\n\tprotected computeRadius() {\n\t\tconst options = this.getOptions();\n\t\tconst arcType = Tools.getProperty(options, 'gauge', 'type');\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\t\tconst radius =\n\t\t\tarcType === GaugeTypes.SEMI\n\t\t\t\t? Math.min(width / 2, height)\n\t\t\t\t: Math.min(width / 2, height / 2);\n\n\t\treturn radius;\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 * as Configuration from '../../configuration';
17
- import { Roles, Events, ColorClassNameTypes, RenderTypes } from '../../interfaces';
17
+ import { Roles, Events, ColorClassNameTypes, RenderTypes, } from '../../interfaces';
18
18
  import { Tools } from '../../tools';
19
19
  // D3 Imports
20
20
  import { line } from 'd3-shape';
@@ -141,7 +141,14 @@ var Line = /** @class */ (function (_super) {
141
141
  .join(',');
142
142
  })
143
143
  // Transition
144
- .transition(this.services.transitions.getTransition('line-update-enter', animate))
144
+ .transition()
145
+ .call(function (t) {
146
+ return _this.services.transitions.setupTransition({
147
+ transition: t,
148
+ name: 'line-update-enter',
149
+ animate: animate,
150
+ });
151
+ })
145
152
  .attr('opacity', function (d) { return (d.hidden ? 0 : 1); })
146
153
  .attr('d', function (group) {
147
154
  var groupData = group.data;
@@ -149,11 +156,6 @@ var Line = /** @class */ (function (_super) {
149
156
  });
150
157
  };
151
158
  Line.prototype.destroy = function () {
152
- // Remove event listeners
153
- this.parent
154
- .selectAll('path.line')
155
- .on('mousemove', null)
156
- .on('mouseout', null);
157
159
  // Remove legend listeners
158
160
  var eventsFragment = this.services.events;
159
161
  eventsFragment.removeEventListener(Events.Legend.ITEM_HOVER, this.handleLegendOnHover);
@@ -1 +1 @@
1
- {"version":3,"file":"line.js","sourceRoot":"","sources":["line.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport * as Configuration from '../../configuration';\nimport { Roles, Events, ColorClassNameTypes, RenderTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { line } from 'd3-shape';\n\nexport class Line extends Component {\n\ttype = 'line';\n\trenderType = RenderTypes.SVG;\n\n\tinit() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct line 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 lines 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({ withinChartClip: true });\n\t\tconst { cartesianScales, curves } = this.services;\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\t\tconst options = this.getOptions();\n\n\t\t// D3 line generator function\n\t\tconst lineGenerator = line()\n\t\t\t.x(getXValue)\n\t\t\t.y(getYValue)\n\t\t\t.curve(curves.getD3Curve())\n\t\t\t.defined((datum: any, i) => {\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier(\n\t\t\t\t\tdatum\n\t\t\t\t);\n\t\t\t\tconst value = datum[rangeIdentifier];\n\t\t\t\tif (value === null || value === undefined) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\tlet data = [];\n\t\tif (this.configs.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\tconst { groupMapsTo } = options.data;\n\t\t\tconst stackedData = this.model.getStackedData({\n\t\t\t\tgroups: this.configs.groups,\n\t\t\t\tpercentage,\n\t\t\t});\n\n\t\t\tdata = stackedData.map((d) => {\n\t\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\td\n\t\t\t\t);\n\t\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier(\n\t\t\t\t\td\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\tname: Tools.getProperty(d, 0, groupMapsTo),\n\t\t\t\t\tdata: d.map((datum) => ({\n\t\t\t\t\t\t[domainIdentifier]: datum.data.sharedStackKey,\n\t\t\t\t\t\t[groupMapsTo]: datum[groupMapsTo],\n\t\t\t\t\t\t[rangeIdentifier]: datum[1],\n\t\t\t\t\t})),\n\t\t\t\t\thidden: !Tools.some(d, (datum) => datum[0] !== datum[1]),\n\t\t\t\t};\n\t\t\t});\n\t\t} else {\n\t\t\tdata = this.model.getGroupedData(this.configs.groups);\n\t\t}\n\n\t\t// Update the bound data on lines\n\t\tconst lines = svg\n\t\t\t.selectAll('path.line')\n\t\t\t.data(data, (group) => group.name);\n\n\t\t// Remove elements that need to be exited\n\t\t// We need exit at the top here to make sure that\n\t\t// Data filters are processed before entering new elements\n\t\t// Or updating existing ones\n\t\tlines.exit().attr('opacity', 0).remove();\n\n\t\t// Add lines that need to be introduced\n\t\tconst enteringLines = lines\n\t\t\t.enter()\n\t\t\t.append('path')\n\t\t\t.classed('line', true)\n\t\t\t.attr('opacity', 0);\n\n\t\t// Apply styles and datum\n\t\tenteringLines\n\t\t\t.merge(lines)\n\t\t\t.data(data, (group) => group.name)\n\t\t\t.attr('class', (group) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\tdataGroupName: group.name,\n\t\t\t\t\toriginalClassName: 'line',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('stroke', (group) => this.model.getStrokeColor(group.name))\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'line')\n\t\t\t.attr('aria-label', (group) => {\n\t\t\t\tconst { data: groupData } = group;\n\t\t\t\treturn groupData\n\t\t\t\t\t.map((datum) => {\n\t\t\t\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier(\n\t\t\t\t\t\t\tdatum\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn datum[rangeIdentifier];\n\t\t\t\t\t})\n\t\t\t\t\t.join(',');\n\t\t\t})\n\t\t\t// Transition\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'line-update-enter',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', (d) => (d.hidden ? 0 : 1))\n\t\t\t.attr('d', (group) => {\n\t\t\t\tconst { data: groupData } = group;\n\t\t\t\treturn lineGenerator(groupData);\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('path.line')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-hover-line')\n\t\t\t)\n\t\t\t.attr('opacity', (group) => {\n\t\t\t\tif (group.name !== hoveredElement.datum()['name']) {\n\t\t\t\t\treturn Configuration.lines.opacity.unselected;\n\t\t\t\t}\n\n\t\t\t\treturn Configuration.lines.opacity.selected;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('path.line')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-mouseout-line')\n\t\t\t)\n\t\t\t.attr('opacity', Configuration.lines.opacity.selected);\n\t};\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('path.line')\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n}\n"]}
1
+ {"version":3,"file":"line.js","sourceRoot":"","sources":["line.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport * as Configuration from '../../configuration';\nimport {\n\tRoles,\n\tEvents,\n\tColorClassNameTypes,\n\tRenderTypes,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { line } from 'd3-shape';\n\nexport class Line extends Component {\n\ttype = 'line';\n\trenderType = RenderTypes.SVG;\n\n\tinit() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct line 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 lines 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({ withinChartClip: true });\n\t\tconst { cartesianScales, curves } = this.services;\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\t\tconst options = this.getOptions();\n\n\t\t// D3 line generator function\n\t\tconst lineGenerator = line()\n\t\t\t.x(getXValue)\n\t\t\t.y(getYValue)\n\t\t\t.curve(curves.getD3Curve())\n\t\t\t.defined((datum: any, i) => {\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier(\n\t\t\t\t\tdatum\n\t\t\t\t);\n\t\t\t\tconst value = datum[rangeIdentifier];\n\t\t\t\tif (value === null || value === undefined) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\tlet data = [];\n\t\tif (this.configs.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\tconst { groupMapsTo } = options.data;\n\t\t\tconst stackedData = this.model.getStackedData({\n\t\t\t\tgroups: this.configs.groups,\n\t\t\t\tpercentage,\n\t\t\t});\n\n\t\t\tdata = stackedData.map((d) => {\n\t\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\td\n\t\t\t\t);\n\t\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier(\n\t\t\t\t\td\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\tname: Tools.getProperty(d, 0, groupMapsTo),\n\t\t\t\t\tdata: d.map((datum) => ({\n\t\t\t\t\t\t[domainIdentifier]: datum.data.sharedStackKey,\n\t\t\t\t\t\t[groupMapsTo]: datum[groupMapsTo],\n\t\t\t\t\t\t[rangeIdentifier]: datum[1],\n\t\t\t\t\t})),\n\t\t\t\t\thidden: !Tools.some(d, (datum) => datum[0] !== datum[1]),\n\t\t\t\t};\n\t\t\t});\n\t\t} else {\n\t\t\tdata = this.model.getGroupedData(this.configs.groups);\n\t\t}\n\n\t\t// Update the bound data on lines\n\t\tconst lines = svg\n\t\t\t.selectAll('path.line')\n\t\t\t.data(data, (group) => group.name);\n\n\t\t// Remove elements that need to be exited\n\t\t// We need exit at the top here to make sure that\n\t\t// Data filters are processed before entering new elements\n\t\t// Or updating existing ones\n\t\tlines.exit().attr('opacity', 0).remove();\n\n\t\t// Add lines that need to be introduced\n\t\tconst enteringLines = lines\n\t\t\t.enter()\n\t\t\t.append('path')\n\t\t\t.classed('line', true)\n\t\t\t.attr('opacity', 0);\n\n\t\t// Apply styles and datum\n\t\tenteringLines\n\t\t\t.merge(lines)\n\t\t\t.data(data, (group) => group.name)\n\t\t\t.attr('class', (group) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\tdataGroupName: group.name,\n\t\t\t\t\toriginalClassName: 'line',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('stroke', (group) => this.model.getStrokeColor(group.name))\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'line')\n\t\t\t.attr('aria-label', (group) => {\n\t\t\t\tconst { data: groupData } = group;\n\t\t\t\treturn groupData\n\t\t\t\t\t.map((datum) => {\n\t\t\t\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier(\n\t\t\t\t\t\t\tdatum\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn datum[rangeIdentifier];\n\t\t\t\t\t})\n\t\t\t\t\t.join(',');\n\t\t\t})\n\t\t\t// Transition\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: 'line-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', (d) => (d.hidden ? 0 : 1))\n\t\t\t.attr('d', (group) => {\n\t\t\t\tconst { data: groupData } = group;\n\t\t\t\treturn lineGenerator(groupData);\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('path.line')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-hover-line')\n\t\t\t)\n\t\t\t.attr('opacity', (group) => {\n\t\t\t\tif (group.name !== hoveredElement.datum()['name']) {\n\t\t\t\t\treturn Configuration.lines.opacity.unselected;\n\t\t\t\t}\n\n\t\t\t\treturn Configuration.lines.opacity.selected;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('path.line')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-mouseout-line')\n\t\t\t)\n\t\t\t.attr('opacity', Configuration.lines.opacity.selected);\n\t};\n\n\tdestroy() {\n\t\t// Remove legend listeners\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n}\n"]}
@@ -102,7 +102,14 @@ var Lollipop = /** @class */ (function (_super) {
102
102
  originalClassName: 'line',
103
103
  });
104
104
  })
105
- .transition(this.services.transitions.getTransition('lollipop-line-update-enter', animate))
105
+ .transition()
106
+ .call(function (t) {
107
+ return _this.services.transitions.setupTransition({
108
+ transition: t,
109
+ name: 'lollipop-line-update-enter',
110
+ animate: animate,
111
+ });
112
+ })
106
113
  .style('stroke', function (d) {
107
114
  return _this.model.getFillColor(d[groupMapsTo], d[domainIdentifier], d);
108
115
  })
@@ -131,11 +138,6 @@ var Lollipop = /** @class */ (function (_super) {
131
138
  this.services.events.addEventListener(Events.Scatter.SCATTER_MOUSEOUT, this.handleScatterOnMouseOut);
132
139
  };
133
140
  Lollipop.prototype.destroy = function () {
134
- // Remove event listeners
135
- this.parent
136
- .selectAll('line.line')
137
- .on('mousemove', null)
138
- .on('mouseout', null);
139
141
  // Remove legend listeners
140
142
  var eventsFragment = this.services.events;
141
143
  eventsFragment.removeEventListener(Events.Legend.ITEM_HOVER, this.handleLegendOnHover);
@@ -1 +1 @@
1
- {"version":3,"file":"lollipop.js","sourceRoot":"","sources":["lollipop.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Scatter } from './scatter';\nimport { Tools } from '../../tools';\nimport {\n\tCartesianOrientations,\n\tColorClassNameTypes,\n\tEvents,\n\tRenderTypes,\n} from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\nexport class Lollipop extends Scatter {\n\ttype = 'lollipop';\n\trenderType = RenderTypes.SVG;\n\n\tinit() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct line 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 lines 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: boolean) {\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\n\t\tconst options = this.model.getOptions();\n\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst { cartesianScales } = this.services;\n\t\tconst mainXScale = cartesianScales.getMainXScale();\n\t\tconst mainYScale = cartesianScales.getMainYScale();\n\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier();\n\n\t\tconst getDomainValue = (d, i) => cartesianScales.getDomainValue(d, i);\n\t\tconst getRangeValue = (d, i) => cartesianScales.getRangeValue(d, i);\n\t\tconst orientation = cartesianScales.getOrientation();\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\torientation\n\t\t);\n\n\t\t// Update data on lines\n\t\tconst lines = svg\n\t\t\t.selectAll('line.line')\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 lines that are no longer needed\n\t\tlines.exit().attr('opacity', 0).remove();\n\n\t\t// Remove lines that need to be removed\n\t\tconst enteringLines = lines.enter().append('line').attr('opacity', 0);\n\n\t\tconst allLines = enteringLines\n\t\t\t.merge(lines)\n\t\t\t.classed('line', true)\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'line',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'lollipop-line-update-enter',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.style('stroke', (d) =>\n\t\t\t\tthis.model.getFillColor(d[groupMapsTo], d[domainIdentifier], d)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\n\t\tif (orientation === CartesianOrientations.HORIZONTAL) {\n\t\t\tallLines\n\t\t\t\t.attr('y1', getYValue)\n\t\t\t\t.attr('y2', getYValue)\n\t\t\t\t.attr('x1', mainXScale.range()[0])\n\t\t\t\t.attr(\n\t\t\t\t\t'x2',\n\t\t\t\t\t(d, i) => (getXValue(d, i) as any) - options.points.radius\n\t\t\t\t);\n\t\t} else {\n\t\t\tallLines\n\t\t\t\t.attr('x1', getXValue)\n\t\t\t\t.attr('x2', getXValue)\n\t\t\t\t.attr('y1', mainYScale.range()[0])\n\t\t\t\t.attr(\n\t\t\t\t\t'y2',\n\t\t\t\t\t(d, i) => (getYValue(d, i) as any) + options.points.radius\n\t\t\t\t);\n\t\t}\n\n\t\tthis.addScatterPointEventListeners();\n\t}\n\n\t// listen for when individual datapoints are hovered\n\taddScatterPointEventListeners() {\n\t\t// Highlight correct line associated when hovering on a scatter point\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Scatter.SCATTER_MOUSEOVER,\n\t\t\tthis.handleScatterOnHover\n\t\t);\n\n\t\t// unbolden the line when not hovered on the lollipop scatter point\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Scatter.SCATTER_MOUSEOUT,\n\t\t\tthis.handleScatterOnMouseOut\n\t\t);\n\t}\n\n\t// on hover, bolden the line associated with the scatter\n\thandleScatterOnHover = (event: CustomEvent) => {\n\t\tconst hoveredElement = event.detail;\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tthis.parent.selectAll('line.line').attr('stroke-width', (d) => {\n\t\t\tif (d[groupMapsTo] !== hoveredElement.datum[groupMapsTo]) {\n\t\t\t\treturn Configuration.lines.weight.unselected;\n\t\t\t}\n\t\t\t// apply selected weight\n\t\t\treturn Configuration.lines.weight.selected;\n\t\t});\n\t};\n\n\t// on mouse out remove the stroke width assertion\n\thandleScatterOnMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('line.line')\n\t\t\t.attr('stroke-width', Configuration.lines.weight.unselected);\n\t};\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tthis.parent\n\t\t\t.selectAll('line.line')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-hover-line')\n\t\t\t)\n\t\t\t.attr('opacity', (d) => {\n\t\t\t\tif (d[groupMapsTo] !== hoveredElement.datum()['name']) {\n\t\t\t\t\treturn Configuration.lines.opacity.unselected;\n\t\t\t\t}\n\n\t\t\t\treturn Configuration.lines.opacity.selected;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('line.line')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-mouseout-line')\n\t\t\t)\n\t\t\t.attr('opacity', Configuration.lines.opacity.selected);\n\t};\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('line.line')\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\n\t\t// remove scatter listeners\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Scatter.SCATTER_MOUSEOVER,\n\t\t\tthis.handleScatterOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Scatter.SCATTER_MOUSEOUT,\n\t\t\tthis.handleScatterOnMouseOut\n\t\t);\n\t}\n}\n"]}
1
+ {"version":3,"file":"lollipop.js","sourceRoot":"","sources":["lollipop.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Scatter } from './scatter';\nimport { Tools } from '../../tools';\nimport {\n\tCartesianOrientations,\n\tColorClassNameTypes,\n\tEvents,\n\tRenderTypes,\n} from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\nexport class Lollipop extends Scatter {\n\ttype = 'lollipop';\n\trenderType = RenderTypes.SVG;\n\n\tinit() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct line 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 lines 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: boolean) {\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\n\t\tconst options = this.model.getOptions();\n\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst { cartesianScales } = this.services;\n\t\tconst mainXScale = cartesianScales.getMainXScale();\n\t\tconst mainYScale = cartesianScales.getMainYScale();\n\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier();\n\n\t\tconst getDomainValue = (d, i) => cartesianScales.getDomainValue(d, i);\n\t\tconst getRangeValue = (d, i) => cartesianScales.getRangeValue(d, i);\n\t\tconst orientation = cartesianScales.getOrientation();\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\torientation\n\t\t);\n\n\t\t// Update data on lines\n\t\tconst lines = svg\n\t\t\t.selectAll('line.line')\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 lines that are no longer needed\n\t\tlines.exit().attr('opacity', 0).remove();\n\n\t\t// Remove lines that need to be removed\n\t\tconst enteringLines = lines.enter().append('line').attr('opacity', 0);\n\n\t\tconst allLines = enteringLines\n\t\t\t.merge(lines)\n\t\t\t.classed('line', true)\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'line',\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: 'lollipop-line-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('stroke', (d) =>\n\t\t\t\tthis.model.getFillColor(d[groupMapsTo], d[domainIdentifier], d)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\n\t\tif (orientation === CartesianOrientations.HORIZONTAL) {\n\t\t\tallLines\n\t\t\t\t.attr('y1', getYValue)\n\t\t\t\t.attr('y2', getYValue)\n\t\t\t\t.attr('x1', mainXScale.range()[0])\n\t\t\t\t.attr(\n\t\t\t\t\t'x2',\n\t\t\t\t\t(d, i) => (getXValue(d, i) as any) - options.points.radius\n\t\t\t\t);\n\t\t} else {\n\t\t\tallLines\n\t\t\t\t.attr('x1', getXValue)\n\t\t\t\t.attr('x2', getXValue)\n\t\t\t\t.attr('y1', mainYScale.range()[0])\n\t\t\t\t.attr(\n\t\t\t\t\t'y2',\n\t\t\t\t\t(d, i) => (getYValue(d, i) as any) + options.points.radius\n\t\t\t\t);\n\t\t}\n\n\t\tthis.addScatterPointEventListeners();\n\t}\n\n\t// listen for when individual datapoints are hovered\n\taddScatterPointEventListeners() {\n\t\t// Highlight correct line associated when hovering on a scatter point\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Scatter.SCATTER_MOUSEOVER,\n\t\t\tthis.handleScatterOnHover\n\t\t);\n\n\t\t// unbolden the line when not hovered on the lollipop scatter point\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Scatter.SCATTER_MOUSEOUT,\n\t\t\tthis.handleScatterOnMouseOut\n\t\t);\n\t}\n\n\t// on hover, bolden the line associated with the scatter\n\thandleScatterOnHover = (event: CustomEvent) => {\n\t\tconst hoveredElement = event.detail;\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tthis.parent.selectAll('line.line').attr('stroke-width', (d) => {\n\t\t\tif (d[groupMapsTo] !== hoveredElement.datum[groupMapsTo]) {\n\t\t\t\treturn Configuration.lines.weight.unselected;\n\t\t\t}\n\t\t\t// apply selected weight\n\t\t\treturn Configuration.lines.weight.selected;\n\t\t});\n\t};\n\n\t// on mouse out remove the stroke width assertion\n\thandleScatterOnMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('line.line')\n\t\t\t.attr('stroke-width', Configuration.lines.weight.unselected);\n\t};\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tthis.parent\n\t\t\t.selectAll('line.line')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-hover-line')\n\t\t\t)\n\t\t\t.attr('opacity', (d) => {\n\t\t\t\tif (d[groupMapsTo] !== hoveredElement.datum()['name']) {\n\t\t\t\t\treturn Configuration.lines.opacity.unselected;\n\t\t\t\t}\n\n\t\t\t\treturn Configuration.lines.opacity.selected;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('line.line')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-mouseout-line')\n\t\t\t)\n\t\t\t.attr('opacity', Configuration.lines.opacity.selected);\n\t};\n\n\tdestroy() {\n\t\t// Remove legend listeners\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\n\t\t// remove scatter listeners\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Scatter.SCATTER_MOUSEOVER,\n\t\t\tthis.handleScatterOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Scatter.SCATTER_MOUSEOUT,\n\t\t\tthis.handleScatterOnMouseOut\n\t\t);\n\t}\n}\n"]}
@@ -70,7 +70,14 @@ var Meter = /** @class */ (function (_super) {
70
70
  originalClassName: className,
71
71
  });
72
72
  })
73
- .transition(this.services.transitions.getTransition('meter-bar-update', animate))
73
+ .transition()
74
+ .call(function (t) {
75
+ return _this.services.transitions.setupTransition({
76
+ transition: t,
77
+ name: 'meter-bar-update',
78
+ animate: animate,
79
+ });
80
+ })
74
81
  .attr('width', function (d) {
75
82
  return maximumBarWidth ? xScale(100) : xScale(d.value);
76
83
  })
@@ -95,7 +102,14 @@ var Meter = /** @class */ (function (_super) {
95
102
  .merge(peak)
96
103
  .attr('y1', 0)
97
104
  .attr('y2', Tools.getProperty(options, 'meter', 'height'))
98
- .transition(this.services.transitions.getTransition('peak-line-update', animate))
105
+ .transition()
106
+ .call(function (t) {
107
+ return _this.services.transitions.setupTransition({
108
+ transition: t,
109
+ name: 'peak-line-update',
110
+ animate: animate,
111
+ });
112
+ })
99
113
  .attr('x1', function (d) { return xScale(d); })
100
114
  .attr('x2', function (d) { return xScale(d); })
101
115
  // a11y
@@ -1 +1 @@
1
- {"version":3,"file":"meter.js","sourceRoot":"","sources":["meter.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Tools } from '../../tools';\nimport { Roles, ColorClassNameTypes, RenderTypes } from '../../interfaces';\n\n// D3 Imports\nimport { scaleLinear } from 'd3-scale';\n\nexport class Meter extends Component {\n\ttype = 'meter';\n\trenderType = RenderTypes.SVG;\n\n\trender(animate = true) {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer();\n\t\tconst options = this.getOptions();\n\t\tconst data = this.model.getDisplayData();\n\t\tconst status = this.model.getStatus();\n\n\t\tconst { width } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// each meter has a scale for the value but no visual axis\n\t\tconst xScale = scaleLinear().domain([0, 100]).range([0, width]);\n\n\t\t// draw the container to hold the value\n\t\tDOMUtils.appendOrSelect(svg, 'rect.container')\n\t\t\t.attr('x', 0)\n\t\t\t.attr('y', 0)\n\t\t\t.attr('width', width)\n\t\t\t.attr('height', Tools.getProperty(options, 'meter', 'height'));\n\n\t\t// value larger than 100 will display as 100% on meter chart\n\t\tconst maximumBarWidth = data.value >= 100;\n\n\t\t// rect with the value binded\n\t\tconst value = svg.selectAll('rect.value').data([data]);\n\n\t\t// if user provided a color for the bar, we dont want to attach a status class\n\t\tconst className =\n\t\t\tstatus != null && !self.model.isUserProvidedColorScaleValid()\n\t\t\t\t? `value status--${status}`\n\t\t\t\t: 'value';\n\n\t\t// draw the value bar\n\t\tvalue\n\t\t\t.enter()\n\t\t\t.append('rect')\n\t\t\t.classed('value', true)\n\t\t\t.merge(value)\n\t\t\t.attr('x', 0)\n\t\t\t.attr('y', 0)\n\t\t\t.attr('height', Tools.getProperty(options, 'meter', 'height'))\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: className,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'meter-bar-update',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('width', (d) =>\n\t\t\t\tmaximumBarWidth ? xScale(100) : xScale(d.value)\n\t\t\t)\n\t\t\t.style('fill', (d) => self.model.getFillColor(d[groupMapsTo]))\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'value')\n\t\t\t.attr('aria-label', (d) => d.value);\n\n\t\t// draw the peak\n\t\tconst peakValue = Tools.getProperty(options, 'meter', 'peak');\n\n\t\t// update the peak if it is less than the value, it should be equal to the value\n\t\tconst updatedPeak =\n\t\t\tpeakValue !== null && peakValue < data.value\n\t\t\t\t? data.value\n\t\t\t\t: peakValue;\n\t\t// dont display peak if there isnt one\n\t\tconst peakData =\n\t\t\tupdatedPeak === null || maximumBarWidth ? [] : [updatedPeak];\n\n\t\t// if a peak is supplied within the domain, we want to render it\n\t\tconst peak = svg.selectAll('line.peak').data(peakData);\n\n\t\tpeak.enter()\n\t\t\t.append('line')\n\t\t\t.classed('peak', true)\n\t\t\t.merge(peak)\n\t\t\t.attr('y1', 0)\n\t\t\t.attr('y2', Tools.getProperty(options, 'meter', 'height'))\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'peak-line-update',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('x1', (d) => xScale(d))\n\t\t\t.attr('x2', (d) => xScale(d))\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'peak')\n\t\t\t.attr('aria-label', (d) => d);\n\n\t\tpeak.exit().remove();\n\n\t\t// this forces the meter chart to only take up as much height as needed (if no height is provided)\n\t\tthis.services.domUtils.setSVGMaxHeight();\n\t}\n}\n"]}
1
+ {"version":3,"file":"meter.js","sourceRoot":"","sources":["meter.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Tools } from '../../tools';\nimport { Roles, ColorClassNameTypes, RenderTypes } from '../../interfaces';\n\n// D3 Imports\nimport { scaleLinear } from 'd3-scale';\n\nexport class Meter extends Component {\n\ttype = 'meter';\n\trenderType = RenderTypes.SVG;\n\n\trender(animate = true) {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer();\n\t\tconst options = this.getOptions();\n\t\tconst data = this.model.getDisplayData();\n\t\tconst status = this.model.getStatus();\n\n\t\tconst { width } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// each meter has a scale for the value but no visual axis\n\t\tconst xScale = scaleLinear().domain([0, 100]).range([0, width]);\n\n\t\t// draw the container to hold the value\n\t\tDOMUtils.appendOrSelect(svg, 'rect.container')\n\t\t\t.attr('x', 0)\n\t\t\t.attr('y', 0)\n\t\t\t.attr('width', width)\n\t\t\t.attr('height', Tools.getProperty(options, 'meter', 'height'));\n\n\t\t// value larger than 100 will display as 100% on meter chart\n\t\tconst maximumBarWidth = data.value >= 100;\n\n\t\t// rect with the value binded\n\t\tconst value = svg.selectAll('rect.value').data([data]);\n\n\t\t// if user provided a color for the bar, we dont want to attach a status class\n\t\tconst className =\n\t\t\tstatus != null && !self.model.isUserProvidedColorScaleValid()\n\t\t\t\t? `value status--${status}`\n\t\t\t\t: 'value';\n\n\t\t// draw the value bar\n\t\tvalue\n\t\t\t.enter()\n\t\t\t.append('rect')\n\t\t\t.classed('value', true)\n\t\t\t.merge(value)\n\t\t\t.attr('x', 0)\n\t\t\t.attr('y', 0)\n\t\t\t.attr('height', Tools.getProperty(options, 'meter', 'height'))\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: className,\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: 'meter-bar-update',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('width', (d) =>\n\t\t\t\tmaximumBarWidth ? xScale(100) : xScale(d.value)\n\t\t\t)\n\t\t\t.style('fill', (d) => self.model.getFillColor(d[groupMapsTo]))\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'value')\n\t\t\t.attr('aria-label', (d) => d.value);\n\n\t\t// draw the peak\n\t\tconst peakValue = Tools.getProperty(options, 'meter', 'peak');\n\n\t\t// update the peak if it is less than the value, it should be equal to the value\n\t\tconst updatedPeak =\n\t\t\tpeakValue !== null && peakValue < data.value\n\t\t\t\t? data.value\n\t\t\t\t: peakValue;\n\t\t// dont display peak if there isnt one\n\t\tconst peakData =\n\t\t\tupdatedPeak === null || maximumBarWidth ? [] : [updatedPeak];\n\n\t\t// if a peak is supplied within the domain, we want to render it\n\t\tconst peak = svg.selectAll('line.peak').data(peakData);\n\n\t\tpeak.enter()\n\t\t\t.append('line')\n\t\t\t.classed('peak', true)\n\t\t\t.merge(peak)\n\t\t\t.attr('y1', 0)\n\t\t\t.attr('y2', Tools.getProperty(options, 'meter', 'height'))\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: 'peak-line-update',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('x1', (d) => xScale(d))\n\t\t\t.attr('x2', (d) => xScale(d))\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'peak')\n\t\t\t.attr('aria-label', (d) => d);\n\n\t\tpeak.exit().remove();\n\n\t\t// this forces the meter chart to only take up as much height as needed (if no height is provided)\n\t\tthis.services.domUtils.setSVGMaxHeight();\n\t}\n}\n"]}
@@ -107,7 +107,7 @@ var Pie = /** @class */ (function (_super) {
107
107
  .classed('slice', true)
108
108
  .attr('opacity', 0);
109
109
  // Update styles & position on existing and entering slices
110
- enteringPaths
110
+ var allPaths = enteringPaths
111
111
  .merge(paths)
112
112
  .attr('class', function (d) {
113
113
  return _this.model.getColorClassName({
@@ -117,8 +117,16 @@ var Pie = /** @class */ (function (_super) {
117
117
  });
118
118
  })
119
119
  .style('fill', function (d) { return self.model.getFillColor(d.data[groupMapsTo]); })
120
- .attr('d', this.arc)
121
- .transition(this.services.transitions.getTransition('pie-slice-enter-update', animate))
120
+ .attr('d', this.arc);
121
+ allPaths
122
+ .transition()
123
+ .call(function (t) {
124
+ return _this.services.transitions.setupTransition({
125
+ transition: t,
126
+ name: 'pie_slice_enter_update',
127
+ animate: animate,
128
+ });
129
+ })
122
130
  .attr('opacity', 1)
123
131
  // a11y
124
132
  .attr('role', Roles.GRAPHICS_SYMBOL)
@@ -325,7 +333,7 @@ var Pie = /** @class */ (function (_super) {
325
333
  var self = this;
326
334
  this.parent
327
335
  .selectAll('path.slice')
328
- .on('mouseover', function (datum) {
336
+ .on('mouseover', function (event, datum) {
329
337
  var hoveredElement = select(this);
330
338
  hoveredElement
331
339
  .classed('hovered', true)
@@ -333,12 +341,14 @@ var Pie = /** @class */ (function (_super) {
333
341
  .attr('d', self.hoverArc);
334
342
  // Dispatch mouse event
335
343
  self.services.events.dispatchEvent(Events.Pie.SLICE_MOUSEOVER, {
344
+ event: event,
336
345
  element: select(this),
337
346
  datum: datum,
338
347
  });
339
348
  var groupMapsTo = self.getOptions().data.groupMapsTo;
340
349
  // Show tooltip
341
350
  self.services.events.dispatchEvent(Events.Tooltip.SHOW, {
351
+ event: event,
342
352
  hoveredElement: hoveredElement,
343
353
  items: [
344
354
  {
@@ -348,24 +358,28 @@ var Pie = /** @class */ (function (_super) {
348
358
  ],
349
359
  });
350
360
  })
351
- .on('mousemove', function (datum) {
361
+ .on('mousemove', function (event, datum) {
352
362
  var hoveredElement = select(this);
353
363
  // Dispatch mouse event
354
364
  self.services.events.dispatchEvent(Events.Pie.SLICE_MOUSEMOVE, {
365
+ event: event,
355
366
  element: hoveredElement,
356
367
  datum: datum,
357
368
  });
358
369
  // Show tooltip
359
- self.services.events.dispatchEvent(Events.Tooltip.MOVE);
370
+ self.services.events.dispatchEvent(Events.Tooltip.MOVE, {
371
+ event: event,
372
+ });
360
373
  })
361
- .on('click', function (datum) {
374
+ .on('click', function (event, datum) {
362
375
  // Dispatch mouse event
363
376
  self.services.events.dispatchEvent(Events.Pie.SLICE_CLICK, {
377
+ event: event,
364
378
  element: select(this),
365
379
  datum: datum,
366
380
  });
367
381
  })
368
- .on('mouseout', function (datum) {
382
+ .on('mouseout', function (event, datum) {
369
383
  var hoveredElement = select(this);
370
384
  hoveredElement
371
385
  .classed('hovered', false)
@@ -373,6 +387,7 @@ var Pie = /** @class */ (function (_super) {
373
387
  .attr('d', self.arc);
374
388
  // Dispatch mouse event
375
389
  self.services.events.dispatchEvent(Events.Pie.SLICE_MOUSEOUT, {
390
+ event: event,
376
391
  element: hoveredElement,
377
392
  datum: datum,
378
393
  });