@splunk/visualizations 27.1.0 → 27.2.1

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 (52) hide show
  1. package/Area.js +2 -2
  2. package/Bar.js +2 -2
  3. package/Bubble.js +2 -2
  4. package/ChoroplethSvg.js +6 -9
  5. package/ChoroplethSvg.js.map +3 -3
  6. package/Column.js +2 -2
  7. package/Ellipse.js +2 -2
  8. package/Events.js +106 -491
  9. package/Events.js.map +4 -4
  10. package/FillerGauge.js +3 -3
  11. package/FillerGauge.js.map +3 -3
  12. package/Image.js +2 -2
  13. package/Line.js +2 -2
  14. package/LinkGraph.js +23 -18
  15. package/LinkGraph.js.map +2 -2
  16. package/Map.config.js +114 -72
  17. package/Map.config.js.map +4 -4
  18. package/Map.js +139 -86
  19. package/Map.js.map +4 -4
  20. package/Markdown.js +2 -2
  21. package/MarkerGauge.js +2 -2
  22. package/ParallelCoordinates.js +3 -3
  23. package/ParallelCoordinates.js.map +3 -3
  24. package/Pie.js +2 -2
  25. package/Punchcard.js +199 -26
  26. package/Punchcard.js.map +4 -4
  27. package/Rectangle.js +2 -2
  28. package/Sankey.js +2 -2
  29. package/Scatter.js +2 -2
  30. package/SingleValue.js +19 -9
  31. package/SingleValue.js.map +3 -3
  32. package/SingleValueBasic.js +1 -1
  33. package/SingleValueBasic.js.map +3 -3
  34. package/SingleValueIcon.js +380 -117
  35. package/SingleValueIcon.js.map +4 -4
  36. package/SingleValueRadial.js +16 -9
  37. package/SingleValueRadial.js.map +3 -3
  38. package/SparkLine.js +1 -1
  39. package/SparkLine.js.map +3 -3
  40. package/Table.js +15 -10
  41. package/Table.js.map +3 -3
  42. package/Timeline.config.js +418 -0
  43. package/Timeline.config.js.map +7 -0
  44. package/Timeline.js +3074 -0
  45. package/Timeline.js.map +7 -0
  46. package/common/OptionsDoc.js +2 -2
  47. package/common/OptionsDoc.js.map +1 -1
  48. package/common/utils/mapUtils.js.map +2 -2
  49. package/common/utils/singleValueUtils.js +18 -8
  50. package/common/utils/singleValueUtils.js.map +2 -2
  51. package/common/withDashboardViz.js +2 -2
  52. package/package.json +43 -31
package/SparkLine.js CHANGED
@@ -45,7 +45,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
45
45
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
46
46
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
47
47
 
48
- // src/SparkLine/SparkLine.jsx
48
+ // src/SparkLine/index.ts
49
49
  var SparkLine_exports = {};
