@carbon/charts 1.5.7 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -87,11 +87,15 @@ var WordCloud = /** @class */ (function (_super) {
87
87
  .size([width, height])
88
88
  .words(displayData.map(function (d) {
89
89
  var _a;
90
+ var value = d[fontSizeMapsTo];
91
+ if (typeof d[fontSizeMapsTo] !== 'number') {
92
+ throw Error('Badly formatted WordCloud data. `value` should only be an integer or float');
93
+ }
90
94
  return _a = {},
91
95
  _a[groupMapsTo] = d[groupMapsTo],
92
96
  _a.text = d[wordMapsTo],
93
- _a.size = d[fontSizeMapsTo],
94
- _a.value = d[fontSizeMapsTo],
97
+ _a.size = value,
98
+ _a.value = value,
95
99
  _a;
96
100
  }))
97
101
  .padding(5)
@@ -1 +1 @@
1
- {"version":3,"file":"wordcloud.js","sourceRoot":"","sources":["wordcloud.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 { select } from 'd3-selection';\nimport { scaleLinear } from 'd3-scale';\nimport { extent } from 'd3-array';\nimport cloud from 'd3-cloud';\n\nexport class WordCloud extends Component {\n\ttype = 'wordcloud';\n\trenderType = RenderTypes.SVG;\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct words on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight words on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer()\n\t\t\t.attr('width', '100%')\n\t\t\t.attr('height', '100%');\n\n\t\tconst displayData = this.model.getDisplayData();\n\t\tconst fontSizeScale = this.getFontSizeScale(displayData);\n\n\t\tconst options = this.getOptions();\n\t\tconst { fontSizeMapsTo, wordMapsTo } = options.wordCloud;\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tif (width === 0 || height === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst layout = cloud()\n\t\t\t.size([width, height])\n\t\t\t.words(\n\t\t\t\tdisplayData.map(function (d) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t[groupMapsTo]: d[groupMapsTo],\n\t\t\t\t\t\ttext: d[wordMapsTo],\n\t\t\t\t\t\tsize: d[fontSizeMapsTo],\n\t\t\t\t\t\tvalue: d[fontSizeMapsTo],\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t)\n\t\t\t.padding(5)\n\t\t\t.rotate(0)\n\t\t\t.fontSize((d) => fontSizeScale(d.size))\n\t\t\t.on('end', draw);\n\n\t\tlayout.start();\n\n\t\tfunction draw(words) {\n\t\t\tconst textGroup = DOMUtils.appendOrSelect(svg, 'g.words');\n\t\t\ttextGroup.attr(\n\t\t\t\t'transform',\n\t\t\t\t`translate(${layout.size()[0] / 2}, ${layout.size()[1] / 2})`\n\t\t\t);\n\n\t\t\tconst allText = textGroup\n\t\t\t\t.selectAll('text')\n\t\t\t\t.data(words, (d) => `${d[groupMapsTo]}-${d.text}`);\n\n\t\t\t// Remove texts that are no longer needed\n\t\t\tallText.exit().attr('opacity', 0).remove();\n\n\t\t\tconst enteringText = allText\n\t\t\t\t.enter()\n\t\t\t\t.append('text')\n\t\t\t\t.attr('opacity', 0);\n\n\t\t\tenteringText\n\t\t\t\t.merge(allText)\n\t\t\t\t.style('font-size', (d) => `${d.size}px`)\n\t\t\t\t.text(function (d) {\n\t\t\t\t\treturn d.text;\n\t\t\t\t})\n\t\t\t\t.attr('class', (d) =>\n\t\t\t\t\tself.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\t\toriginalClassName: `word ${d.size > 32 ? 'light' : ''}`,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.style('fill', (d) => {\n\t\t\t\t\treturn self.model.getFillColor(d[groupMapsTo], d.text, d);\n\t\t\t\t})\n\t\t\t\t.attr('text-anchor', 'middle')\n\t\t\t\t.transition()\n\t\t\t\t.call((t) =>\n\t\t\t\t\tself.services.transitions.setupTransition({\n\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\tname: 'wordcloud-text-update-enter',\n\t\t\t\t\t\tanimate,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('transform', (d) => `translate(${d.x}, ${d.y})`)\n\t\t\t\t.attr('opacity', 1);\n\t\t}\n\n\t\t// Add event listeners\n\t\tthis.addEventListeners();\n\t}\n\n\tgetFontSizeScale(data: any) {\n\t\tconst options = this.getOptions();\n\t\tconst { fontSizeMapsTo } = options.wordCloud;\n\n\t\t// Filter out any null/undefined values\n\t\tconst allOccurences = data\n\t\t\t.map((d) => d[fontSizeMapsTo])\n\t\t\t.filter((size) => size);\n\t\tconst chartSize = DOMUtils.getHTMLElementSize(\n\t\t\tthis.services.domUtils.getMainContainer()\n\t\t);\n\n\t\t// We need the ternary operator here in case the user\n\t\t// doesn't provide size values in data\n\t\tconst sizeDataIsValid = allOccurences.length > 0;\n\t\tconst domain = sizeDataIsValid ? extent(allOccurences) : [1, 1];\n\n\t\t// @ts-ignore\n\t\treturn scaleLinear()\n\t\t\t.domain(domain as any)\n\t\t\t.range(\n\t\t\t\tsizeDataIsValid\n\t\t\t\t\t? options.wordCloud.fontSizeRange(chartSize, data)\n\t\t\t\t\t: [4, 4]\n\t\t\t);\n\t}\n\n\t// Highlight elements that match the hovered legend item\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('text.word')\n\t\t\t.transition('legend-hover-wordcloud')\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-wordcloud',\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\t// Un-highlight all elements\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('text.word')\n\t\t\t.transition('legend-mouseout-wordcloud')\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-wordcloud',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst self = this;\n\n\t\t// Highlights 1 word or unhighlights all\n\t\tconst debouncedHighlight = Tools.debounce((word) => {\n\t\t\tconst allWords = self.parent\n\t\t\t\t.selectAll('text.word')\n\t\t\t\t.transition('wordcloud-word-mouse-highlight')\n\t\t\t\t.call((t) =>\n\t\t\t\t\tself.services.transitions.setupTransition({\n\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\tname: 'wordcloud-word-mouse-highlight',\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\tif (word === null) {\n\t\t\t\tallWords.attr('opacity', 1);\n\t\t\t} else {\n\t\t\t\tallWords.attr('opacity', function () {\n\t\t\t\t\tif (word === this) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn 0.3;\n\t\t\t\t});\n\t\t\t}\n\t\t}, 6);\n\n\t\tthis.parent\n\t\t\t.selectAll('text.word')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = this;\n\t\t\t\tdebouncedHighlight(hoveredElement);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.WordCloud.WORD_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// 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\tlabel: options.tooltip.wordLabel,\n\t\t\t\t\t\t\tvalue: datum.text,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.valueLabel,\n\t\t\t\t\t\t\tvalue: datum.value,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.groupLabel,\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\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})\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.WordCloud.WORD_MOUSEMOVE,\n\t\t\t\t\t{\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// Show tooltip\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.WordCloud.WORD_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\tdebouncedHighlight(null);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.WordCloud.WORD_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"]}
1
+ {"version":3,"file":"wordcloud.js","sourceRoot":"","sources":["wordcloud.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 { select } from 'd3-selection';\nimport { scaleLinear } from 'd3-scale';\nimport { extent } from 'd3-array';\nimport cloud from 'd3-cloud';\n\nexport class WordCloud extends Component {\n\ttype = 'wordcloud';\n\trenderType = RenderTypes.SVG;\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct words on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight words on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer()\n\t\t\t.attr('width', '100%')\n\t\t\t.attr('height', '100%');\n\n\t\tconst displayData = this.model.getDisplayData();\n\t\tconst fontSizeScale = this.getFontSizeScale(displayData);\n\n\t\tconst options = this.getOptions();\n\t\tconst { fontSizeMapsTo, wordMapsTo } = options.wordCloud;\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tif (width === 0 || height === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst layout = cloud()\n\t\t\t.size([width, height])\n\t\t\t.words(\n\t\t\t\tdisplayData.map(function (d) {\n\t\t\t\t\tlet value = d[fontSizeMapsTo];\n\n\t\t\t\t\tif (typeof d[fontSizeMapsTo] !== 'number') {\n\t\t\t\t\t\tthrow Error(\n\t\t\t\t\t\t\t'Badly formatted WordCloud data. `value` should only be an integer or float'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t[groupMapsTo]: d[groupMapsTo],\n\t\t\t\t\t\ttext: d[wordMapsTo],\n\t\t\t\t\t\tsize: value,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t)\n\t\t\t.padding(5)\n\t\t\t.rotate(0)\n\t\t\t.fontSize((d) => fontSizeScale(d.size))\n\t\t\t.on('end', draw);\n\n\t\tlayout.start();\n\n\t\tfunction draw(words) {\n\t\t\tconst textGroup = DOMUtils.appendOrSelect(svg, 'g.words');\n\t\t\ttextGroup.attr(\n\t\t\t\t'transform',\n\t\t\t\t`translate(${layout.size()[0] / 2}, ${layout.size()[1] / 2})`\n\t\t\t);\n\n\t\t\tconst allText = textGroup\n\t\t\t\t.selectAll('text')\n\t\t\t\t.data(words, (d) => `${d[groupMapsTo]}-${d.text}`);\n\n\t\t\t// Remove texts that are no longer needed\n\t\t\tallText.exit().attr('opacity', 0).remove();\n\n\t\t\tconst enteringText = allText\n\t\t\t\t.enter()\n\t\t\t\t.append('text')\n\t\t\t\t.attr('opacity', 0);\n\n\t\t\tenteringText\n\t\t\t\t.merge(allText)\n\t\t\t\t.style('font-size', (d) => `${d.size}px`)\n\t\t\t\t.text(function (d) {\n\t\t\t\t\treturn d.text;\n\t\t\t\t})\n\t\t\t\t.attr('class', (d) =>\n\t\t\t\t\tself.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\t\toriginalClassName: `word ${d.size > 32 ? 'light' : ''}`,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.style('fill', (d) => {\n\t\t\t\t\treturn self.model.getFillColor(d[groupMapsTo], d.text, d);\n\t\t\t\t})\n\t\t\t\t.attr('text-anchor', 'middle')\n\t\t\t\t.transition()\n\t\t\t\t.call((t) =>\n\t\t\t\t\tself.services.transitions.setupTransition({\n\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\tname: 'wordcloud-text-update-enter',\n\t\t\t\t\t\tanimate,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('transform', (d) => `translate(${d.x}, ${d.y})`)\n\t\t\t\t.attr('opacity', 1);\n\t\t}\n\n\t\t// Add event listeners\n\t\tthis.addEventListeners();\n\t}\n\n\tgetFontSizeScale(data: any) {\n\t\tconst options = this.getOptions();\n\t\tconst { fontSizeMapsTo } = options.wordCloud;\n\n\t\t// Filter out any null/undefined values\n\t\tconst allOccurences = data\n\t\t\t.map((d) => d[fontSizeMapsTo])\n\t\t\t.filter((size) => size);\n\t\tconst chartSize = DOMUtils.getHTMLElementSize(\n\t\t\tthis.services.domUtils.getMainContainer()\n\t\t);\n\n\t\t// We need the ternary operator here in case the user\n\t\t// doesn't provide size values in data\n\t\tconst sizeDataIsValid = allOccurences.length > 0;\n\t\tconst domain = sizeDataIsValid ? extent(allOccurences) : [1, 1];\n\n\t\t// @ts-ignore\n\t\treturn scaleLinear()\n\t\t\t.domain(domain as any)\n\t\t\t.range(\n\t\t\t\tsizeDataIsValid\n\t\t\t\t\t? options.wordCloud.fontSizeRange(chartSize, data)\n\t\t\t\t\t: [4, 4]\n\t\t\t);\n\t}\n\n\t// Highlight elements that match the hovered legend item\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('text.word')\n\t\t\t.transition('legend-hover-wordcloud')\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-wordcloud',\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\t// Un-highlight all elements\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('text.word')\n\t\t\t.transition('legend-mouseout-wordcloud')\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-wordcloud',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst self = this;\n\n\t\t// Highlights 1 word or unhighlights all\n\t\tconst debouncedHighlight = Tools.debounce((word) => {\n\t\t\tconst allWords = self.parent\n\t\t\t\t.selectAll('text.word')\n\t\t\t\t.transition('wordcloud-word-mouse-highlight')\n\t\t\t\t.call((t) =>\n\t\t\t\t\tself.services.transitions.setupTransition({\n\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\tname: 'wordcloud-word-mouse-highlight',\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\tif (word === null) {\n\t\t\t\tallWords.attr('opacity', 1);\n\t\t\t} else {\n\t\t\t\tallWords.attr('opacity', function () {\n\t\t\t\t\tif (word === this) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn 0.3;\n\t\t\t\t});\n\t\t\t}\n\t\t}, 6);\n\n\t\tthis.parent\n\t\t\t.selectAll('text.word')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = this;\n\t\t\t\tdebouncedHighlight(hoveredElement);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.WordCloud.WORD_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// 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\tlabel: options.tooltip.wordLabel,\n\t\t\t\t\t\t\tvalue: datum.text,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.valueLabel,\n\t\t\t\t\t\t\tvalue: datum.value,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.groupLabel,\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\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})\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.WordCloud.WORD_MOUSEMOVE,\n\t\t\t\t\t{\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// Show tooltip\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.WordCloud.WORD_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\tdebouncedHighlight(null);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.WordCloud.WORD_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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carbon/charts",
3
- "version": "1.5.7",
3
+ "version": "1.6.0",
4
4
  "description": "Carbon charting components",
5
5
  "main": "./bundle.js",
6
6
  "module": "./index.js",
@@ -434,7 +434,7 @@
434
434
  "signature": "df9310ae6aca3b0ed8f7fada4b7431dcf0b7542ea95831d7ff5e75205133c7db"
435
435
  },
436
436
  "../src/components/graphs/wordcloud.ts": {
437
- "version": "eb2d8aa214f319dd9df5952a761370b38eb80af3ee826fac989646b4d9dd1312",
437
+ "version": "b85cca80f96ee62055ecc6203efc1977fca569f0bc5753def059a11dcca3be3e",
438
438
  "signature": "40fbbdfea1f9e37585740a0af2aedc6cf4cdeda214cb2d9f6d76bfa1d06a73c7"
439
439
  },
440
440
  "../src/components/graphs/alluvial.ts": {