@carbon/charts 1.7.0 → 1.7.2

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.
@@ -250,6 +250,8 @@ var Threshold = /** @class */ (function (_super) {
250
250
  PLACEMENTS.TOP,
251
251
  PLACEMENTS.BOTTOM,
252
252
  ], function () { return ({
253
+ top: undefined,
254
+ left: undefined,
253
255
  width: holder.offsetWidth,
254
256
  height: holder.offsetHeight,
255
257
  }); });
@@ -1 +1 @@
1
- {"version":3,"file":"threshold.js","sourceRoot":"","sources":["threshold.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport * as Tools from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model/model';\nimport {\n\tAxisPositions,\n\tEvents,\n\tRenderTypes,\n\tScaleTypes,\n} from '../../interfaces';\n\n// D3 Imports\n// @ts-ignore\n// ts-ignore is needed because `@types/d3`\n// is missing the `pointer` function\nimport { select, pointer } from 'd3-selection';\n\n// Carbon position service\nimport Position, { PLACEMENTS } from '@carbon/utils-position';\n\n// import the settings for the css prefix\nimport { carbonPrefix } from '../../configuration-non-customizable';\nimport {\n\tformatTick,\n\tcomputeTimeIntervalName,\n} from '../../services/time-series';\n\nexport class Threshold extends Component {\n\ttype = 'threshold';\n\trenderType = RenderTypes.SVG;\n\n\tlabel: any;\n\n\tpositionService = new Position();\n\n\tconstructor(model: ChartModel, services: any) {\n\t\tsuper(model, services);\n\t}\n\n\trender(animate = false) {\n\t\tconst axesOptions = Tools.getProperty(this.getOptions(), 'axes');\n\n\t\tconst thresholdData = [];\n\n\t\tObject.keys(axesOptions).forEach((axisPosition) => {\n\t\t\tif (Object.values(AxisPositions).includes(axisPosition as any)) {\n\t\t\t\tconst axisOptions = axesOptions[axisPosition];\n\n\t\t\t\tif (\n\t\t\t\t\taxisOptions.thresholds &&\n\t\t\t\t\taxisOptions.thresholds.length > 0\n\t\t\t\t) {\n\t\t\t\t\tthresholdData.push({\n\t\t\t\t\t\taxisPosition,\n\t\t\t\t\t\tthresholds: axisOptions.thresholds,\n\t\t\t\t\t\tcorrespondingDatasets:\n\t\t\t\t\t\t\taxisOptions?.correspondingDatasets,\n\t\t\t\t\t\tmapsTo: axisOptions?.mapsTo,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\n\t\t// Update data on all axis threshold groups\n\t\tconst thresholdAxisGroups = svg\n\t\t\t.selectAll('g.axis-thresholds')\n\t\t\t.data(thresholdData, (thresholdData) => thresholdData.axisPosition);\n\n\t\t// Remove axis threshold groups that are no longer needed\n\t\tthresholdAxisGroups.exit().attr('opacity', 0).remove();\n\n\t\t// Add the axis threshold groups that need to be introduced\n\t\tconst thresholdAxisGroupsEnter = thresholdAxisGroups\n\t\t\t.enter()\n\t\t\t.append('g');\n\n\t\tconst thresholdAxisGroupsMerge = thresholdAxisGroupsEnter.merge(\n\t\t\tthresholdAxisGroups\n\t\t);\n\t\tthresholdAxisGroupsMerge.attr(\n\t\t\t'class',\n\t\t\t(d) => `axis-thresholds ${d.axisPosition}`\n\t\t);\n\n\t\tconst thresholdGroups = thresholdAxisGroupsMerge\n\t\t\t.selectAll('g.threshold-group')\n\t\t\t.data((d) =>\n\t\t\t\td.thresholds.map((threshold) => {\n\t\t\t\t\t// Merge relevant keys into the threshold object\n\t\t\t\t\tthreshold.axisPosition = d.axisPosition;\n\t\t\t\t\tthreshold.datum = this.constructDatumObj(d, threshold);\n\t\t\t\t\treturn threshold;\n\t\t\t\t})\n\t\t\t);\n\n\t\t// Remove threshold groups that are no longer needed\n\t\tthresholdGroups.exit().attr('opacity', 0).remove();\n\n\t\t// Add the threshold groups that need to be introduced\n\t\tconst thresholdGroupsEnter = thresholdGroups.enter().append('g');\n\n\t\tthresholdGroupsEnter.append('line').attr('class', 'threshold-line');\n\t\tthresholdGroupsEnter\n\t\t\t.append('rect')\n\t\t\t.attr('class', 'threshold-hoverable-area');\n\n\t\tconst thresholdGroupsMerge = thresholdGroupsEnter.merge(\n\t\t\tthresholdGroups\n\t\t);\n\t\tthresholdGroupsMerge.attr('class', 'threshold-group');\n\n\t\tconst self = this;\n\t\tthresholdAxisGroupsMerge.each(function ({ axisPosition }) {\n\t\t\tconst scale = self.services.cartesianScales.getScaleByPosition(\n\t\t\t\taxisPosition\n\t\t\t);\n\t\t\tconst scaleType = self.services.cartesianScales.getScaleTypeByPosition(\n\t\t\t\taxisPosition\n\t\t\t);\n\n\t\t\tlet xScale = null;\n\t\t\tlet yScale = null;\n\n\t\t\t// Depending on type of axis position, assign scale and main perpendicular axis\n\t\t\tif (\n\t\t\t\taxisPosition === AxisPositions.LEFT ||\n\t\t\t\taxisPosition === AxisPositions.RIGHT\n\t\t\t) {\n\t\t\t\tyScale = scale;\n\t\t\t\txScale = self.services.cartesianScales.getMainXScale();\n\t\t\t} else {\n\t\t\t\txScale = scale;\n\t\t\t\tyScale = self.services.cartesianScales.getMainYScale();\n\t\t\t}\n\n\t\t\tconst isScaleTypeLabels = scaleType === ScaleTypes.LABELS;\n\t\t\tconst [xScaleStart, xScaleEnd] = xScale.range();\n\t\t\tconst [yScaleEnd, yScaleStart] = yScale.range();\n\n\t\t\tconst { cartesianScales } = self.services;\n\t\t\tconst orientation = cartesianScales.getOrientation();\n\t\t\tconst getDomainValue = (d) => cartesianScales.getDomainValue(d);\n\t\t\tconst getRangeValue = (d) => cartesianScales.getRangeValue(d);\n\t\t\tconst [\n\t\t\t\tgetXValue,\n\t\t\t\tgetYValue,\n\t\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\t\tgetDomainValue,\n\t\t\t\tgetRangeValue,\n\t\t\t\torientation\n\t\t\t);\n\n\t\t\tconst group = select(this);\n\t\t\tif (\n\t\t\t\taxisPosition === AxisPositions.TOP ||\n\t\t\t\taxisPosition === AxisPositions.BOTTOM\n\t\t\t) {\n\t\t\t\tgroup\n\t\t\t\t\t.selectAll('line.threshold-line')\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: 'threshold-line-update',\n\t\t\t\t\t\t\tanimate,\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.attr('y1', yScaleStart)\n\t\t\t\t\t.attr('y2', yScaleEnd)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'x1',\n\t\t\t\t\t\t({ datum }) =>\n\t\t\t\t\t\t\tgetXValue(datum) +\n\t\t\t\t\t\t\t(isScaleTypeLabels ? scale.step() / 2 : 0)\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'x2',\n\t\t\t\t\t\t({ datum }) =>\n\t\t\t\t\t\t\tgetXValue(datum) +\n\t\t\t\t\t\t\t(isScaleTypeLabels ? scale.step() / 2 : 0)\n\t\t\t\t\t)\n\t\t\t\t\t.style('stroke', ({ fillColor }) => fillColor);\n\n\t\t\t\t// Set hoverable area width and rotate it\n\t\t\t\tgroup\n\t\t\t\t\t.selectAll('rect.threshold-hoverable-area')\n\t\t\t\t\t.attr('x', 0)\n\t\t\t\t\t.attr('y', ({ datum }) => -getXValue(datum))\n\t\t\t\t\t.attr('width', Math.abs(yScaleEnd - yScaleStart))\n\t\t\t\t\t.classed('rotate', true);\n\t\t\t} else {\n\t\t\t\tgroup\n\t\t\t\t\t.selectAll('line.threshold-line')\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: 'threshold-line-update',\n\t\t\t\t\t\t\tanimate,\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.attr('x1', xScaleStart)\n\t\t\t\t\t.attr('x2', xScaleEnd)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'y1',\n\t\t\t\t\t\t({ datum }) =>\n\t\t\t\t\t\t\tgetYValue(datum) +\n\t\t\t\t\t\t\t(isScaleTypeLabels ? scale.step() / 2 : 0)\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'y2',\n\t\t\t\t\t\t({ datum }) =>\n\t\t\t\t\t\t\tgetYValue(datum) +\n\t\t\t\t\t\t\t(isScaleTypeLabels ? scale.step() / 2 : 0)\n\t\t\t\t\t)\n\t\t\t\t\t.style('stroke', ({ fillColor }) => fillColor);\n\n\t\t\t\t// Set hoverable area width\n\t\t\t\tgroup\n\t\t\t\t\t.selectAll('rect.threshold-hoverable-area')\n\t\t\t\t\t.attr('x', xScaleStart)\n\t\t\t\t\t.attr('y', ({ datum }) => getYValue(datum))\n\t\t\t\t\t.attr('width', Math.abs(xScaleEnd - xScaleStart))\n\t\t\t\t\t.classed('rotate', false);\n\t\t\t}\n\t\t});\n\n\t\t// Add event listener for showing the threshold tooltip\n\t\tthis.services.events.addEventListener(Events.Threshold.SHOW, (e) => {\n\t\t\tthis.setThresholdLabelPosition(e.detail);\n\n\t\t\tthis.label.classed('hidden', false);\n\t\t});\n\n\t\t// Add event listener for hiding the threshold tooltip\n\t\tthis.services.events.addEventListener(Events.Threshold.HIDE, (e) => {\n\t\t\tthis.label.classed('hidden', true);\n\t\t});\n\n\t\tthis.appendThresholdLabel();\n\n\t\tthis.addEventListeners();\n\t}\n\n\tgetFormattedValue(datum) {\n\t\tconst { value, axisPosition } = datum;\n\t\tconst options = this.getOptions();\n\t\tconst scaleType = this.services.cartesianScales.getScaleTypeByPosition(\n\t\t\taxisPosition\n\t\t);\n\n\t\t// If scale is time, format the threshold date as the ticks format\n\t\tif (scaleType === ScaleTypes.TIME) {\n\t\t\tconst isVertical = [\n\t\t\t\tAxisPositions.LEFT,\n\t\t\t\tAxisPositions.RIGHT,\n\t\t\t].includes(axisPosition);\n\t\t\tconst mainXScale = this.services.cartesianScales.getMainXScale();\n\t\t\tconst mainYScale = this.services.cartesianScales.getMainYScale();\n\t\t\tconst scale = isVertical ? mainYScale : mainXScale;\n\n\t\t\tconst timeScaleOptions = Tools.getProperty(options, 'timeScale');\n\t\t\tconst timeInterval = computeTimeIntervalName(scale.ticks());\n\t\t\treturn formatTick(\n\t\t\t\tvalue,\n\t\t\t\t0,\n\t\t\t\tscale.ticks(),\n\t\t\t\ttimeInterval,\n\t\t\t\ttimeScaleOptions\n\t\t\t);\n\t\t}\n\n\t\treturn value.toLocaleString('en');\n\t}\n\n\tappendThresholdLabel() {\n\t\tconst holder = select(this.services.domUtils.getHolder());\n\n\t\tconst chartprefix = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'style',\n\t\t\t'prefix'\n\t\t);\n\n\t\tthis.label = DOMUtils.appendOrSelect(\n\t\t\tholder,\n\t\t\t`div.${carbonPrefix}--${chartprefix}--threshold--label`\n\t\t).classed('hidden', true);\n\t}\n\n\tsetThresholdLabelPosition({ event, datum }) {\n\t\tconst holder = this.services.domUtils.getHolder();\n\t\tconst mouseRelativePos = pointer(event, holder);\n\n\t\t// Format the threshold value using valueFormatter if defined in user-provided options\n\t\tconst formattedValue = datum.valueFormatter\n\t\t\t? datum.valueFormatter(datum.value)\n\t\t\t: this.getFormattedValue(datum);\n\n\t\tthis.label\n\t\t\t.html(`${datum.label || 'Threshold'}: ${formattedValue}`)\n\t\t\t.style('background-color', datum.fillColor);\n\n\t\tconst target = this.label.node();\n\t\t// Find out whether threshold label should be shown on the left or right side\n\t\tconst bestPlacementOption = this.positionService.findBestPlacementAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0],\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\t[\n\t\t\t\tPLACEMENTS.RIGHT,\n\t\t\t\tPLACEMENTS.LEFT,\n\t\t\t\tPLACEMENTS.TOP,\n\t\t\t\tPLACEMENTS.BOTTOM,\n\t\t\t],\n\t\t\t() => ({\n\t\t\t\twidth: holder.offsetWidth,\n\t\t\t\theight: holder.offsetHeight,\n\t\t\t})\n\t\t);\n\n\t\t// Get coordinates to where label should be positioned\n\t\tconst pos = this.positionService.findPositionAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0],\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\tbestPlacementOption\n\t\t);\n\n\t\tthis.positionService.setElement(target, pos);\n\t}\n\n\t// Constructs object to pass in scale functions\n\tconstructDatumObj(d, element) {\n\t\tconst datum = {};\n\n\t\t// We only need to specify group only if correpsonding dataset is defined\n\t\tif (d.correspondingDatasets) {\n\t\t\tdatum['group'] = Tools.getProperty(d, 'correspondingDatasets', 0);\n\t\t}\n\n\t\t// Add attribute with the mapsTo value as key\n\t\tdatum[d['mapsTo']] = element.value;\n\n\t\treturn datum;\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\n\t\t// Add events to the threshold hoverable area\n\t\tsvg.selectAll('rect.threshold-hoverable-area')\n\t\t\t.on('mouseover mousemove', function (event) {\n\t\t\t\tselect(this.parentNode)\n\t\t\t\t\t.select('line.threshold-line')\n\t\t\t\t\t.classed('active', true);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Threshold.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement: select(this),\n\t\t\t\t\tdatum: select(this).datum(),\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event) {\n\t\t\t\tselect(this.parentNode)\n\t\t\t\t\t.select('line.threshold-line')\n\t\t\t\t\t.classed('active', false);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Threshold.HIDE, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement: select(this),\n\t\t\t\t\tdatum: select(this).datum(),\n\t\t\t\t});\n\t\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"file":"threshold.js","sourceRoot":"","sources":["threshold.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport * as Tools from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model/model';\nimport {\n\tAxisPositions,\n\tEvents,\n\tRenderTypes,\n\tScaleTypes,\n} from '../../interfaces';\n\n// D3 Imports\n// @ts-ignore\n// ts-ignore is needed because `@types/d3`\n// is missing the `pointer` function\nimport { select, pointer } from 'd3-selection';\n\n// Carbon position service\nimport Position, { PLACEMENTS } from '@carbon/utils-position';\n\n// import the settings for the css prefix\nimport { carbonPrefix } from '../../configuration-non-customizable';\nimport {\n\tformatTick,\n\tcomputeTimeIntervalName,\n} from '../../services/time-series';\n\nexport class Threshold extends Component {\n\ttype = 'threshold';\n\trenderType = RenderTypes.SVG;\n\n\tlabel: any;\n\n\tpositionService = new Position();\n\n\tconstructor(model: ChartModel, services: any) {\n\t\tsuper(model, services);\n\t}\n\n\trender(animate = false) {\n\t\tconst axesOptions = Tools.getProperty(this.getOptions(), 'axes');\n\n\t\tconst thresholdData = [];\n\n\t\tObject.keys(axesOptions).forEach((axisPosition) => {\n\t\t\tif (Object.values(AxisPositions).includes(axisPosition as any)) {\n\t\t\t\tconst axisOptions = axesOptions[axisPosition];\n\n\t\t\t\tif (\n\t\t\t\t\taxisOptions.thresholds &&\n\t\t\t\t\taxisOptions.thresholds.length > 0\n\t\t\t\t) {\n\t\t\t\t\tthresholdData.push({\n\t\t\t\t\t\taxisPosition,\n\t\t\t\t\t\tthresholds: axisOptions.thresholds,\n\t\t\t\t\t\tcorrespondingDatasets:\n\t\t\t\t\t\t\taxisOptions?.correspondingDatasets,\n\t\t\t\t\t\tmapsTo: axisOptions?.mapsTo,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\n\t\t// Update data on all axis threshold groups\n\t\tconst thresholdAxisGroups = svg\n\t\t\t.selectAll('g.axis-thresholds')\n\t\t\t.data(thresholdData, (thresholdData) => thresholdData.axisPosition);\n\n\t\t// Remove axis threshold groups that are no longer needed\n\t\tthresholdAxisGroups.exit().attr('opacity', 0).remove();\n\n\t\t// Add the axis threshold groups that need to be introduced\n\t\tconst thresholdAxisGroupsEnter = thresholdAxisGroups\n\t\t\t.enter()\n\t\t\t.append('g');\n\n\t\tconst thresholdAxisGroupsMerge = thresholdAxisGroupsEnter.merge(\n\t\t\tthresholdAxisGroups\n\t\t);\n\t\tthresholdAxisGroupsMerge.attr(\n\t\t\t'class',\n\t\t\t(d) => `axis-thresholds ${d.axisPosition}`\n\t\t);\n\n\t\tconst thresholdGroups = thresholdAxisGroupsMerge\n\t\t\t.selectAll('g.threshold-group')\n\t\t\t.data((d) =>\n\t\t\t\td.thresholds.map((threshold) => {\n\t\t\t\t\t// Merge relevant keys into the threshold object\n\t\t\t\t\tthreshold.axisPosition = d.axisPosition;\n\t\t\t\t\tthreshold.datum = this.constructDatumObj(d, threshold);\n\t\t\t\t\treturn threshold;\n\t\t\t\t})\n\t\t\t);\n\n\t\t// Remove threshold groups that are no longer needed\n\t\tthresholdGroups.exit().attr('opacity', 0).remove();\n\n\t\t// Add the threshold groups that need to be introduced\n\t\tconst thresholdGroupsEnter = thresholdGroups.enter().append('g');\n\n\t\tthresholdGroupsEnter.append('line').attr('class', 'threshold-line');\n\t\tthresholdGroupsEnter\n\t\t\t.append('rect')\n\t\t\t.attr('class', 'threshold-hoverable-area');\n\n\t\tconst thresholdGroupsMerge = thresholdGroupsEnter.merge(\n\t\t\tthresholdGroups\n\t\t);\n\t\tthresholdGroupsMerge.attr('class', 'threshold-group');\n\n\t\tconst self = this;\n\t\tthresholdAxisGroupsMerge.each(function ({ axisPosition }) {\n\t\t\tconst scale = self.services.cartesianScales.getScaleByPosition(\n\t\t\t\taxisPosition\n\t\t\t);\n\t\t\tconst scaleType = self.services.cartesianScales.getScaleTypeByPosition(\n\t\t\t\taxisPosition\n\t\t\t);\n\n\t\t\tlet xScale = null;\n\t\t\tlet yScale = null;\n\n\t\t\t// Depending on type of axis position, assign scale and main perpendicular axis\n\t\t\tif (\n\t\t\t\taxisPosition === AxisPositions.LEFT ||\n\t\t\t\taxisPosition === AxisPositions.RIGHT\n\t\t\t) {\n\t\t\t\tyScale = scale;\n\t\t\t\txScale = self.services.cartesianScales.getMainXScale();\n\t\t\t} else {\n\t\t\t\txScale = scale;\n\t\t\t\tyScale = self.services.cartesianScales.getMainYScale();\n\t\t\t}\n\n\t\t\tconst isScaleTypeLabels = scaleType === ScaleTypes.LABELS;\n\t\t\tconst [xScaleStart, xScaleEnd] = xScale.range();\n\t\t\tconst [yScaleEnd, yScaleStart] = yScale.range();\n\n\t\t\tconst { cartesianScales } = self.services;\n\t\t\tconst orientation = cartesianScales.getOrientation();\n\t\t\tconst getDomainValue = (d) => cartesianScales.getDomainValue(d);\n\t\t\tconst getRangeValue = (d) => cartesianScales.getRangeValue(d);\n\t\t\tconst [\n\t\t\t\tgetXValue,\n\t\t\t\tgetYValue,\n\t\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\t\tgetDomainValue,\n\t\t\t\tgetRangeValue,\n\t\t\t\torientation\n\t\t\t);\n\n\t\t\tconst group = select(this);\n\t\t\tif (\n\t\t\t\taxisPosition === AxisPositions.TOP ||\n\t\t\t\taxisPosition === AxisPositions.BOTTOM\n\t\t\t) {\n\t\t\t\tgroup\n\t\t\t\t\t.selectAll('line.threshold-line')\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: 'threshold-line-update',\n\t\t\t\t\t\t\tanimate,\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.attr('y1', yScaleStart)\n\t\t\t\t\t.attr('y2', yScaleEnd)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'x1',\n\t\t\t\t\t\t({ datum }) =>\n\t\t\t\t\t\t\tgetXValue(datum) +\n\t\t\t\t\t\t\t(isScaleTypeLabels ? scale.step() / 2 : 0)\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'x2',\n\t\t\t\t\t\t({ datum }) =>\n\t\t\t\t\t\t\tgetXValue(datum) +\n\t\t\t\t\t\t\t(isScaleTypeLabels ? scale.step() / 2 : 0)\n\t\t\t\t\t)\n\t\t\t\t\t.style('stroke', ({ fillColor }) => fillColor);\n\n\t\t\t\t// Set hoverable area width and rotate it\n\t\t\t\tgroup\n\t\t\t\t\t.selectAll('rect.threshold-hoverable-area')\n\t\t\t\t\t.attr('x', 0)\n\t\t\t\t\t.attr('y', ({ datum }) => -getXValue(datum))\n\t\t\t\t\t.attr('width', Math.abs(yScaleEnd - yScaleStart))\n\t\t\t\t\t.classed('rotate', true);\n\t\t\t} else {\n\t\t\t\tgroup\n\t\t\t\t\t.selectAll('line.threshold-line')\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: 'threshold-line-update',\n\t\t\t\t\t\t\tanimate,\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.attr('x1', xScaleStart)\n\t\t\t\t\t.attr('x2', xScaleEnd)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'y1',\n\t\t\t\t\t\t({ datum }) =>\n\t\t\t\t\t\t\tgetYValue(datum) +\n\t\t\t\t\t\t\t(isScaleTypeLabels ? scale.step() / 2 : 0)\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'y2',\n\t\t\t\t\t\t({ datum }) =>\n\t\t\t\t\t\t\tgetYValue(datum) +\n\t\t\t\t\t\t\t(isScaleTypeLabels ? scale.step() / 2 : 0)\n\t\t\t\t\t)\n\t\t\t\t\t.style('stroke', ({ fillColor }) => fillColor);\n\n\t\t\t\t// Set hoverable area width\n\t\t\t\tgroup\n\t\t\t\t\t.selectAll('rect.threshold-hoverable-area')\n\t\t\t\t\t.attr('x', xScaleStart)\n\t\t\t\t\t.attr('y', ({ datum }) => getYValue(datum))\n\t\t\t\t\t.attr('width', Math.abs(xScaleEnd - xScaleStart))\n\t\t\t\t\t.classed('rotate', false);\n\t\t\t}\n\t\t});\n\n\t\t// Add event listener for showing the threshold tooltip\n\t\tthis.services.events.addEventListener(Events.Threshold.SHOW, (e) => {\n\t\t\tthis.setThresholdLabelPosition(e.detail);\n\n\t\t\tthis.label.classed('hidden', false);\n\t\t});\n\n\t\t// Add event listener for hiding the threshold tooltip\n\t\tthis.services.events.addEventListener(Events.Threshold.HIDE, (e) => {\n\t\t\tthis.label.classed('hidden', true);\n\t\t});\n\n\t\tthis.appendThresholdLabel();\n\n\t\tthis.addEventListeners();\n\t}\n\n\tgetFormattedValue(datum) {\n\t\tconst { value, axisPosition } = datum;\n\t\tconst options = this.getOptions();\n\t\tconst scaleType = this.services.cartesianScales.getScaleTypeByPosition(\n\t\t\taxisPosition\n\t\t);\n\n\t\t// If scale is time, format the threshold date as the ticks format\n\t\tif (scaleType === ScaleTypes.TIME) {\n\t\t\tconst isVertical = [\n\t\t\t\tAxisPositions.LEFT,\n\t\t\t\tAxisPositions.RIGHT,\n\t\t\t].includes(axisPosition);\n\t\t\tconst mainXScale = this.services.cartesianScales.getMainXScale();\n\t\t\tconst mainYScale = this.services.cartesianScales.getMainYScale();\n\t\t\tconst scale = isVertical ? mainYScale : mainXScale;\n\n\t\t\tconst timeScaleOptions = Tools.getProperty(options, 'timeScale');\n\t\t\tconst timeInterval = computeTimeIntervalName(scale.ticks());\n\t\t\treturn formatTick(\n\t\t\t\tvalue,\n\t\t\t\t0,\n\t\t\t\tscale.ticks(),\n\t\t\t\ttimeInterval,\n\t\t\t\ttimeScaleOptions\n\t\t\t);\n\t\t}\n\n\t\treturn value.toLocaleString('en');\n\t}\n\n\tappendThresholdLabel() {\n\t\tconst holder = select(this.services.domUtils.getHolder());\n\n\t\tconst chartprefix = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'style',\n\t\t\t'prefix'\n\t\t);\n\n\t\tthis.label = DOMUtils.appendOrSelect(\n\t\t\tholder,\n\t\t\t`div.${carbonPrefix}--${chartprefix}--threshold--label`\n\t\t).classed('hidden', true);\n\t}\n\n\tsetThresholdLabelPosition({ event, datum }) {\n\t\tconst holder = this.services.domUtils.getHolder();\n\t\tconst mouseRelativePos = pointer(event, holder);\n\n\t\t// Format the threshold value using valueFormatter if defined in user-provided options\n\t\tconst formattedValue = datum.valueFormatter\n\t\t\t? datum.valueFormatter(datum.value)\n\t\t\t: this.getFormattedValue(datum);\n\n\t\tthis.label\n\t\t\t.html(`${datum.label || 'Threshold'}: ${formattedValue}`)\n\t\t\t.style('background-color', datum.fillColor);\n\n\t\tconst target = this.label.node();\n\t\t// Find out whether threshold label should be shown on the left or right side\n\t\tconst bestPlacementOption = this.positionService.findBestPlacementAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0],\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\t[\n\t\t\t\tPLACEMENTS.RIGHT,\n\t\t\t\tPLACEMENTS.LEFT,\n\t\t\t\tPLACEMENTS.TOP,\n\t\t\t\tPLACEMENTS.BOTTOM,\n\t\t\t],\n\t\t\t() => ({\n\t\t\t\ttop: undefined, // other package lists this as non-optional\n\t\t\t\tleft: undefined, // ditto\n\t\t\t\twidth: holder.offsetWidth,\n\t\t\t\theight: holder.offsetHeight,\n\t\t\t})\n\t\t);\n\n\t\t// Get coordinates to where label should be positioned\n\t\tconst pos = this.positionService.findPositionAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0],\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\tbestPlacementOption\n\t\t);\n\n\t\tthis.positionService.setElement(target, pos);\n\t}\n\n\t// Constructs object to pass in scale functions\n\tconstructDatumObj(d, element) {\n\t\tconst datum = {};\n\n\t\t// We only need to specify group only if correpsonding dataset is defined\n\t\tif (d.correspondingDatasets) {\n\t\t\tdatum['group'] = Tools.getProperty(d, 'correspondingDatasets', 0);\n\t\t}\n\n\t\t// Add attribute with the mapsTo value as key\n\t\tdatum[d['mapsTo']] = element.value;\n\n\t\treturn datum;\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\n\t\t// Add events to the threshold hoverable area\n\t\tsvg.selectAll('rect.threshold-hoverable-area')\n\t\t\t.on('mouseover mousemove', function (event) {\n\t\t\t\tselect(this.parentNode)\n\t\t\t\t\t.select('line.threshold-line')\n\t\t\t\t\t.classed('active', true);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Threshold.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement: select(this),\n\t\t\t\t\tdatum: select(this).datum(),\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event) {\n\t\t\t\tselect(this.parentNode)\n\t\t\t\t\t.select('line.threshold-line')\n\t\t\t\t\t.classed('active', false);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Threshold.HIDE, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement: select(this),\n\t\t\t\t\tdatum: select(this).datum(),\n\t\t\t\t});\n\t\t\t});\n\t}\n}\n"]}
@@ -240,6 +240,8 @@ var Tooltip = /** @class */ (function (_super) {
240
240
  PLACEMENTS.TOP,
241
241
  PLACEMENTS.BOTTOM,
242
242
  ], function () { return ({
243
+ top: undefined,
244
+ left: undefined,
243
245
  width: holderWidth,
244
246
  height: holderHeight,
245
247
  }); });
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["tooltip.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,KAAK,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AAErD,0BAA0B;AAC1B,OAAO,QAAQ,EAAE,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE9D,yCAAyC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,aAAa;AACb,aAAa;AACb,0CAA0C;AAC1C,oCAAoC;AACpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;IAA6B,2BAAS;IASrC,iBAAY,KAAiB,EAAE,QAAa,EAAE,OAAa;QAA3D,YACC,kBAAM,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,SAG/B;QAZD,UAAI,GAAG,SAAS,CAAC;QACjB,gBAAU,GAAG,WAAW,CAAC,IAAI,CAAC;QAE9B,mEAAmE;QACnE,0BAAoB,GAAG,KAAK,CAAC;QAE7B,qBAAe,GAAG,IAAI,QAAQ,EAAE,CAAC;QAQjC,uBAAiB,GAAG,UAAC,CAAC;YACrB,IAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAE7C,IAAI,WAAW,CAAC;YAChB,IAAI,cAAc,GAAG,KAAI,CAAC,WAAW,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAExD,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE;gBACrB,WAAW,GAAG,qCAAiC,CAAC,CAAC,MAAM,CAAC,OAAO,eAAY,CAAC;aAC5E;iBAAM;gBACN,WAAW,GAAG,KAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;aAClD;YAED,IAAM,oBAAoB,GAAG,QAAQ,CAAC,cAAc,CACnD,KAAI,CAAC,OAAO,EACZ,iBAAiB,CACjB,CAAC;YAEF,uDAAuD;YACvD,IAAI,KAAK,CAAC,WAAW,CAAC,KAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE;gBAClE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE;oBACrB,IAAM,SAAS,GAAG,qCAAiC,CAAC,CAAC,MAAM,CAAC,OAAO,eAAY,CAAC;oBAChF,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACrC;qBAAM;oBACN,oBAAoB,CAAC,IAAI,CACxB,KAAI,CAAC,KAAK;yBACR,UAAU,EAAE;yBACZ,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CACvC,CAAC;iBACF;aACD;iBAAM;gBACN,sBAAsB;gBACtB,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACvC;YAED,iCAAiC;YACjC,oBAAoB;iBAClB,SAAS,CAAC,oBAAoB,CAAC;iBAC/B,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC;gBACvB,IAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;gBAE/B,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;oBACjD,MAAM,CAAC,IAAI,CAAC;yBACV,MAAM,CAAC,gBAAgB,CAAC;yBACxB,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;yBAC9B,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;iBACxC;YACF,CAAC,CAAC,CAAC;YAEJ,uBAAuB;YACvB,KAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAExB,UAAU;YACV,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC,CAAC;QAEF,uBAAiB,GAAG;YACnB,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAChE,CAAC,CAAC;QA5DD,KAAI,CAAC,IAAI,EAAE,CAAC;;IACb,CAAC;IA6DD,yCAAuB,GAAvB;QAAA,iBA4BC;QA3BA,2DAA2D;QAC3D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CACpC,MAAM,CAAC,OAAO,CAAC,IAAI,EACnB,UAAC,CAAc;YACd,IAAI,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE;gBAC7C,KAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;aACxB;QACF,CAAC,CACD,CAAC;QAEF,6DAA6D;QAC7D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CACpC,MAAM,CAAC,OAAO,CAAC,IAAI,EACnB,IAAI,CAAC,iBAAiB,CACtB,CAAC;QAEF,2DAA2D;QAC3D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CACpC,MAAM,CAAC,OAAO,CAAC,IAAI,EACnB,IAAI,CAAC,iBAAiB,CACtB,CAAC;QAEF,qDAAqD;QACrD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CACpC,MAAM,CAAC,KAAK,CAAC,QAAQ,EACrB,IAAI,CAAC,iBAAiB,CACtB,CAAC;IACH,CAAC;IAED,4CAA0B,GAA1B;QACC,oCAAoC;QACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAEpE,oCAAoC;QACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CACvC,MAAM,CAAC,OAAO,CAAC,IAAI,EACnB,IAAI,CAAC,iBAAiB,CACtB,CAAC;QAEF,oCAAoC;QACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CACvC,MAAM,CAAC,OAAO,CAAC,IAAI,EACnB,IAAI,CAAC,iBAAiB,CACtB,CAAC;QAEF,wCAAwC;QACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CACvC,MAAM,CAAC,KAAK,CAAC,QAAQ,EACrB,IAAI,CAAC,iBAAiB,CACtB,CAAC;IACH,CAAC;IAED,0BAAQ,GAAR,UAAS,CAAc;QACtB,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;YACnB,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SACtB;QAED,OAAO,EAAE,CAAC;IACX,CAAC;IAED,6BAAW,GAAX,UAAY,KAAK;QAAjB,iBA2DC;QA1DA,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAElC,iDAAiD;QACjD,IAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CACvC,OAAO,EACP,SAAS,EACT,YAAY,EACZ,MAAM,CACN,CAAC;QAEF,IAAM,mBAAmB,GAAG,KAAK,CAAC,WAAW,CAC5C,OAAO,EACP,SAAS,EACT,YAAY,EACZ,WAAW,CACX,CAAC;QAEF,IAAM,sBAAsB,GAAG,KAAK,CAAC,WAAW,CAC/C,OAAO,EACP,SAAS,EACT,YAAY,EACZ,cAAc,CACd,CAAC;QAEF,sCAAsC;QACtC,gCAAgC;QAChC,IAAI,cAAc,KAAK,eAAe,CAAC,IAAI,EAAE;YAC5C,OAAO,KAAK,CAAC,GAAG,CAAC,UAAC,IAAI;gBACrB,2CAA2C;gBAC3C,IAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;oBACtB,CAAC,CAAC,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;oBAC7C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;gBACd,IACC,IAAI,CAAC,KAAK;oBACV,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,GAAG,mBAAmB,EACtD;oBACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAC/B,IAAI,CAAC,KAAK,EACV,cAAc,EACd,sBAAsB,CACtB,CAAC;iBACF;gBAED,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,mBAAmB,EAAE;oBAC1D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAC/B,IAAI,CAAC,KAAK,EACV,cAAc,EACd,sBAAsB,CACtB,CAAC;iBACF;gBAED,OAAO,IAAI,CAAC;YACb,CAAC,CAAC,CAAC;SACH;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAED,gCAAc,GAAd,UAAe,cAAmB;QACjC,OAAO,CACN,8BAA4B;YAC5B,cAAc;iBACZ,GAAG,CACH,UAAC,IAAI;gBACJ,OAAA,oDAC8B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,2BAErD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;oBACvB,CAAC,CAAC,gCAA6B,IAAI,CAAC,KAAK,cAAU;oBACnD,CAAC,CAAC,EAAE,8DAGD,IAAI,CAAC,KAAK,IAAI,EAAE,4BACnB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,iCAA6B,IAAI,CAAC,SAAS,YAAS,CAAC,CAAC,CAAC,EAAE,4CAG3E,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;oBAC9C,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,yBAAqB,IAAI,CAAC,KAAK,SAAM,uCAGrC;YAjBJ,CAiBI,CACL;iBACA,IAAI,CAAC,EAAE,CAAC;YACV,OAAO,CACP,CAAC;IACH,CAAC;IAED,gCAAc,GAAd,UAAe,KAAU,EAAE,KAAa;QACvC,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CACvC,OAAO,EACP,SAAS,EACT,gBAAgB,CAChB,CAAC;QAEF,IAAI,cAAc,EAAE;YACnB,OAAO,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACpC;QAED,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;YACxC,OAAO,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;SACpC;QAED,IAAI;YACH,wCAAwC;YACxC,IACC,OAAO,KAAK,KAAK,QAAQ;gBACzB,4CAA4C,CAAC,IAAI,CAAC,KAAK,CAAC,EACvD;gBACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC;aAChD;SACD;QAAC,OAAO,CAAC,EAAE;YACX,gCAAgC;SAChC;QAED,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IAED,wBAAM,GAAN;QACC,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAM,gBAAgB,GAAG,KAAK,CAAC,WAAW,CACzC,OAAO,EACP,SAAS,EACT,SAAS,CACT,CAAC;QACF,IAAI,gBAAgB,EAAE;YACrB,2BAA2B;YAC3B,IAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;YAC1D,IAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,cAAc,CACrC,MAAM,EACN,SAAO,YAAY,UAAK,WAAW,cAAW,CAC9C,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAE9D,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC/B,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;aACjC;YACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SACrC;aAAM,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC1D,+BAA+B;YAC/B,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAClC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;SAClC;IACF,CAAC;IAED,iCAAe,GAAf,UAAgB,CAAc;QAC7B,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAClD,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACnC,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAM,mBAAmB,GAAG,KAAK,CAAC,WAAW,CAC5C,OAAO,EACP,SAAS,EACT,KAAK,EACL,SAAS,CACT,CAAC;QAEF,IAAI,gBAAgB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QACvE,IAAI,CAAC,gBAAgB,EAAE;YACtB,gBAAgB,GAAG,OAAO,CACzB,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,EACvC,MAAM,CACN,CAAC;SACF;aAAM;YACN,IAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACpC,OAAO,EACP,SAAS,EACT,KAAK,EACL,MAAM,CACN,CAAC;YACF,IAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAEhE,8CAA8C;YAC9C,8BAA8B;YAC9B,IAAI,mBAAmB,EAAE;gBACxB,gBAAgB,CAAC,CAAC,CAAC;oBAClB,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC;gBAEpD,iEAAiE;aACjE;SACD;QAED,IAAI,GAAG,CAAC;QAER,IAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACvC,IAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QAEzC,IAAI,mBAAmB,CAAC;QACxB,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,GAAG,EAAE;YAC5C,mBAAmB,GAAG,UAAU,CAAC,IAAI,CAAC;SACtC;aAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,GAAG,EAAE;YACnD,mBAAmB,GAAG,UAAU,CAAC,KAAK,CAAC;SACvC;aAAM;YACN,qEAAqE;YACrE,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAC7D;gBACC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;gBACzB,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC;aACxB,EACD,MAAM,EACN;gBACC,UAAU,CAAC,KAAK;gBAChB,UAAU,CAAC,IAAI;gBACf,UAAU,CAAC,GAAG;gBACd,UAAU,CAAC,MAAM;aACjB,EACD,cAAM,OAAA,CAAC;gBACN,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,YAAY;aACpB,CAAC,EAHI,CAGJ,CACF,CAAC;SACF;QAEK,IAAA,0DAAgB,CAA4B;QAClD,IAAI,mBAAmB,KAAK,UAAU,CAAC,IAAI,EAAE;YAC5C,gBAAgB,IAAI,CAAC,CAAC,CAAC;SACvB;QAED,wDAAwD;QACxD,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CACxC;YACC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB;YAC5C,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC;SACxB,EACD,MAAM,EACN,mBAAmB,CACnB,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IACF,cAAC;AAAD,CAAC,AAnXD,CAA6B,SAAS,GAmXrC","sourcesContent":["import { Component } from '../component';\nimport * as Tools from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model/model';\nimport { Events, RenderTypes, TruncationTypes } from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\n// Carbon position service\nimport Position, { PLACEMENTS } from '@carbon/utils-position';\n\n// import the settings for the css prefix\nimport { carbonPrefix } from '../../configuration-non-customizable';\n\n// D3 Imports\n// @ts-ignore\n// ts-ignore is needed because `@types/d3`\n// is missing the `pointer` function\nimport { select, pointer } from 'd3-selection';\n\nimport { format } from 'date-fns';\n\nexport class Tooltip extends Component {\n\ttype = 'tooltip';\n\trenderType = RenderTypes.HTML;\n\n\t// flag for checking whether tooltip event listener is added or not\n\tisEventListenerAdded = false;\n\ttooltip: any;\n\tpositionService = new Position();\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.init();\n\t}\n\n\thandleShowTooltip = (e) => {\n\t\tconst data = e.detail.data || e.detail.items;\n\n\t\tlet defaultHTML;\n\t\tlet formattedItems = this.formatItems(this.getItems(e));\n\n\t\tif (e.detail.content) {\n\t\t\tdefaultHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t} else {\n\t\t\tdefaultHTML = this.getTooltipHTML(formattedItems);\n\t\t}\n\n\t\tconst tooltipTextContainer = DOMUtils.appendOrSelect(\n\t\t\tthis.tooltip,\n\t\t\t'div.content-box'\n\t\t);\n\n\t\t// if there is a provided tooltip HTML function call it\n\t\tif (Tools.getProperty(this.getOptions(), 'tooltip', 'customHTML')) {\n\t\t\tif (e.detail.content) {\n\t\t\t\tconst labelHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t\t\ttooltipTextContainer.html(labelHTML);\n\t\t\t} else {\n\t\t\t\ttooltipTextContainer.html(\n\t\t\t\t\tthis.model\n\t\t\t\t\t\t.getOptions()\n\t\t\t\t\t\t.tooltip.customHTML(data, defaultHTML)\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\t// Use default tooltip\n\t\t\ttooltipTextContainer.html(defaultHTML);\n\t\t}\n\n\t\t// Apply custom background colors\n\t\ttooltipTextContainer\n\t\t\t.selectAll('.datapoint-tooltip')\n\t\t\t.each(function (datum, i) {\n\t\t\t\tconst item = formattedItems[i];\n\n\t\t\t\tif (formattedItems[i] && formattedItems[i].color) {\n\t\t\t\t\tselect(this)\n\t\t\t\t\t\t.select('.tooltip-color')\n\t\t\t\t\t\t.attr('class', 'tooltip-color')\n\t\t\t\t\t\t.style('background-color', item.color);\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Position the tooltip\n\t\tthis.positionTooltip(e);\n\n\t\t// Fade in\n\t\tthis.tooltip.classed('hidden', false).attr('aria-hidden', false);\n\t};\n\n\thandleHideTooltip = () => {\n\t\tthis.tooltip.classed('hidden', true).attr('aria-hidden', true);\n\t};\n\n\taddTooltipEventListener() {\n\t\t// listen to move-tooltip Custom Events to move the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.MOVE,\n\t\t\t(e: CustomEvent) => {\n\t\t\t\tif (this.tooltip.classed('hidden') === false) {\n\t\t\t\t\tthis.positionTooltip(e);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t// listen to show-tooltip Custom Events to render the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// listen to hide-tooltip Custom Events to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// listen to chart-mouseout event to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tremoveTooltipEventListener() {\n\t\t// remove move-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(Events.Tooltip.MOVE, null);\n\n\t\t// remove show-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// remove hide-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// remove the listener on chart-mouseout\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tformatItems(items) {\n\t\tconst options = this.getOptions();\n\n\t\t// get user provided custom values for truncation\n\t\tconst truncationType = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'type'\n\t\t);\n\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\n\t\tconst truncationNumCharacter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'numCharacter'\n\t\t);\n\n\t\t// truncate the label if it's too long\n\t\t// only applies to discrete type\n\t\tif (truncationType !== TruncationTypes.NONE) {\n\t\t\treturn items.map((item) => {\n\t\t\t\t// get width of the label icon if it exists\n\t\t\t\tconst labelIconSize = item.labelIcon ? 12 : 0;\n\n\t\t\t\titem.value = item.value\n\t\t\t\t\t? this.valueFormatter(item.value, item.label)\n\t\t\t\t\t: item.value;\n\t\t\t\tif (\n\t\t\t\t\titem.label &&\n\t\t\t\t\titem.label.length + labelIconSize > truncationThreshold\n\t\t\t\t) {\n\t\t\t\t\titem.label = Tools.truncateLabel(\n\t\t\t\t\t\titem.label,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (item.value && item.value.length > truncationThreshold) {\n\t\t\t\t\titem.value = Tools.truncateLabel(\n\t\t\t\t\t\titem.value,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn item;\n\t\t\t});\n\t\t}\n\n\t\treturn items;\n\t}\n\n\tgetTooltipHTML(formattedItems: any) {\n\t\treturn (\n\t\t\t`<ul class=\"multi-tooltip\">` +\n\t\t\tformattedItems\n\t\t\t\t.map(\n\t\t\t\t\t(item) =>\n\t\t\t\t\t\t`<li>\n\t\t\t\t\t<div class=\"datapoint-tooltip${item.bold ? ' bold' : ''}\">\n\t\t\t\t\t\t${\n\t\t\t\t\t\t\titem.class || item.color\n\t\t\t\t\t\t\t\t? `<div class=\"tooltip-color ${item.class}\"></div>`\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<div class=\"label\">\n\t\t\t\t\t\t<p>${item.label || ''}</p>\n\t\t\t\t\t\t${item.labelIcon ? `<span class=\"label-icon\"/>${item.labelIcon}</span>` : ''}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t${\n\t\t\t\t\t\t\titem.value === undefined || item.value === null\n\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t: `<p class=\"value\"/>${item.value}</p>`\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</li>`\n\t\t\t\t)\n\t\t\t\t.join('') +\n\t\t\t`</ul>`\n\t\t);\n\t}\n\n\tvalueFormatter(value: any, label: string) {\n\t\tconst options = this.getOptions();\n\t\tconst valueFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'valueFormatter'\n\t\t);\n\n\t\tif (valueFormatter) {\n\t\t\treturn valueFormatter(value, label);\n\t\t}\n\n\t\tif (typeof value.getTime === 'function') {\n\t\t\treturn format(value, 'MMM d, yyyy');\n\t\t}\n\n\t\ttry {\n\t\t\t// it's a correct ISO format Date string\n\t\t\tif (\n\t\t\t\ttypeof value === 'string' &&\n\t\t\t\t/\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/.test(value)\n\t\t\t) {\n\t\t\t\treturn format(Date.parse(value), 'MMM d, yyyy');\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// not a valid ISO format string\n\t\t}\n\n\t\treturn value.toLocaleString();\n\t}\n\n\trender() {\n\t\tconst options = this.getOptions();\n\t\tconst isTooltipEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'enabled'\n\t\t);\n\t\tif (isTooltipEnabled) {\n\t\t\t// Grab the tooltip element\n\t\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\t\t\tthis.tooltip = DOMUtils.appendOrSelect(\n\t\t\t\tholder,\n\t\t\t\t`div.${carbonPrefix}--${chartprefix}--tooltip`\n\t\t\t);\n\n\t\t\tthis.tooltip.style('max-width', null).attr('role', 'tooltip');\n\n\t\t\tif (!this.isEventListenerAdded) {\n\t\t\t\tthis.addTooltipEventListener();\n\t\t\t\tthis.isEventListenerAdded = true;\n\t\t\t}\n\t\t\tthis.tooltip.classed('hidden', true);\n\t\t} else if (!isTooltipEnabled && this.isEventListenerAdded) {\n\t\t\t// remove tooltip eventListener\n\t\t\tthis.removeTooltipEventListener();\n\t\t\tthis.isEventListenerAdded = false;\n\t\t}\n\t}\n\n\tpositionTooltip(e: CustomEvent) {\n\t\tconst holder = this.services.domUtils.getHolder();\n\t\tconst target = this.tooltip.node();\n\t\tconst options = this.getOptions();\n\t\tconst isTopZoomBarEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'zoomBar',\n\t\t\t'top',\n\t\t\t'enabled'\n\t\t);\n\n\t\tlet mouseRelativePos = Tools.getProperty(e, 'detail', 'mousePosition');\n\t\tif (!mouseRelativePos) {\n\t\t\tmouseRelativePos = pointer(\n\t\t\t\tTools.getProperty(e, 'detail', 'event'),\n\t\t\t\tholder\n\t\t\t);\n\t\t} else {\n\t\t\tconst zoombarType = Tools.getProperty(\n\t\t\t\toptions,\n\t\t\t\t'zoomBar',\n\t\t\t\t'top',\n\t\t\t\t'type'\n\t\t\t);\n\t\t\tconst zoombarHeight = Configuration.zoomBar.height[zoombarType];\n\n\t\t\t// if the mouse position is from event (ruler)\n\t\t\t// we need add zoom bar height\n\t\t\tif (isTopZoomBarEnabled) {\n\t\t\t\tmouseRelativePos[1] +=\n\t\t\t\t\tzoombarHeight + Configuration.zoomBar.spacerHeight;\n\n\t\t\t\t// TODO - we need to add toolbar height when toolbar is available\n\t\t\t}\n\t\t}\n\n\t\tlet pos;\n\n\t\tconst holderWidth = holder.offsetWidth;\n\t\tconst holderHeight = holder.offsetHeight;\n\n\t\tlet bestPlacementOption;\n\t\tif (mouseRelativePos[0] / holderWidth > 0.9) {\n\t\t\tbestPlacementOption = PLACEMENTS.LEFT;\n\t\t} else if (mouseRelativePos[0] / holderWidth < 0.1) {\n\t\t\tbestPlacementOption = PLACEMENTS.RIGHT;\n\t\t} else {\n\t\t\t// Find out whether tooltip should be shown on the left or right side\n\t\t\tbestPlacementOption = this.positionService.findBestPlacementAt(\n\t\t\t\t{\n\t\t\t\t\tleft: mouseRelativePos[0],\n\t\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t\t},\n\t\t\t\ttarget,\n\t\t\t\t[\n\t\t\t\t\tPLACEMENTS.RIGHT,\n\t\t\t\t\tPLACEMENTS.LEFT,\n\t\t\t\t\tPLACEMENTS.TOP,\n\t\t\t\t\tPLACEMENTS.BOTTOM,\n\t\t\t\t],\n\t\t\t\t() => ({\n\t\t\t\t\twidth: holderWidth,\n\t\t\t\t\theight: holderHeight,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tlet { horizontalOffset } = Configuration.tooltips;\n\t\tif (bestPlacementOption === PLACEMENTS.LEFT) {\n\t\t\thorizontalOffset *= -1;\n\t\t}\n\n\t\t// Get coordinates to where tooltip should be positioned\n\t\tpos = this.positionService.findPositionAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0] + horizontalOffset,\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\tbestPlacementOption\n\t\t);\n\n\t\tthis.positionService.setElement(target, pos);\n\t}\n}\n"]}
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["tooltip.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport * as Tools from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model/model';\nimport { Events, RenderTypes, TruncationTypes } from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\n// Carbon position service\nimport Position, { PLACEMENTS } from '@carbon/utils-position';\n\n// import the settings for the css prefix\nimport { carbonPrefix } from '../../configuration-non-customizable';\n\n// D3 Imports\n// @ts-ignore\n// ts-ignore is needed because `@types/d3`\n// is missing the `pointer` function\nimport { select, pointer } from 'd3-selection';\n\nimport { format } from 'date-fns';\n\nexport class Tooltip extends Component {\n\ttype = 'tooltip';\n\trenderType = RenderTypes.HTML;\n\n\t// flag for checking whether tooltip event listener is added or not\n\tisEventListenerAdded = false;\n\ttooltip: any;\n\tpositionService = new Position();\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.init();\n\t}\n\n\thandleShowTooltip = (e) => {\n\t\tconst data = e.detail.data || e.detail.items;\n\n\t\tlet defaultHTML;\n\t\tlet formattedItems = this.formatItems(this.getItems(e));\n\n\t\tif (e.detail.content) {\n\t\t\tdefaultHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t} else {\n\t\t\tdefaultHTML = this.getTooltipHTML(formattedItems);\n\t\t}\n\n\t\tconst tooltipTextContainer = DOMUtils.appendOrSelect(\n\t\t\tthis.tooltip,\n\t\t\t'div.content-box'\n\t\t);\n\n\t\t// if there is a provided tooltip HTML function call it\n\t\tif (Tools.getProperty(this.getOptions(), 'tooltip', 'customHTML')) {\n\t\t\tif (e.detail.content) {\n\t\t\t\tconst labelHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t\t\ttooltipTextContainer.html(labelHTML);\n\t\t\t} else {\n\t\t\t\ttooltipTextContainer.html(\n\t\t\t\t\tthis.model\n\t\t\t\t\t\t.getOptions()\n\t\t\t\t\t\t.tooltip.customHTML(data, defaultHTML)\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\t// Use default tooltip\n\t\t\ttooltipTextContainer.html(defaultHTML);\n\t\t}\n\n\t\t// Apply custom background colors\n\t\ttooltipTextContainer\n\t\t\t.selectAll('.datapoint-tooltip')\n\t\t\t.each(function (datum, i) {\n\t\t\t\tconst item = formattedItems[i];\n\n\t\t\t\tif (formattedItems[i] && formattedItems[i].color) {\n\t\t\t\t\tselect(this)\n\t\t\t\t\t\t.select('.tooltip-color')\n\t\t\t\t\t\t.attr('class', 'tooltip-color')\n\t\t\t\t\t\t.style('background-color', item.color);\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Position the tooltip\n\t\tthis.positionTooltip(e);\n\n\t\t// Fade in\n\t\tthis.tooltip.classed('hidden', false).attr('aria-hidden', false);\n\t};\n\n\thandleHideTooltip = () => {\n\t\tthis.tooltip.classed('hidden', true).attr('aria-hidden', true);\n\t};\n\n\taddTooltipEventListener() {\n\t\t// listen to move-tooltip Custom Events to move the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.MOVE,\n\t\t\t(e: CustomEvent) => {\n\t\t\t\tif (this.tooltip.classed('hidden') === false) {\n\t\t\t\t\tthis.positionTooltip(e);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t// listen to show-tooltip Custom Events to render the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// listen to hide-tooltip Custom Events to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// listen to chart-mouseout event to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tremoveTooltipEventListener() {\n\t\t// remove move-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(Events.Tooltip.MOVE, null);\n\n\t\t// remove show-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// remove hide-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// remove the listener on chart-mouseout\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tformatItems(items) {\n\t\tconst options = this.getOptions();\n\n\t\t// get user provided custom values for truncation\n\t\tconst truncationType = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'type'\n\t\t);\n\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\n\t\tconst truncationNumCharacter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'numCharacter'\n\t\t);\n\n\t\t// truncate the label if it's too long\n\t\t// only applies to discrete type\n\t\tif (truncationType !== TruncationTypes.NONE) {\n\t\t\treturn items.map((item) => {\n\t\t\t\t// get width of the label icon if it exists\n\t\t\t\tconst labelIconSize = item.labelIcon ? 12 : 0;\n\n\t\t\t\titem.value = item.value\n\t\t\t\t\t? this.valueFormatter(item.value, item.label)\n\t\t\t\t\t: item.value;\n\t\t\t\tif (\n\t\t\t\t\titem.label &&\n\t\t\t\t\titem.label.length + labelIconSize > truncationThreshold\n\t\t\t\t) {\n\t\t\t\t\titem.label = Tools.truncateLabel(\n\t\t\t\t\t\titem.label,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (item.value && item.value.length > truncationThreshold) {\n\t\t\t\t\titem.value = Tools.truncateLabel(\n\t\t\t\t\t\titem.value,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn item;\n\t\t\t});\n\t\t}\n\n\t\treturn items;\n\t}\n\n\tgetTooltipHTML(formattedItems: any) {\n\t\treturn (\n\t\t\t`<ul class=\"multi-tooltip\">` +\n\t\t\tformattedItems\n\t\t\t\t.map(\n\t\t\t\t\t(item) =>\n\t\t\t\t\t\t`<li>\n\t\t\t\t\t<div class=\"datapoint-tooltip${item.bold ? ' bold' : ''}\">\n\t\t\t\t\t\t${\n\t\t\t\t\t\t\titem.class || item.color\n\t\t\t\t\t\t\t\t? `<div class=\"tooltip-color ${item.class}\"></div>`\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<div class=\"label\">\n\t\t\t\t\t\t<p>${item.label || ''}</p>\n\t\t\t\t\t\t${item.labelIcon ? `<span class=\"label-icon\"/>${item.labelIcon}</span>` : ''}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t${\n\t\t\t\t\t\t\titem.value === undefined || item.value === null\n\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t: `<p class=\"value\"/>${item.value}</p>`\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</li>`\n\t\t\t\t)\n\t\t\t\t.join('') +\n\t\t\t`</ul>`\n\t\t);\n\t}\n\n\tvalueFormatter(value: any, label: string) {\n\t\tconst options = this.getOptions();\n\t\tconst valueFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'valueFormatter'\n\t\t);\n\n\t\tif (valueFormatter) {\n\t\t\treturn valueFormatter(value, label);\n\t\t}\n\n\t\tif (typeof value.getTime === 'function') {\n\t\t\treturn format(value, 'MMM d, yyyy');\n\t\t}\n\n\t\ttry {\n\t\t\t// it's a correct ISO format Date string\n\t\t\tif (\n\t\t\t\ttypeof value === 'string' &&\n\t\t\t\t/\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/.test(value)\n\t\t\t) {\n\t\t\t\treturn format(Date.parse(value), 'MMM d, yyyy');\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// not a valid ISO format string\n\t\t}\n\n\t\treturn value.toLocaleString();\n\t}\n\n\trender() {\n\t\tconst options = this.getOptions();\n\t\tconst isTooltipEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'enabled'\n\t\t);\n\t\tif (isTooltipEnabled) {\n\t\t\t// Grab the tooltip element\n\t\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\t\t\tthis.tooltip = DOMUtils.appendOrSelect(\n\t\t\t\tholder,\n\t\t\t\t`div.${carbonPrefix}--${chartprefix}--tooltip`\n\t\t\t);\n\n\t\t\tthis.tooltip.style('max-width', null).attr('role', 'tooltip');\n\n\t\t\tif (!this.isEventListenerAdded) {\n\t\t\t\tthis.addTooltipEventListener();\n\t\t\t\tthis.isEventListenerAdded = true;\n\t\t\t}\n\t\t\tthis.tooltip.classed('hidden', true);\n\t\t} else if (!isTooltipEnabled && this.isEventListenerAdded) {\n\t\t\t// remove tooltip eventListener\n\t\t\tthis.removeTooltipEventListener();\n\t\t\tthis.isEventListenerAdded = false;\n\t\t}\n\t}\n\n\tpositionTooltip(e: CustomEvent) {\n\t\tconst holder = this.services.domUtils.getHolder();\n\t\tconst target = this.tooltip.node();\n\t\tconst options = this.getOptions();\n\t\tconst isTopZoomBarEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'zoomBar',\n\t\t\t'top',\n\t\t\t'enabled'\n\t\t);\n\n\t\tlet mouseRelativePos = Tools.getProperty(e, 'detail', 'mousePosition');\n\t\tif (!mouseRelativePos) {\n\t\t\tmouseRelativePos = pointer(\n\t\t\t\tTools.getProperty(e, 'detail', 'event'),\n\t\t\t\tholder\n\t\t\t);\n\t\t} else {\n\t\t\tconst zoombarType = Tools.getProperty(\n\t\t\t\toptions,\n\t\t\t\t'zoomBar',\n\t\t\t\t'top',\n\t\t\t\t'type'\n\t\t\t);\n\t\t\tconst zoombarHeight = Configuration.zoomBar.height[zoombarType];\n\n\t\t\t// if the mouse position is from event (ruler)\n\t\t\t// we need add zoom bar height\n\t\t\tif (isTopZoomBarEnabled) {\n\t\t\t\tmouseRelativePos[1] +=\n\t\t\t\t\tzoombarHeight + Configuration.zoomBar.spacerHeight;\n\n\t\t\t\t// TODO - we need to add toolbar height when toolbar is available\n\t\t\t}\n\t\t}\n\n\t\tlet pos;\n\n\t\tconst holderWidth = holder.offsetWidth;\n\t\tconst holderHeight = holder.offsetHeight;\n\n\t\tlet bestPlacementOption;\n\t\tif (mouseRelativePos[0] / holderWidth > 0.9) {\n\t\t\tbestPlacementOption = PLACEMENTS.LEFT;\n\t\t} else if (mouseRelativePos[0] / holderWidth < 0.1) {\n\t\t\tbestPlacementOption = PLACEMENTS.RIGHT;\n\t\t} else {\n\t\t\t// Find out whether tooltip should be shown on the left or right side\n\t\t\tbestPlacementOption = this.positionService.findBestPlacementAt(\n\t\t\t\t{\n\t\t\t\t\tleft: mouseRelativePos[0],\n\t\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t\t},\n\t\t\t\ttarget,\n\t\t\t\t[\n\t\t\t\t\tPLACEMENTS.RIGHT,\n\t\t\t\t\tPLACEMENTS.LEFT,\n\t\t\t\t\tPLACEMENTS.TOP,\n\t\t\t\t\tPLACEMENTS.BOTTOM,\n\t\t\t\t],\n\t\t\t\t() => ({\n\t\t\t\t\ttop: undefined, // properties were never set to optional\n\t\t\t\t\tleft: undefined, // ditto\n\t\t\t\t\twidth: holderWidth,\n\t\t\t\t\theight: holderHeight,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tlet { horizontalOffset } = Configuration.tooltips;\n\t\tif (bestPlacementOption === PLACEMENTS.LEFT) {\n\t\t\thorizontalOffset *= -1;\n\t\t}\n\n\t\t// Get coordinates to where tooltip should be positioned\n\t\tpos = this.positionService.findPositionAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0] + horizontalOffset,\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\tbestPlacementOption\n\t\t);\n\n\t\tthis.positionService.setElement(target, pos);\n\t}\n}\n"]}
@@ -4,7 +4,7 @@ import { Selection } from 'd3-selection';
4
4
  export declare class Bubble extends Scatter {
5
5
  type: string;
6
6
  renderType: RenderTypes;
7
- getRadiusScale(selection: Selection<any, any, any, any>): import("d3-scale").ScaleLinear<number, number>;
7
+ getRadiusScale(selection: Selection<any, any, any, any>): import("d3-scale").ScaleLinear<number, number, never>;
8
8
  styleCircles(selection: Selection<any, any, any, any>, animate: boolean): void;
9
9
  getTooltipAdditionalItems(datum: any): {
10
10
  label: any;
@@ -5,7 +5,7 @@ export declare class WordCloud extends Component {
5
5
  renderType: RenderTypes;
6
6
  init(): void;
7
7
  render(animate?: boolean): void;
8
- getFontSizeScale(data: any): import("d3-scale").ScaleLinear<number, number>;
8
+ getFontSizeScale(data: any): import("d3-scale").ScaleLinear<number, number, never>;
9
9
  handleLegendOnHover: (event: CustomEvent<any>) => void;
10
10
  handleLegendMouseOut: (event: CustomEvent<any>) => void;
11
11
  addEventListeners(): void;