50
50
  __export(SparkLine_exports, {
51
51
  default: () => SparkLine_default
package/SparkLine.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["src/SparkLine/SparkLine.jsx", "esm-externals:prop-types", "esm-externals:react", "esm-externals:lodash", "esm-externals:styled-components", "esm-externals:@splunk/react-ui/Popover", "esm-externals:@splunk/ui-utils/i18n", "esm-externals:@splunk/ui-utils/id"],
4
- "sourcesContent": ["import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { isArray, isFinite, isNull, keys, max, min, omit } from 'lodash';\nimport styled from 'styled-components';\nimport Popover from '@splunk/react-ui/Popover';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport { createDOMID } from '@splunk/ui-utils/id';\n\nconst StyledSvg = styled.svg`\n /* For fixing IE11 shows overflow part line issue */\n overflow: hidden;\n`;\n\nconst StyledTooltip = styled.div`\n padding: 3px 8px;\n font-size: 12px;\n`;\n\nclass SparkLine extends Component {\n static propTypes = {\n /**\n * If true, data can contain `null` as a value and is treated as `0`. If false, this throws error when data contains `null`.\n */\n acceptNull: PropTypes.bool,\n /** Array of numbers. These data numbers are converted to points and show on sparkline. */\n data: props => {\n if (!isArray(props.data)) {\n return new Error('Data provided to Sparkline must be an array.');\n }\n\n if (props.acceptNull && !props.data.every(value => isNull(value) || isFinite(value))) {\n return new Error('Data provided to Sparkline must be finite numbers or null.');\n }\n\n if (!props.acceptNull && !props.data.every(value => isFinite(value))) {\n return new Error('Data provided to Sparkline must be finite numbers.');\n }\n return null;\n },\n /** A React ref which is set to the DOM element when the component mounts and `null` when it unmounts. */\n elementRef: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n /** Sets the number of end dots to display. When showEndDot is set to `true`, endDotCount is at least 1. If set to a positive value, this overrides showEndDot. */\n endDotCount: PropTypes.number,\n /** Fills color to the end dot. */\n endDotFillColor: PropTypes.string,\n /**\n * Sets end dot radius. End dot radius must be less than or equal to the margin. By default, its value equals the margin.\n */\n endDotRadius: PropTypes.number,\n /** Sets end dot circle stroke color. */\n endDotStroke: PropTypes.string,\n /** Sets end dot circle stroke width in pixels. */\n endDotStrokeWidth: PropTypes.number,\n /** Fills color to area. */\n fillColor: PropTypes.string,\n /** Fills opacity to area. Value must be in 0 ~ 1. */\n fillOpacity: PropTypes.string,\n /** Sets cursor stroke color. */\n cursorStroke: PropTypes.string,\n /** Sets cursor stroke width in pixels. */\n cursorStrokeWidth: PropTypes.number,\n /** Sets cursor line cap style. */\n cursorStrokeLinecap: PropTypes.oneOf(['butt', 'round', 'square']),\n /** Sets cursor dash array style. */\n cursorStrokeDasharray: PropTypes.string,\n /**\n * Container height. If this value is specified, sparkline calculates the size using this height. If height isn't specified,\n * sparkline figures out the container height by itself.\n */\n height: PropTypes.number.isRequired,\n /** When set to `true`, sparkline shows as area. */\n isArea: PropTypes.bool,\n /** The sparkline line color. */\n lineColor: PropTypes.string,\n /** Allows user to draw only the last data points for the line. */\n lineLength: PropTypes.number,\n /** The sparkline line stroke width in pixels. */\n lineStrokeWidth: PropTypes.number,\n /** Enable to show end dot. */\n showEndDot: PropTypes.bool,\n /** Enable to show tooltip. */\n showTooltip: PropTypes.bool,\n /** Sets the data value range and maximum value shown on sparkline. */\n yMax: PropTypes.number,\n /** Sets the data value range and minimum value shown on sparkline. */\n yMin: PropTypes.number,\n /**\n * The width of the container.\n */\n width: PropTypes.number.isRequired,\n /** Sets the a11y title text on sparkline. */\n title: PropTypes.string,\n };\n\n static defaultProps = {\n acceptNull: false,\n data: [],\n showTooltip: true,\n endDotCount: 0,\n showEndDot: false,\n endDotRadius: 0,\n endDotFillColor: 'white',\n endDotStroke: 'black',\n endDotStrokeWidth: 0,\n fillColor: '#65a637',\n fillOpacity: '.1',\n cursorStroke: '#5184AF',\n cursorStrokeWidth: 3,\n cursorStrokeLinecap: 'square',\n cursorStrokeDasharray: '1, 5',\n isArea: false,\n lineColor: '#65a637',\n lineStrokeWidth: 1,\n };\n\n constructor(props, ...rest) {\n super(props, ...rest);\n this.state = {\n anchor: null,\n currentPointX: null,\n open: false,\n rectArea: null,\n tooltip: null,\n };\n this.titleId = createDOMID();\n }\n\n getMax() {\n const { data, acceptNull, yMax } = this.props;\n const dataMax = () => (acceptNull ? max(this.fillNull(data)) : max(data));\n return yMax !== undefined ? yMax : dataMax();\n }\n\n getMin() {\n const { data, acceptNull, yMin } = this.props;\n const dataMin = () => (acceptNull ? min(this.fillNull(data)) : min(data));\n return yMin !== undefined ? yMin : dataMin();\n }\n\n /**\n * Gets unit value of x axis.\n * @param {Number} xMargin - margin of x axis.\n * @return {Number} unit value of x axis.\n * @private\n */\n getXUnit(xMargin) {\n const { data, width } = this.props;\n // Calculate xUnit. Width substract the left margin and right margin, then divide by data length.\n const xUnit = (width - xMargin * 2) / (data.length > 1 ? data.length - 1 : 1);\n return Math.max(0, xUnit);\n }\n\n /**\n * Gets unit value of y axis.\n * @param {String} yMargin - margin of y axis.\n * @return {Number} unit value of y axis.\n * @private\n */\n getYUnit(yMargin) {\n const { height } = this.props;\n const maxValue = this.getMax();\n const minValue = this.getMin();\n\n // Calculate yUnit. Height substract the upper margin and bottom margin, then divide by value range of values in data.\n // if the maxValue equals minValue, means all values in data are the same, then, we need to set the YUnit at the mid value of Height.\n // So, draws sparkline right in the mid of the container.\n const yUnit = (height - yMargin * 2) / (maxValue - minValue || 2);\n return Math.max(0, yUnit);\n }\n\n /**\n * Get a list of arrays of points for drawing lines, based on acceptNull property\n * @method getSegmentSets\n * @param {Array} data\n * @param {Array} points\n * @returns {Array} List of datapoint sets used for drawing lines\n */\n getSegmentSets(data, points) {\n const { acceptNull } = this.props;\n const lines = [];\n let currentLine = [];\n\n data.forEach((p, idx) => {\n // Found null data\n if (!acceptNull && isNull(p)) {\n // need at least 2 points to draw a segment\n if (currentLine.length > 1) {\n lines.push(currentLine);\n }\n // reset for the next segment\n currentLine = [];\n } else {\n // data is good, add point data\n currentLine.push(points[idx]);\n }\n });\n\n // Add the last line\n if (currentLine.length > 1) {\n lines.push(currentLine);\n }\n\n return lines;\n }\n\n handleCursorMount = el => {\n this.setState({\n anchor: el,\n });\n };\n\n /**\n * Utility for fill null value with number 0.\n * @private\n */\n fillNull() {\n const { data } = this.props;\n return data.map(value => (value === null ? 0 : value));\n }\n\n /**\n * Converts data to points in svg\n * @param {Number} xMargin - margin of x axis.\n * @param {Number} yMargin - margin of x axis.\n * @return {Array} points coordination.\n * @private\n */\n dataToPoints(xMargin, yMargin) {\n const { data } = this.props;\n const xUnit = this.getXUnit(xMargin);\n const yUnit = this.getYUnit(yMargin);\n const maxValue = this.getMax();\n const minValue = this.getMin();\n return data\n .map((val, idx) => ({\n x: idx * xUnit + xMargin,\n y: maxValue === minValue ? yUnit + yMargin : (maxValue - val) * yUnit + yMargin,\n }))\n .map(p => [p.x, p.y]);\n }\n\n /**\n * Renders rect area for helping figure out which is the nearest point so that\n * render related cursor and tooltip.\n * @param {Array} points - array of points coordination.\n * @param {Number} xMargin - margin of x axis.\n * @return {Array} array of svg rect objects\n * @private\n */\n renderRect(points, xMargin) {\n const { data, height } = this.props;\n const xUnit = this.getXUnit(xMargin);\n\n return points.map((p, i) => (\n /* eslint-disable react/no-array-index-key */\n <rect // eslint-disable-line jsx-a11y/mouse-events-have-key-events\n key={`${i}_${p[0]}`}\n data-test={`rect-${i}`}\n x={p[0] - xUnit / 2 <= 0 ? 0 : p[0] - xUnit / 2}\n y={0}\n width={i === 0 && data.length !== 1 ? xUnit / 2 : xUnit}\n height={height}\n style={{ fillOpacity: 0 }}\n onMouseOver={e => {\n this.setState({\n open: data[i] !== null,\n rectArea: data[i] === null ? null : e.target,\n tooltip: data[i],\n currentPointX: p[0],\n });\n }}\n />\n /* eslint-enable react/no-array-index-key */\n ));\n }\n\n // Renders area chart\n renderArea(points) {\n const { data, fillColor, fillOpacity, height, isArea } = this.props;\n\n if (!isArea || points.length === 0) {\n return null;\n }\n\n let segments = this.getSegmentSets(data, points);\n segments = segments.map(s =>\n s.concat([\n [s[s.length - 1][0], height], // down to bottom of graph\n [s[0][0], height], // over to below first data point\n s[0], // up to first data point to close the box\n ])\n );\n\n return (\n <g data-test=\"area\">\n {segments.map(s => (\n <polyline\n key={`area${s.join('')}`}\n points={s.join(' ')}\n data-test=\"area-line\"\n style={{\n fill: fillColor,\n fillOpacity,\n strokeWidth: '0',\n }}\n />\n ))}\n </g>\n );\n }\n\n renderCursor() {\n const {\n cursorStroke,\n cursorStrokeWidth,\n cursorStrokeLinecap,\n cursorStrokeDasharray,\n height,\n } = this.props;\n\n return (\n this.state.rectArea !== null && (\n <line\n data-test=\"cursor\"\n ref={this.handleCursorMount}\n x1={this.state.currentPointX}\n y1={0}\n x2={this.state.currentPointX}\n y2={height}\n style={{\n stroke: cursorStroke,\n strokeWidth: cursorStrokeWidth,\n strokeLinecap: cursorStrokeLinecap,\n strokeDasharray: cursorStrokeDasharray,\n }}\n />\n )\n );\n }\n\n renderTooltip() {\n return (\n this.state.anchor !== null && (\n <Popover\n data-test=\"tooltip\"\n open={this.state.open}\n anchor={this.state.anchor}\n data-test-value={this.state.tooltip}\n appearance=\"inverted\"\n defaultPlacement=\"above\"\n animation={false}\n >\n <StyledTooltip>\n {this.state.anchor !== null ? this.state.tooltip : undefined}\n </StyledTooltip>\n </Popover>\n )\n );\n }\n\n /**\n * Renders one or more svg circles to highlight values on the sparkline\n * @method renderEndDots\n * @param {Array[Array[Number]]} points // x,y coordinates of values\n * @param {Number} dotsToShow // number of end dots to display\n * @param {Number} xMargin // used when calculating the dot radius\n * @returns {Object} React representation of SVG group\n * @private\n */\n renderEndDots(points, dotsToShow, xMargin) {\n const { endDotFillColor, endDotRadius, endDotStroke, endDotStrokeWidth } = this.props;\n\n return (\n <g>\n {points.slice(-dotsToShow).map(point => (\n <circle\n key={`end-dot${point[0]}${point[1]}`}\n data-test=\"end-dot\"\n cx={point[0]}\n cy={point[1]}\n r={endDotRadius === 0 ? xMargin : endDotRadius}\n style={{\n fill: endDotFillColor,\n stroke: endDotStroke,\n strokeWidth: endDotStrokeWidth,\n }}\n />\n ))}\n </g>\n );\n }\n\n /**\n * Renders the line(s) above the area graph\n * @method renderPolyline\n * @param {Array} points\n * @returns {Object} SVG Group of polylines\n */\n renderPolyline(points) {\n const { data, lineColor, lineLength, lineStrokeWidth } = this.props;\n\n const linePoints = isFinite(lineLength) && lineLength > 0 ? lineLength : points.length;\n const lines = this.getSegmentSets(data.slice(-linePoints), points.slice(-linePoints));\n\n return (\n <g data-test=\"sparkline\">\n {lines.map(lineData => (\n <polyline\n key={`line${lineData.join('')}`}\n data-test=\"polyline\"\n style={{\n fill: 'none',\n stroke: lineColor,\n strokeWidth: lineStrokeWidth,\n strokeLinejoin: 'round',\n strokeLinecap: 'round',\n }}\n points={lineData.join(' ')}\n />\n ))}\n </g>\n );\n }\n\n render() {\n const {\n data,\n elementRef,\n showTooltip,\n showEndDot,\n endDotRadius,\n endDotStrokeWidth,\n endDotCount,\n height,\n isArea,\n lineStrokeWidth,\n width,\n title,\n } = this.props;\n\n if (data.length === 0) {\n return null;\n }\n\n // Calculate horizontal and vertical margin so that fit line or end dot.\n const xMargin = endDotRadius + endDotStrokeWidth / 2;\n const yMargin = Math.max(lineStrokeWidth / 2, endDotRadius + endDotStrokeWidth / 2);\n\n const points = this.dataToPoints(xMargin, yMargin);\n\n const dotsToShow = Math.max(showEndDot && 1, isFinite(endDotCount) && endDotCount > 0 && endDotCount);\n\n return (\n <div // eslint-disable-line jsx-a11y/mouse-events-have-key-events\n data-test=\"line\"\n data-test-type={isArea ? 'area' : 'line'}\n onMouseOut={() => {\n this.setState({\n open: false,\n anchor: null,\n rectArea: null,\n currentPointX: null,\n });\n }}\n ref={elementRef}\n {...omit(this.props, keys(SparkLine.propTypes))}\n >\n <StyledSvg\n height={height}\n width={width}\n role=\"img\"\n aria-labelledby={this.titleId}\n data-test=\"sparkline-svg\"\n >\n <title id={this.titleId} data-test=\"sparkline-title\">\n {title || _('Source count over time sparkline trend')}\n </title>\n <g>\n {this.renderCursor()}\n {this.renderPolyline(points)}\n {this.renderArea(points)}\n {dotsToShow ? this.renderEndDots(points, dotsToShow, xMargin) : null}\n {showTooltip ? this.renderRect(points, xMargin) : null}\n {showTooltip ? this.renderTooltip() : null}\n </g>\n </StyledSvg>\n </div>\n );\n }\n}\n\nexport default SparkLine;\n", "\nimport * as defaultImport from \"prop-types\";\nexport * from \"prop-types\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"react\";\nexport * from \"react\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"lodash\";\nexport * from \"lodash\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"styled-components\";\nexport * from \"styled-components\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-ui/Popover\";\nexport * from \"@splunk/react-ui/Popover\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/ui-utils/i18n\";\nexport * from \"@splunk/ui-utils/i18n\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/ui-utils/id\";\nexport * from \"@splunk/ui-utils/id\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n"],
5
- "mappings": "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",
3
+ "sources": ["src/SparkLine/index.ts", "esm-externals:prop-types", "esm-externals:react", "esm-externals:lodash", "esm-externals:styled-components", "esm-externals:@splunk/react-ui/Popover", "esm-externals:@splunk/ui-utils/i18n", "esm-externals:@splunk/ui-utils/id", "src/SparkLine/SparkLine.jsx"],
4
+ "sourcesContent": ["export { default } from './SparkLine.jsx';\n", "\nimport * as defaultImport from \"prop-types\";\nexport * from \"prop-types\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"react\";\nexport * from \"react\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"lodash\";\nexport * from \"lodash\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"styled-components\";\nexport * from \"styled-components\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-ui/Popover\";\nexport * from \"@splunk/react-ui/Popover\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/ui-utils/i18n\";\nexport * from \"@splunk/ui-utils/i18n\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/ui-utils/id\";\nexport * from \"@splunk/ui-utils/id\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { isArray, isFinite, isNull, keys, max, min, omit } from 'lodash';\nimport styled from 'styled-components';\nimport Popover from '@splunk/react-ui/Popover';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport { createDOMID } from '@splunk/ui-utils/id';\n\nconst StyledSvg = styled.svg`\n /* For fixing IE11 shows overflow part line issue */\n overflow: hidden;\n`;\n\nconst StyledTooltip = styled.div`\n padding: 3px 8px;\n font-size: 12px;\n`;\n\nclass SparkLine extends Component {\n static propTypes = {\n /**\n * If true, data can contain `null` as a value and is treated as `0`. If false, this throws error when data contains `null`.\n */\n acceptNull: PropTypes.bool,\n /** Array of numbers. These data numbers are converted to points and show on sparkline. */\n data: props => {\n if (!isArray(props.data)) {\n return new Error('Data provided to Sparkline must be an array.');\n }\n\n if (props.acceptNull && !props.data.every(value => isNull(value) || isFinite(value))) {\n return new Error('Data provided to Sparkline must be finite numbers or null.');\n }\n\n if (!props.acceptNull && !props.data.every(value => isFinite(value))) {\n return new Error('Data provided to Sparkline must be finite numbers.');\n }\n return null;\n },\n /** A React ref which is set to the DOM element when the component mounts and `null` when it unmounts. */\n elementRef: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n /** Sets the number of end dots to display. When showEndDot is set to `true`, endDotCount is at least 1. If set to a positive value, this overrides showEndDot. */\n endDotCount: PropTypes.number,\n /** Fills color to the end dot. */\n endDotFillColor: PropTypes.string,\n /**\n * Sets end dot radius. End dot radius must be less than or equal to the margin. By default, its value equals the margin.\n */\n endDotRadius: PropTypes.number,\n /** Sets end dot circle stroke color. */\n endDotStroke: PropTypes.string,\n /** Sets end dot circle stroke width in pixels. */\n endDotStrokeWidth: PropTypes.number,\n /** Fills color to area. */\n fillColor: PropTypes.string,\n /** Fills opacity to area. Value must be in 0 ~ 1. */\n fillOpacity: PropTypes.string,\n /** Sets cursor stroke color. */\n cursorStroke: PropTypes.string,\n /** Sets cursor stroke width in pixels. */\n cursorStrokeWidth: PropTypes.number,\n /** Sets cursor line cap style. */\n cursorStrokeLinecap: PropTypes.oneOf(['butt', 'round', 'square']),\n /** Sets cursor dash array style. */\n cursorStrokeDasharray: PropTypes.string,\n /**\n * Container height. If this value is specified, sparkline calculates the size using this height. If height isn't specified,\n * sparkline figures out the container height by itself.\n */\n height: PropTypes.number.isRequired,\n /** When set to `true`, sparkline shows as area. */\n isArea: PropTypes.bool,\n /** The sparkline line color. */\n lineColor: PropTypes.string,\n /** Allows user to draw only the last data points for the line. */\n lineLength: PropTypes.number,\n /** The sparkline line stroke width in pixels. */\n lineStrokeWidth: PropTypes.number,\n /** Enable to show end dot. */\n showEndDot: PropTypes.bool,\n /** Enable to show tooltip. */\n showTooltip: PropTypes.bool,\n /** Sets the data value range and maximum value shown on sparkline. */\n yMax: PropTypes.number,\n /** Sets the data value range and minimum value shown on sparkline. */\n yMin: PropTypes.number,\n /**\n * The width of the container.\n */\n width: PropTypes.number.isRequired,\n /** Sets the a11y title text on sparkline. */\n title: PropTypes.string,\n };\n\n static defaultProps = {\n acceptNull: false,\n data: [],\n showTooltip: true,\n endDotCount: 0,\n showEndDot: false,\n endDotRadius: 0,\n endDotFillColor: 'white',\n endDotStroke: 'black',\n endDotStrokeWidth: 0,\n fillColor: '#65a637',\n fillOpacity: '.1',\n cursorStroke: '#5184AF',\n cursorStrokeWidth: 3,\n cursorStrokeLinecap: 'square',\n cursorStrokeDasharray: '1, 5',\n isArea: false,\n lineColor: '#65a637',\n lineStrokeWidth: 1,\n };\n\n constructor(props, ...rest) {\n super(props, ...rest);\n this.state = {\n anchor: null,\n currentPointX: null,\n open: false,\n rectArea: null,\n tooltip: null,\n };\n this.titleId = createDOMID();\n }\n\n getMax() {\n const { data, acceptNull, yMax } = this.props;\n const dataMax = () => (acceptNull ? max(this.fillNull(data)) : max(data));\n return yMax !== undefined ? yMax : dataMax();\n }\n\n getMin() {\n const { data, acceptNull, yMin } = this.props;\n const dataMin = () => (acceptNull ? min(this.fillNull(data)) : min(data));\n return yMin !== undefined ? yMin : dataMin();\n }\n\n /**\n * Gets unit value of x axis.\n * @param {Number} xMargin - margin of x axis.\n * @return {Number} unit value of x axis.\n * @private\n */\n getXUnit(xMargin) {\n const { data, width } = this.props;\n // Calculate xUnit. Width substract the left margin and right margin, then divide by data length.\n const xUnit = (width - xMargin * 2) / (data.length > 1 ? data.length - 1 : 1);\n return Math.max(0, xUnit);\n }\n\n /**\n * Gets unit value of y axis.\n * @param {String} yMargin - margin of y axis.\n * @return {Number} unit value of y axis.\n * @private\n */\n getYUnit(yMargin) {\n const { height } = this.props;\n const maxValue = this.getMax();\n const minValue = this.getMin();\n\n // Calculate yUnit. Height substract the upper margin and bottom margin, then divide by value range of values in data.\n // if the maxValue equals minValue, means all values in data are the same, then, we need to set the YUnit at the mid value of Height.\n // So, draws sparkline right in the mid of the container.\n const yUnit = (height - yMargin * 2) / (maxValue - minValue || 2);\n return Math.max(0, yUnit);\n }\n\n /**\n * Get a list of arrays of points for drawing lines, based on acceptNull property\n * @method getSegmentSets\n * @param {Array} data\n * @param {Array} points\n * @returns {Array} List of datapoint sets used for drawing lines\n */\n getSegmentSets(data, points) {\n const { acceptNull } = this.props;\n const lines = [];\n let currentLine = [];\n\n data.forEach((p, idx) => {\n // Found null data\n if (!acceptNull && isNull(p)) {\n // need at least 2 points to draw a segment\n if (currentLine.length > 1) {\n lines.push(currentLine);\n }\n // reset for the next segment\n currentLine = [];\n } else {\n // data is good, add point data\n currentLine.push(points[idx]);\n }\n });\n\n // Add the last line\n if (currentLine.length > 1) {\n lines.push(currentLine);\n }\n\n return lines;\n }\n\n handleCursorMount = el => {\n this.setState({\n anchor: el,\n });\n };\n\n /**\n * Utility for fill null value with number 0.\n * @private\n */\n fillNull() {\n const { data } = this.props;\n return data.map(value => (value === null ? 0 : value));\n }\n\n /**\n * Converts data to points in svg\n * @param {Number} xMargin - margin of x axis.\n * @param {Number} yMargin - margin of x axis.\n * @return {Array} points coordination.\n * @private\n */\n dataToPoints(xMargin, yMargin) {\n const { data } = this.props;\n const xUnit = this.getXUnit(xMargin);\n const yUnit = this.getYUnit(yMargin);\n const maxValue = this.getMax();\n const minValue = this.getMin();\n return data\n .map((val, idx) => ({\n x: idx * xUnit + xMargin,\n y: maxValue === minValue ? yUnit + yMargin : (maxValue - val) * yUnit + yMargin,\n }))\n .map(p => [p.x, p.y]);\n }\n\n /**\n * Renders rect area for helping figure out which is the nearest point so that\n * render related cursor and tooltip.\n * @param {Array} points - array of points coordination.\n * @param {Number} xMargin - margin of x axis.\n * @return {Array} array of svg rect objects\n * @private\n */\n renderRect(points, xMargin) {\n const { data, height } = this.props;\n const xUnit = this.getXUnit(xMargin);\n\n return points.map((p, i) => (\n /* eslint-disable react/no-array-index-key */\n <rect // eslint-disable-line jsx-a11y/mouse-events-have-key-events\n key={`${i}_${p[0]}`}\n data-test={`rect-${i}`}\n x={p[0] - xUnit / 2 <= 0 ? 0 : p[0] - xUnit / 2}\n y={0}\n width={i === 0 && data.length !== 1 ? xUnit / 2 : xUnit}\n height={height}\n style={{ fillOpacity: 0 }}\n onMouseOver={e => {\n this.setState({\n open: data[i] !== null,\n rectArea: data[i] === null ? null : e.target,\n tooltip: data[i],\n currentPointX: p[0],\n });\n }}\n />\n /* eslint-enable react/no-array-index-key */\n ));\n }\n\n // Renders area chart\n renderArea(points) {\n const { data, fillColor, fillOpacity, height, isArea } = this.props;\n\n if (!isArea || points.length === 0) {\n return null;\n }\n\n let segments = this.getSegmentSets(data, points);\n segments = segments.map(s =>\n s.concat([\n [s[s.length - 1][0], height], // down to bottom of graph\n [s[0][0], height], // over to below first data point\n s[0], // up to first data point to close the box\n ])\n );\n\n return (\n <g data-test=\"area\">\n {segments.map(s => (\n <polyline\n key={`area${s.join('')}`}\n points={s.join(' ')}\n data-test=\"area-line\"\n style={{\n fill: fillColor,\n fillOpacity,\n strokeWidth: '0',\n }}\n />\n ))}\n </g>\n );\n }\n\n renderCursor() {\n const {\n cursorStroke,\n cursorStrokeWidth,\n cursorStrokeLinecap,\n cursorStrokeDasharray,\n height,\n } = this.props;\n\n return (\n this.state.rectArea !== null && (\n <line\n data-test=\"cursor\"\n ref={this.handleCursorMount}\n x1={this.state.currentPointX}\n y1={0}\n x2={this.state.currentPointX}\n y2={height}\n style={{\n stroke: cursorStroke,\n strokeWidth: cursorStrokeWidth,\n strokeLinecap: cursorStrokeLinecap,\n strokeDasharray: cursorStrokeDasharray,\n }}\n />\n )\n );\n }\n\n renderTooltip() {\n return (\n this.state.anchor !== null && (\n <Popover\n data-test=\"tooltip\"\n open={this.state.open}\n anchor={this.state.anchor}\n data-test-value={this.state.tooltip}\n appearance=\"inverted\"\n defaultPlacement=\"above\"\n animation={false}\n >\n <StyledTooltip>\n {this.state.anchor !== null ? this.state.tooltip : undefined}\n </StyledTooltip>\n </Popover>\n )\n );\n }\n\n /**\n * Renders one or more svg circles to highlight values on the sparkline\n * @method renderEndDots\n * @param {Array[Array[Number]]} points // x,y coordinates of values\n * @param {Number} dotsToShow // number of end dots to display\n * @param {Number} xMargin // used when calculating the dot radius\n * @returns {Object} React representation of SVG group\n * @private\n */\n renderEndDots(points, dotsToShow, xMargin) {\n const { endDotFillColor, endDotRadius, endDotStroke, endDotStrokeWidth } = this.props;\n\n return (\n <g>\n {points.slice(-dotsToShow).map(point => (\n <circle\n key={`end-dot${point[0]}${point[1]}`}\n data-test=\"end-dot\"\n cx={point[0]}\n cy={point[1]}\n r={endDotRadius === 0 ? xMargin : endDotRadius}\n style={{\n fill: endDotFillColor,\n stroke: endDotStroke,\n strokeWidth: endDotStrokeWidth,\n }}\n />\n ))}\n </g>\n );\n }\n\n /**\n * Renders the line(s) above the area graph\n * @method renderPolyline\n * @param {Array} points\n * @returns {Object} SVG Group of polylines\n */\n renderPolyline(points) {\n const { data, lineColor, lineLength, lineStrokeWidth } = this.props;\n\n const linePoints = isFinite(lineLength) && lineLength > 0 ? lineLength : points.length;\n const lines = this.getSegmentSets(data.slice(-linePoints), points.slice(-linePoints));\n\n return (\n <g data-test=\"sparkline\">\n {lines.map(lineData => (\n <polyline\n key={`line${lineData.join('')}`}\n data-test=\"polyline\"\n style={{\n fill: 'none',\n stroke: lineColor,\n strokeWidth: lineStrokeWidth,\n strokeLinejoin: 'round',\n strokeLinecap: 'round',\n }}\n points={lineData.join(' ')}\n />\n ))}\n </g>\n );\n }\n\n render() {\n const {\n data,\n elementRef,\n showTooltip,\n showEndDot,\n endDotRadius,\n endDotStrokeWidth,\n endDotCount,\n height,\n isArea,\n lineStrokeWidth,\n width,\n title,\n } = this.props;\n\n if (data.length === 0) {\n return null;\n }\n\n // Calculate horizontal and vertical margin so that fit line or end dot.\n const xMargin = endDotRadius + endDotStrokeWidth / 2;\n const yMargin = Math.max(lineStrokeWidth / 2, endDotRadius + endDotStrokeWidth / 2);\n\n const points = this.dataToPoints(xMargin, yMargin);\n\n const dotsToShow = Math.max(showEndDot && 1, isFinite(endDotCount) && endDotCount > 0 && endDotCount);\n\n return (\n <div // eslint-disable-line jsx-a11y/mouse-events-have-key-events\n data-test=\"line\"\n data-test-type={isArea ? 'area' : 'line'}\n onMouseOut={() => {\n this.setState({\n open: false,\n anchor: null,\n rectArea: null,\n currentPointX: null,\n });\n }}\n ref={elementRef}\n {...omit(this.props, keys(SparkLine.propTypes))}\n >\n <StyledSvg\n height={height}\n width={width}\n role=\"img\"\n aria-labelledby={this.titleId}\n data-test=\"sparkline-svg\"\n >\n <title id={this.titleId} data-test=\"sparkline-title\">\n {title || _('Source count over time sparkline trend')}\n </title>\n <g>\n {this.renderCursor()}\n {this.renderPolyline(points)}\n {this.renderArea(points)}\n {dotsToShow ? this.renderEndDots(points, dotsToShow, xMargin) : null}\n {showTooltip ? this.renderRect(points, xMargin) : null}\n {showTooltip ? this.renderTooltip() : null}\n </g>\n </StyledSvg>\n </div>\n );\n }\n}\n\nexport default SparkLine;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AACA,oBAA+B;AAC/B,+BAAc;AACd,IAAO,qBAAS,aAAa,gBAA8B,wBAAU;;;ACHrE;AAAA;AAAA;AAAA;AACA,IAAAA,iBAA+B;AAC/B,0BAAc;AACd,IAAO,gBAAS,aAAaA,iBAA8B,yBAAUA;;;ACHrE;AAAA;AAAA;AAAA;AACA,IAAAC,iBAA+B;AAC/B,2BAAc;AACd,IAAO,iBAAS,aAAaA,iBAA8B,yBAAUA;;;ACHrE;AAAA;AAAA;AAAA;AACA,IAAAC,iBAA+B;AAC/B,sCAAc;AACd,IAAO,4BAAS,aAAaA,iBAA8B,yBAAUA;;;ACHrE;AAAA;AAAA;AAAA;AACA,IAAAC,iBAA+B;AAC/B,4BAAc;AACd,IAAO,kBAAS,aAAaA,iBAA8B,yBAAUA;;;ACHrE;AAAA;AAAA;AAAA;AACA,IAAAC,iBAA+B;AAC/B,yBAAc;AACd,IAAO,eAAS,aAAaA,iBAA8B,yBAAUA;;;ACHrE;AAAA;AAAA;AAAA;AACA,IAAAC,iBAA+B;AAC/B,uBAAc;AACd,IAAO,aAAS,aAAaA,iBAA8B,yBAAUA;;;ACKrE,IAAM,YAAY,0BAAO;AAAA;AAAA;AAAA;AAKzB,IAAM,gBAAgB,0BAAO;AAAA;AAAA;AAAA;AAK7B,IAAM,aAAN,MAAM,mBAAkB,wBAAU;AAAA,EAiG9B,YAAY,UAAU,MAAM;AACxB,UAAM,OAAO,GAAG,IAAI;AAyFxB,6CAAoB,QAAM;AACtB,WAAK,SAAS;AAAA,QACV,QAAQ;AAAA,MACZ,CAAC;AAAA,IACL;AA5FI,SAAK,QAAQ;AAAA,MACT,QAAQ;AAAA,MACR,eAAe;AAAA,MACf,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,IACb;AACA,SAAK,cAAU,wBAAY;AAAA,EAC/B;AAAA,EAEA,SAAS;AACL,UAAM,EAAE,MAAM,YAAY,KAAK,IAAI,KAAK;AACxC,UAAM,UAAU,MAAO,iBAAa,oBAAI,KAAK,SAAS,IAAI,CAAC,QAAI,oBAAI,IAAI;AACvE,WAAO,SAAS,SAAY,OAAO,QAAQ;AAAA,EAC/C;AAAA,EAEA,SAAS;AACL,UAAM,EAAE,MAAM,YAAY,KAAK,IAAI,KAAK;AACxC,UAAM,UAAU,MAAO,iBAAa,oBAAI,KAAK,SAAS,IAAI,CAAC,QAAI,oBAAI,IAAI;AACvE,WAAO,SAAS,SAAY,OAAO,QAAQ;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAS,SAAS;AACd,UAAM,EAAE,MAAM,MAAM,IAAI,KAAK;AAE7B,UAAM,SAAS,QAAQ,UAAU,MAAM,KAAK,SAAS,IAAI,KAAK,SAAS,IAAI;AAC3E,WAAO,KAAK,IAAI,GAAG,KAAK;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAS,SAAS;AACd,UAAM,EAAE,OAAO,IAAI,KAAK;AACxB,UAAM,WAAW,KAAK,OAAO;AAC7B,UAAM,WAAW,KAAK,OAAO;AAK7B,UAAM,SAAS,SAAS,UAAU,MAAM,WAAW,YAAY;AAC/D,WAAO,KAAK,IAAI,GAAG,KAAK;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,eAAe,MAAM,QAAQ;AACzB,UAAM,EAAE,WAAW,IAAI,KAAK;AAC5B,UAAM,QAAQ,CAAC;AACf,QAAI,cAAc,CAAC;AAEnB,SAAK,QAAQ,CAAC,GAAG,QAAQ;AAErB,UAAI,CAAC,kBAAc,uBAAO,CAAC,GAAG;AAE1B,YAAI,YAAY,SAAS,GAAG;AACxB,gBAAM,KAAK,WAAW;AAAA,QAC1B;AAEA,sBAAc,CAAC;AAAA,MACnB,OAAO;AAEH,oBAAY,KAAK,OAAO,GAAG,CAAC;AAAA,MAChC;AAAA,IACJ,CAAC;AAGD,QAAI,YAAY,SAAS,GAAG;AACxB,YAAM,KAAK,WAAW;AAAA,IAC1B;AAEA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,WAAW;AACP,UAAM,EAAE,KAAK,IAAI,KAAK;AACtB,WAAO,KAAK,IAAI,WAAU,UAAU,OAAO,IAAI,KAAM;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,aAAa,SAAS,SAAS;AAC3B,UAAM,EAAE,KAAK,IAAI,KAAK;AACtB,UAAM,QAAQ,KAAK,SAAS,OAAO;AACnC,UAAM,QAAQ,KAAK,SAAS,OAAO;AACnC,UAAM,WAAW,KAAK,OAAO;AAC7B,UAAM,WAAW,KAAK,OAAO;AAC7B,WAAO,KACF,IAAI,CAAC,KAAK,SAAS;AAAA,MAChB,GAAG,MAAM,QAAQ;AAAA,MACjB,GAAG,aAAa,WAAW,QAAQ,WAAW,WAAW,OAAO,QAAQ;AAAA,IAC5E,EAAE,EACD,IAAI,OAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,WAAW,QAAQ,SAAS;AACxB,UAAM,EAAE,MAAM,OAAO,IAAI,KAAK;AAC9B,UAAM,QAAQ,KAAK,SAAS,OAAO;AAEnC,WAAO,OAAO,IAAI,CAAC,GAAG;AAAA;AAAA,MAElB;AAAA,QAAC;AAAA;AAAA,UACG,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAAA,UACjB,aAAW,QAAQ,CAAC;AAAA,UACpB,GAAG,EAAE,CAAC,IAAI,QAAQ,KAAK,IAAI,IAAI,EAAE,CAAC,IAAI,QAAQ;AAAA,UAC9C,GAAG;AAAA,UACH,OAAO,MAAM,KAAK,KAAK,WAAW,IAAI,QAAQ,IAAI;AAAA,UAClD;AAAA,UACA,OAAO,EAAE,aAAa,EAAE;AAAA,UACxB,aAAa,OAAK;AACd,iBAAK,SAAS;AAAA,cACV,MAAM,KAAK,CAAC,MAAM;AAAA,cAClB,UAAU,KAAK,CAAC,MAAM,OAAO,OAAO,EAAE;AAAA,cACtC,SAAS,KAAK,CAAC;AAAA,cACf,eAAe,EAAE,CAAC;AAAA,YACtB,CAAC;AAAA,UACL;AAAA;AAAA,MACJ;AAAA,KAEH;AAAA,EACL;AAAA;AAAA,EAGA,WAAW,QAAQ;AACf,UAAM,EAAE,MAAM,WAAW,aAAa,QAAQ,OAAO,IAAI,KAAK;AAE9D,QAAI,CAAC,UAAU,OAAO,WAAW,GAAG;AAChC,aAAO;AAAA,IACX;AAEA,QAAI,WAAW,KAAK,eAAe,MAAM,MAAM;AAC/C,eAAW,SAAS;AAAA,MAAI,OACpB,EAAE,OAAO;AAAA,QACL,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,MAAM;AAAA;AAAA,QAC3B,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM;AAAA;AAAA,QAChB,EAAE,CAAC;AAAA;AAAA,MACP,CAAC;AAAA,IACL;AAEA,WACI,4CAAC,OAAE,aAAU,UACR,SAAS,IAAI,OACV;AAAA,MAAC;AAAA;AAAA,QACG,KAAK,OAAO,EAAE,KAAK,EAAE,CAAC;AAAA,QACtB,QAAQ,EAAE,KAAK,GAAG;AAAA,QAClB,aAAU;AAAA,QACV,OAAO;AAAA,UACH,MAAM;AAAA,UACN;AAAA,UACA,aAAa;AAAA,QACjB;AAAA;AAAA,IACJ,CACH,CACL;AAAA,EAER;AAAA,EAEA,eAAe;AACX,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,IAAI,KAAK;AAET,WACI,KAAK,MAAM,aAAa,QACpB;AAAA,MAAC;AAAA;AAAA,QACG,aAAU;AAAA,QACV,KAAK,KAAK;AAAA,QACV,IAAI,KAAK,MAAM;AAAA,QACf,IAAI;AAAA,QACJ,IAAI,KAAK,MAAM;AAAA,QACf,IAAI;AAAA,QACJ,OAAO;AAAA,UACH,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,eAAe;AAAA,UACf,iBAAiB;AAAA,QACrB;AAAA;AAAA,IACJ;AAAA,EAGZ;AAAA,EAEA,gBAAgB;AACZ,WACI,KAAK,MAAM,WAAW,QAClB;AAAA,MAAC;AAAA;AAAA,QACG,aAAU;AAAA,QACV,MAAM,KAAK,MAAM;AAAA,QACjB,QAAQ,KAAK,MAAM;AAAA,QACnB,mBAAiB,KAAK,MAAM;AAAA,QAC5B,YAAW;AAAA,QACX,kBAAiB;AAAA,QACjB,WAAW;AAAA;AAAA,MAEX,4CAAC,qBACI,KAAK,MAAM,WAAW,OAAO,KAAK,MAAM,UAAU,MACvD;AAAA,IACJ;AAAA,EAGZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,cAAc,QAAQ,YAAY,SAAS;AACvC,UAAM,EAAE,iBAAiB,cAAc,cAAc,kBAAkB,IAAI,KAAK;AAEhF,WACI,4CAAC,WACI,OAAO,MAAM,CAAC,UAAU,EAAE,IAAI,WAC3B;AAAA,MAAC;AAAA;AAAA,QACG,KAAK,UAAU,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,QAClC,aAAU;AAAA,QACV,IAAI,MAAM,CAAC;AAAA,QACX,IAAI,MAAM,CAAC;AAAA,QACX,GAAG,iBAAiB,IAAI,UAAU;AAAA,QAClC,OAAO;AAAA,UACH,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,aAAa;AAAA,QACjB;AAAA;AAAA,IACJ,CACH,CACL;AAAA,EAER;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,eAAe,QAAQ;AACnB,UAAM,EAAE,MAAM,WAAW,YAAY,gBAAgB,IAAI,KAAK;AAE9D,UAAM,iBAAa,yBAAS,UAAU,KAAK,aAAa,IAAI,aAAa,OAAO;AAChF,UAAM,QAAQ,KAAK,eAAe,KAAK,MAAM,CAAC,UAAU,GAAG,OAAO,MAAM,CAAC,UAAU,CAAC;AAEpF,WACI,4CAAC,OAAE,aAAU,eACR,MAAM,IAAI,cACP;AAAA,MAAC;AAAA;AAAA,QACG,KAAK,OAAO,SAAS,KAAK,EAAE,CAAC;AAAA,QAC7B,aAAU;AAAA,QACV,OAAO;AAAA,UACH,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,eAAe;AAAA,QACnB;AAAA,QACA,QAAQ,SAAS,KAAK,GAAG;AAAA;AAAA,IAC7B,CACH,CACL;AAAA,EAER;AAAA,EAEA,SAAS;AACL,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,IAAI,KAAK;AAET,QAAI,KAAK,WAAW,GAAG;AACnB,aAAO;AAAA,IACX;AAGA,UAAM,UAAU,eAAe,oBAAoB;AACnD,UAAM,UAAU,KAAK,IAAI,kBAAkB,GAAG,eAAe,oBAAoB,CAAC;AAElF,UAAM,SAAS,KAAK,aAAa,SAAS,OAAO;AAEjD,UAAM,aAAa,KAAK,IAAI,cAAc,OAAG,yBAAS,WAAW,KAAK,cAAc,KAAK,WAAW;AAEpG,WACI;AAAA,MAAC;AAAA;AAAA,QACG,aAAU;AAAA,QACV,kBAAgB,SAAS,SAAS;AAAA,QAClC,YAAY,MAAM;AACd,eAAK,SAAS;AAAA,YACV,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,UAAU;AAAA,YACV,eAAe;AAAA,UACnB,CAAC;AAAA,QACL;AAAA,QACA,KAAK;AAAA,aACD,qBAAK,KAAK,WAAO,qBAAK,WAAU,SAAS,CAAC;AAAA,MAE9C;AAAA,QAAC;AAAA;AAAA,UACG;AAAA,UACA;AAAA,UACA,MAAK;AAAA,UACL,mBAAiB,KAAK;AAAA,UACtB,aAAU;AAAA;AAAA,QAEV,4CAAC,WAAM,IAAI,KAAK,SAAS,aAAU,qBAC9B,aAAS,gBAAE,wCAAwC,CACxD;AAAA,QACA,4CAAC,WACI,KAAK,aAAa,GAClB,KAAK,eAAe,MAAM,GAC1B,KAAK,WAAW,MAAM,GACtB,aAAa,KAAK,cAAc,QAAQ,YAAY,OAAO,IAAI,MAC/D,cAAc,KAAK,WAAW,QAAQ,OAAO,IAAI,MACjD,cAAc,KAAK,cAAc,IAAI,IAC1C;AAAA,MACJ;AAAA,IACJ;AAAA,EAER;AACJ;AAtdI,cADE,YACK,aAAY;AAAA;AAAA;AAAA;AAAA,EAIf,YAAY,mBAAU;AAAA;AAAA,EAEtB,MAAM,WAAS;AACX,QAAI,KAAC,wBAAQ,MAAM,IAAI,GAAG;AACtB,aAAO,IAAI,MAAM,8CAA8C;AAAA,IACnE;AAEA,QAAI,MAAM,cAAc,CAAC,MAAM,KAAK,MAAM,eAAS,uBAAO,KAAK,SAAK,yBAAS,KAAK,CAAC,GAAG;AAClF,aAAO,IAAI,MAAM,4DAA4D;AAAA,IACjF;AAEA,QAAI,CAAC,MAAM,cAAc,CAAC,MAAM,KAAK,MAAM,eAAS,yBAAS,KAAK,CAAC,GAAG;AAClE,aAAO,IAAI,MAAM,oDAAoD;AAAA,IACzE;AACA,WAAO;AAAA,EACX;AAAA;AAAA,EAEA,YAAY,mBAAU,UAAU,CAAC,mBAAU,MAAM,mBAAU,MAAM,CAAC;AAAA;AAAA,EAElE,aAAa,mBAAU;AAAA;AAAA,EAEvB,iBAAiB,mBAAU;AAAA;AAAA;AAAA;AAAA,EAI3B,cAAc,mBAAU;AAAA;AAAA,EAExB,cAAc,mBAAU;AAAA;AAAA,EAExB,mBAAmB,mBAAU;AAAA;AAAA,EAE7B,WAAW,mBAAU;AAAA;AAAA,EAErB,aAAa,mBAAU;AAAA;AAAA,EAEvB,cAAc,mBAAU;AAAA;AAAA,EAExB,mBAAmB,mBAAU;AAAA;AAAA,EAE7B,qBAAqB,mBAAU,MAAM,CAAC,QAAQ,SAAS,QAAQ,CAAC;AAAA;AAAA,EAEhE,uBAAuB,mBAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKjC,QAAQ,mBAAU,OAAO;AAAA;AAAA,EAEzB,QAAQ,mBAAU;AAAA;AAAA,EAElB,WAAW,mBAAU;AAAA;AAAA,EAErB,YAAY,mBAAU;AAAA;AAAA,EAEtB,iBAAiB,mBAAU;AAAA;AAAA,EAE3B,YAAY,mBAAU;AAAA;AAAA,EAEtB,aAAa,mBAAU;AAAA;AAAA,EAEvB,MAAM,mBAAU;AAAA;AAAA,EAEhB,MAAM,mBAAU;AAAA;AAAA;AAAA;AAAA,EAIhB,OAAO,mBAAU,OAAO;AAAA;AAAA,EAExB,OAAO,mBAAU;AACrB;AAEA,cA5EE,YA4EK,gBAAe;AAAA,EAClB,YAAY;AAAA,EACZ,MAAM,CAAC;AAAA,EACP,aAAa;AAAA,EACb,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,WAAW;AAAA,EACX,aAAa;AAAA,EACb,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,uBAAuB;AAAA,EACvB,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,iBAAiB;AACrB;AA/FJ,IAAM,YAAN;AAydA,IAAO,oBAAQ;",
6
6
  "names": ["defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport"]
7
7
  }
package/Table.js CHANGED
@@ -1062,7 +1062,7 @@ var withFixedSizeContainer = (Viz) => {
1062
1062
  FixSizeItem,
1063
1063
  {
1064
1064
  "data-test": "fix-size-item",
1065
- "data-splunk-visualization-version": "27.1.0 - fe8b048df",
1065
+ "data-splunk-visualization-version": "27.2.1 - 41b7410be",
1066
1066
  width,
1067
1067
  height,
1068
1068
  backgroundColor
@@ -1128,7 +1128,7 @@ var Cover = styled_components_default.div`
1128
1128
  bottom: 0;
1129
1129
  `;
1130
1130
  var Blocker = styled_components_default.div.attrs({
1131
- "data-splunk-visualization-version": "27.1.0 - fe8b048df"
1131
+ "data-splunk-visualization-version": "27.2.1 - 41b7410be"
1132
1132
  })`
1133
1133
  position: relative;
1134
1134
  width: 100%;
@@ -2856,7 +2856,7 @@ var SparkLine_default = SparkLine;
2856
2856
  // src/Table/cells/SparklineCell.tsx
2857
2857
  var paddingLeftRight = 5;
2858
2858
  var paddingTopBottom = 3;
2859
- var parseSparklineData = (data) => (Array.isArray(data) ? data : [data]).map((d) => parseInt(d.toString(), 10)).map((d) => isNaN(d) ? null : d);
2859
+ var parseSparklineData = (data) => (Array.isArray(data) ? data : [data]).map((d) => Number(d.toString())).map((d) => isNaN(d) ? null : d);
2860
2860
  var noop5 = () => void 0;
2861
2861
  var svgStyle = { height: 0 };
2862
2862
  var dummySVG = /* @__PURE__ */ react_exports.createElement("svg", { style: svgStyle });
@@ -2937,7 +2937,7 @@ var FixedTableHead = styled_components_default(Table_default.Head)`
2937
2937
  top: 0;
2938
2938
  `;
2939
2939
  var TableHeadCell = styled_components_default(Table_default.HeadCell)`
2940
- div > span {
2940
+ button > span {
2941
2941
  word-break: inherit;
2942
2942
  word-wrap: inherit;
2943
2943
  white-space: ${({ textOverflowType }) => textOverflowType === "ellipsis" ? "nowrap" : "inherit"};
@@ -2996,7 +2996,7 @@ var SUITableContainer = styled_components_default.div`
2996
2996
  `}
2997
2997
 
2998
2998
  ${({ headerStyle }) => headerStyle && headerStyle.color && styled_components_exports.css`
2999
- & [data-test='head-cell'] > div > span {
2999
+ & [data-test='head-cell'] > button > span {
3000
3000
  color: ${headerStyle.color};
3001
3001
  }
3002
3002
  `}
@@ -3187,11 +3187,14 @@ var PureTable = (props) => {
3187
3187
  }, 300),
3188
3188
  [onColumnFormatChange]
3189
3189
  );
3190
- const handleEventClick = (e) => {
3190
+ const handleEventHeadCellMouseDown = react_exports.useCallback((e) => {
3191
3191
  if (e.target.tagName.toLowerCase() === "hr") {
3192
3192
  e.stopPropagation();
3193
3193
  }
3194
- };
3194
+ }, []);
3195
+ const handleEventHeadCellMouseUp = react_exports.useCallback(() => {
3196
+ setResizing(false);
3197
+ }, [setResizing]);
3195
3198
  const handleKeyDown = (e) => {
3196
3199
  if (e.keyCode !== 13) {
3197
3200
  return;
@@ -3217,6 +3220,7 @@ var PureTable = (props) => {
3217
3220
  if (mode === "edit") {
3218
3221
  debouncedOnColumnFormatChange(updatedCF);
3219
3222
  }
3223
+ setResizing(false);
3220
3224
  };
3221
3225
  const fontMapped = fontMap[font] || fontMap.proportional;
3222
3226
  const fontSizeMapped = fontSizeMap[fontSize] || fontSizeMap.default;
@@ -3293,7 +3297,8 @@ var PureTable = (props) => {
3293
3297
  columnId: value,
3294
3298
  sortDir: sortKey === currentSortKey ? currentSortDir : "none",
3295
3299
  width: (_b2 = (_a2 = columns[value]) == null ? void 0 : _a2.width) != null ? _b2 : INITIAL_UNSET_COLUMN_WIDTH,
3296
- onMouseDown: handleEventClick,
3300
+ onMouseDown: handleEventHeadCellMouseDown,
3301
+ onMouseUp: handleEventHeadCellMouseUp,
3297
3302
  value,
3298
3303
  onSort: isResizing || showRowNumbers && value === "#" || isHeaderHidden ? null : onSort,
3299
3304
  resizable: !isHeaderHidden,
@@ -3444,8 +3449,8 @@ var computeVizProps = (_a) => {
3444
3449
  }
3445
3450
  if (vizProps.onOptionsChange) {
3446
3451
  const handleColumnFormatChange = (updatedColumnFormat) => {
3447
- var _a3, _b2;
3448
- const cloneOfExistingColumnFormat = (_b2 = __spreadValues({}, (_a3 = vizProps == null ? void 0 : vizProps.options) == null ? void 0 : _a3.columnFormat)) != null ? _b2 : {};
3452
+ var _a3;
3453
+ const cloneOfExistingColumnFormat = __spreadValues({}, ((_a3 = vizProps == null ? void 0 : vizProps.options) == null ? void 0 : _a3.columnFormat) || {});
3449
3454
  const keys2 = Object.keys(updatedColumnFormat);
3450
3455
  const values = Object.values(updatedColumnFormat);
3451
3456
  keys2.forEach((key, index) => {