@splunk/visualizations 26.2.0 → 26.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/Area.config.js +91 -594
  2. package/Area.config.js.map +1 -1
  3. package/Area.js +184 -689
  4. package/Area.js.map +1 -1
  5. package/Bar.config.js +92 -561
  6. package/Bar.config.js.map +1 -1
  7. package/Bar.js +184 -655
  8. package/Bar.js.map +1 -1
  9. package/Bubble.config.js +83 -482
  10. package/Bubble.config.js.map +1 -1
  11. package/Bubble.js +177 -578
  12. package/Bubble.js.map +1 -1
  13. package/ChoroplethSvg.config.js +76 -201
  14. package/ChoroplethSvg.config.js.map +1 -1
  15. package/ChoroplethSvg.js +173 -301
  16. package/ChoroplethSvg.js.map +1 -1
  17. package/Column.config.js +92 -599
  18. package/Column.config.js.map +1 -1
  19. package/Column.js +184 -693
  20. package/Column.js.map +1 -1
  21. package/Ellipse.config.js +82 -200
  22. package/Ellipse.config.js.map +1 -1
  23. package/Ellipse.js +137 -262
  24. package/Ellipse.js.map +1 -1
  25. package/Events.config.js +61 -282
  26. package/Events.config.js.map +1 -1
  27. package/Events.js +222 -428
  28. package/Events.js.map +1 -1
  29. package/FillerGauge.config.js +90 -219
  30. package/FillerGauge.config.js.map +1 -1
  31. package/FillerGauge.js +163 -299
  32. package/FillerGauge.js.map +1 -1
  33. package/Image.config.js +61 -157
  34. package/Image.config.js.map +1 -1
  35. package/Image.js +130 -242
  36. package/Image.js.map +1 -1
  37. package/Line.config.js +91 -606
  38. package/Line.config.js.map +1 -1
  39. package/Line.js +184 -701
  40. package/Line.js.map +1 -1
  41. package/LinkGraph.config.js +74 -256
  42. package/LinkGraph.config.js.map +1 -1
  43. package/LinkGraph.js +17198 -24224
  44. package/LinkGraph.js.map +1 -1
  45. package/Map.config.js +128 -1123
  46. package/Map.config.js.map +1 -1
  47. package/Map.js +309 -680
  48. package/Map.js.map +1 -1
  49. package/Markdown.config.js +61 -188
  50. package/Markdown.config.js.map +1 -1
  51. package/Markdown.js +190 -323
  52. package/Markdown.js.map +1 -1
  53. package/MarkerGauge.config.js +137 -297
  54. package/MarkerGauge.config.js.map +1 -1
  55. package/MarkerGauge.js +1038 -1203
  56. package/MarkerGauge.js.map +1 -1
  57. package/ParallelCoordinates.config.js +71 -191
  58. package/ParallelCoordinates.config.js.map +1 -1
  59. package/ParallelCoordinates.js +218 -343
  60. package/ParallelCoordinates.js.map +1 -1
  61. package/Pie.config.js +72 -240
  62. package/Pie.config.js.map +1 -1
  63. package/Pie.js +214 -381
  64. package/Pie.js.map +1 -1
  65. package/Punchcard.config.js +71 -305
  66. package/Punchcard.config.js.map +1 -1
  67. package/Punchcard.js +246 -477
  68. package/Punchcard.js.map +1 -1
  69. package/Rectangle.config.js +211 -347
  70. package/Rectangle.config.js.map +1 -1
  71. package/Rectangle.js +274 -416
  72. package/Rectangle.js.map +1 -1
  73. package/Sankey.config.js +71 -213
  74. package/Sankey.config.js.map +1 -1
  75. package/Sankey.js +246 -382
  76. package/Sankey.js.map +1 -1
  77. package/Scatter.config.js +85 -463
  78. package/Scatter.config.js.map +1 -1
  79. package/Scatter.js +825 -1202
  80. package/Scatter.js.map +1 -1
  81. package/SingleValue.config.js +114 -409
  82. package/SingleValue.config.js.map +1 -1
  83. package/SingleValue.js +287 -582
  84. package/SingleValue.js.map +1 -1
  85. package/SingleValueBasic.js +30 -30
  86. package/SingleValueBasic.js.map +1 -1
  87. package/SingleValueIcon.config.js +113 -378
  88. package/SingleValueIcon.config.js.map +1 -1
  89. package/SingleValueIcon.js +268 -533
  90. package/SingleValueIcon.js.map +1 -1
  91. package/SingleValueRadial.config.js +110 -382
  92. package/SingleValueRadial.config.js.map +1 -1
  93. package/SingleValueRadial.js +272 -543
  94. package/SingleValueRadial.js.map +1 -1
  95. package/SparkLine.js +24 -24
  96. package/SparkLine.js.map +1 -1
  97. package/Table.config.js +74 -496
  98. package/Table.config.js.map +1 -1
  99. package/Table.js +302 -720
  100. package/Table.js.map +1 -1
  101. package/common/Charting.js +22 -34
  102. package/common/Charting.js.map +1 -1
  103. package/common/DocExampleWithVizSandbox.js +21 -21
  104. package/common/DocExampleWithVizSandbox.js.map +1 -1
  105. package/common/EventsDoc.js +18 -18
  106. package/common/EventsDoc.js.map +1 -1
  107. package/common/GaugeMajorTicks.js +4 -4
  108. package/common/GaugeMajorTicks.js.map +1 -1
  109. package/common/GaugeValueMarker.js +2 -2
  110. package/common/GaugeValueMarker.js.map +1 -1
  111. package/common/OptionsDoc.js +4 -4
  112. package/common/OptionsDoc.js.map +1 -1
  113. package/common/OverviewDoc.js +39 -40
  114. package/common/OverviewDoc.js.map +1 -1
  115. package/common/SplunkVisualization.js +2 -2
  116. package/common/SplunkVisualization.js.map +1 -1
  117. package/common/SplunkVisualizationApi.js +2 -2
  118. package/common/SplunkVisualizationApi.js.map +1 -1
  119. package/common/ThemesDoc.js +19 -19
  120. package/common/ThemesDoc.js.map +1 -1
  121. package/common/chartingUtils.js +2 -2
  122. package/common/chartingUtils.js.map +1 -1
  123. package/common/gaugeUtils.js +10 -10
  124. package/common/gaugeUtils.js.map +1 -1
  125. package/common/shapeUtils.js +10 -10
  126. package/common/shapeUtils.js.map +1 -1
  127. package/common/utils/configUtils.js +25 -155
  128. package/common/utils/configUtils.js.map +1 -1
  129. package/common/utils/dataUtils.js +75 -87
  130. package/common/utils/dataUtils.js.map +1 -1
  131. package/common/utils/featureFlagUtils.js +4 -4
  132. package/common/utils/featureFlagUtils.js.map +1 -1
  133. package/common/utils/hocUtils.js +2 -2
  134. package/common/utils/hocUtils.js.map +1 -1
  135. package/common/utils/mapUtils.js +51 -54
  136. package/common/utils/mapUtils.js.map +1 -1
  137. package/common/utils/singleValueUtils.js +7 -7
  138. package/common/utils/singleValueUtils.js.map +1 -1
  139. package/common/utils/testHelper.js +7 -36
  140. package/common/utils/testHelper.js.map +1 -1
  141. package/common/utils/trellisUtils.js +7 -6
  142. package/common/utils/trellisUtils.js.map +1 -1
  143. package/common/utils/urlUtils.js +2 -2
  144. package/common/utils/urlUtils.js.map +1 -1
  145. package/common/withDashboardViz.js +65 -77
  146. package/common/withDashboardViz.js.map +1 -1
  147. package/package.json +46 -49
  148. package/common/utils/layoutUtils.js +0 -115
  149. package/common/utils/layoutUtils.js.map +0 -1
@@ -87,7 +87,7 @@ module.exports =
87
87
  /******/
88
88
  /******/
89
89
  /******/ // Load entry module and return exports
90
- /******/ return __webpack_require__(__webpack_require__.s = 104);
90
+ /******/ return __webpack_require__(__webpack_require__.s = 102);
91
91
  /******/ })
92
92
  /************************************************************************/
93
93
  /******/ ({
@@ -106,7 +106,7 @@ module.exports = require("prop-types");
106
106
 
107
107
  /***/ }),
108
108
 
109
- /***/ 104:
109
+ /***/ 102:
110
110
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
111
111
 
112
112
  "use strict";
@@ -117,7 +117,7 @@ __webpack_require__.r(__webpack_exports__);
117
117
  __webpack_require__.d(__webpack_exports__, "SingleValueTrendValue", function() { return /* binding */ SingleValueTrendValue; });
118
118
 
119
119
  // EXTERNAL MODULE: external "@babel/runtime/helpers/extends"
120
- var extends_ = __webpack_require__(70);
120
+ var extends_ = __webpack_require__(69);
121
121
  var extends_default = /*#__PURE__*/__webpack_require__.n(extends_);
122
122
 
123
123
  // EXTERNAL MODULE: external "react"
@@ -136,11 +136,11 @@ var external_styled_components_default = /*#__PURE__*/__webpack_require__.n(exte
136
136
  var singleValueUtils = __webpack_require__(20);
137
137
 
138
138
  // EXTERNAL MODULE: external "@splunk/react-icons/enterprise/ArrowUp"
139
- var ArrowUp_ = __webpack_require__(108);
139
+ var ArrowUp_ = __webpack_require__(106);
140
140
  var ArrowUp_default = /*#__PURE__*/__webpack_require__.n(ArrowUp_);
141
141
 
142
142
  // EXTERNAL MODULE: external "@splunk/react-icons/enterprise/ArrowDown"
143
- var ArrowDown_ = __webpack_require__(109);
143
+ var ArrowDown_ = __webpack_require__(107);
144
144
  var ArrowDown_default = /*#__PURE__*/__webpack_require__.n(ArrowDown_);
145
145
 
146
146
  // EXTERNAL MODULE: external "@splunk/ui-utils/i18n"
@@ -156,7 +156,7 @@ var i18n_ = __webpack_require__(2);
156
156
 
157
157
  var Column = external_styled_components_default.a.div.withConfig({
158
158
  displayName: "TrendValue__Column",
159
- componentId: "yd2lvy-0"
159
+ componentId: "sc-yd2lvy-0"
160
160
  })(["display:flex;flex-direction:row;justify-content:", ";height:", "px;", ";"], function (props) {
161
161
  return props.justify || 'flex-end';
162
162
  }, function (props) {
@@ -166,7 +166,7 @@ var Column = external_styled_components_default.a.div.withConfig({
166
166
  });
167
167
  var Text = external_styled_components_default.a.div.withConfig({
168
168
  displayName: "TrendValue__Text",
169
- componentId: "yd2lvy-1"
169
+ componentId: "sc-yd2lvy-1"
170
170
  })(["white-space:nowrap;font-size:", "px;color:", ";font-family:", ";height:", "px;line-height:", "px;display:flex;align-self:baseline;", ";"], function (props) {
171
171
  return props.size || 12;
172
172
  }, function (props) {
@@ -219,7 +219,7 @@ TrendValue_SingleValueContent.propTypes = {
219
219
  };
220
220
  /* harmony default export */ var TrendValue = (TrendValue_SingleValueContent);
221
221
  // EXTERNAL MODULE: external "cssesc"
222
- var external_cssesc_ = __webpack_require__(110);
222
+ var external_cssesc_ = __webpack_require__(108);
223
223
  var external_cssesc_default = /*#__PURE__*/__webpack_require__.n(external_cssesc_);
224
224
 
225
225
  // CONCATENATED MODULE: ./src/SingleValueBasic/MajorValue.jsx
@@ -230,7 +230,7 @@ var external_cssesc_default = /*#__PURE__*/__webpack_require__.n(external_cssesc
230
230
 
231
231
  var Row = external_styled_components_default.a.div.withConfig({
232
232
  displayName: "MajorValue__Row",
233
- componentId: "shlzpv-0"
233
+ componentId: "sc-shlzpv-0"
234
234
  })(["display:flex;flex-direction:row;align-items:flex-end;justify-content:left;height:", "px;line-height:", "px;"], function (props) {
235
235
  return props.size;
236
236
  }, function (props) {
@@ -238,7 +238,7 @@ var Row = external_styled_components_default.a.div.withConfig({
238
238
  });
239
239
  var MajorValue_Text = external_styled_components_default.a.div.withConfig({
240
240
  displayName: "MajorValue__Text",
241
- componentId: "shlzpv-1"
241
+ componentId: "sc-shlzpv-1"
242
242
  })(["white-space:nowrap;height:100%;font-size:", "px;color:", ";font-family:", ";font-weight:bold;&:hover{text-decoration:", ";cursor:", ";}", ""], function (props) {
243
243
  return props.size || 12;
244
244
  }, function (props) {
@@ -329,11 +329,11 @@ MajorValue_SingleValueContent.propTypes = {
329
329
 
330
330
  var SingleValueBasic_Column = external_styled_components_default.a.div.withConfig({
331
331
  displayName: "SingleValueBasic__Column",
332
- componentId: "k0nwrx-0"
332
+ componentId: "sc-k0nwrx-0"
333
333
  })(["display:flex;flex-direction:column;align-self:center;justify-content:center;"]);
334
334
  var SingleValueBasic_Row = external_styled_components_default.a.div.withConfig({
335
335
  displayName: "SingleValueBasic__Row",
336
- componentId: "k0nwrx-1"
336
+ componentId: "sc-k0nwrx-1"
337
337
  })(["display:flex;flex-direction:row;align-items:", ";justify-content:", ";"], function (props) {
338
338
  return props.alignItems || 'center';
339
339
  }, function (props) {
@@ -341,7 +341,7 @@ var SingleValueBasic_Row = external_styled_components_default.a.div.withConfig({
341
341
  });
342
342
  var SingleValueBasic_Text = external_styled_components_default.a.div.withConfig({
343
343
  displayName: "SingleValueBasic__Text",
344
- componentId: "k0nwrx-2"
344
+ componentId: "sc-k0nwrx-2"
345
345
  })(["font-weight:normal;white-space:nowrap;font-size:", "px;color:", ";font-family:", ";height:", "px;line-height:1.2;margin:", ";"], function (props) {
346
346
  return props.size || 12;
347
347
  }, function (props) {
@@ -425,20 +425,27 @@ var SingleValueTrendValue = TrendValue;
425
425
 
426
426
  /***/ }),
427
427
 
428
- /***/ 108:
428
+ /***/ 106:
429
429
  /***/ (function(module, exports) {
430
430
 
431
431
  module.exports = require("@splunk/react-icons/enterprise/ArrowUp");
432
432
 
433
433
  /***/ }),
434
434
 
435
- /***/ 109:
435
+ /***/ 107:
436
436
  /***/ (function(module, exports) {
437
437
 
438
438
  module.exports = require("@splunk/react-icons/enterprise/ArrowDown");
439
439
 
440
440
  /***/ }),
441
441
 
442
+ /***/ 108:
443
+ /***/ (function(module, exports) {
444
+
445
+ module.exports = require("cssesc");
446
+
447
+ /***/ }),
448
+
442
449
  /***/ 11:
443
450
  /***/ (function(module, exports) {
444
451
 
@@ -446,10 +453,10 @@ module.exports = require("@splunk/visualizations-shared/numberUtils");
446
453
 
447
454
  /***/ }),
448
455
 
449
- /***/ 110:
456
+ /***/ 13:
450
457
  /***/ (function(module, exports) {
451
458
 
452
- module.exports = require("cssesc");
459
+ module.exports = require("@babel/runtime/helpers/defineProperty");
453
460
 
454
461
  /***/ }),
455
462
 
@@ -496,17 +503,17 @@ __webpack_require__.r(__webpack_exports__);
496
503
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lighten", function() { return lighten; });
497
504
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "darken", function() { return darken; });
498
505
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "handleValueClickCallback", function() { return handleValueClickCallback; });
499
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
506
+ /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
500
507
  /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
501
508
  /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
502
509
  /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_1__);
503
510
  /* harmony import */ var _splunk_visualizations_shared_numberUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11);
504
511
  /* harmony import */ var _splunk_visualizations_shared_numberUtils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_splunk_visualizations_shared_numberUtils__WEBPACK_IMPORTED_MODULE_2__);
505
- /* harmony import */ var _splunk_visualizations_shared_domUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(76);
512
+ /* harmony import */ var _splunk_visualizations_shared_domUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(74);
506
513
  /* harmony import */ var _splunk_visualizations_shared_domUtils__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_splunk_visualizations_shared_domUtils__WEBPACK_IMPORTED_MODULE_3__);
507
514
  /* harmony import */ var _splunk_visualizations_shared_propUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(36);
508
515
  /* harmony import */ var _splunk_visualizations_shared_propUtils__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_splunk_visualizations_shared_propUtils__WEBPACK_IMPORTED_MODULE_4__);
509
- /* harmony import */ var _splunk_visualizations_shared_colorConstants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(71);
516
+ /* harmony import */ var _splunk_visualizations_shared_colorConstants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(70);
510
517
  /* harmony import */ var _splunk_visualizations_shared_colorConstants__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_splunk_visualizations_shared_colorConstants__WEBPACK_IMPORTED_MODULE_5__);
511
518
 
512
519
 
@@ -1510,32 +1517,25 @@ module.exports = require("styled-components");
1510
1517
 
1511
1518
  /***/ }),
1512
1519
 
1513
- /***/ 70:
1520
+ /***/ 69:
1514
1521
  /***/ (function(module, exports) {
1515
1522
 
1516
1523
  module.exports = require("@babel/runtime/helpers/extends");
1517
1524
 
1518
1525
  /***/ }),
1519
1526
 
1520
- /***/ 71:
1527
+ /***/ 70:
1521
1528
  /***/ (function(module, exports) {
1522
1529
 
1523
1530
  module.exports = require("@splunk/visualizations-shared/colorConstants");
1524
1531
 
1525
1532
  /***/ }),
1526
1533
 
1527
- /***/ 76:
1534
+ /***/ 74:
1528
1535
  /***/ (function(module, exports) {
1529
1536
 
1530
1537
  module.exports = require("@splunk/visualizations-shared/domUtils");
1531
1538
 
1532
- /***/ }),
1533
-
1534
- /***/ 9:
1535
- /***/ (function(module, exports) {
1536
-
1537
- module.exports = require("@babel/runtime/helpers/defineProperty");
1538
-
1539
1539
  /***/ })
1540
1540
 
1541
1541
  /******/ });
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"react\"","webpack:///external \"prop-types\"","webpack:///./src/SingleValueBasic/TrendValue.jsx","webpack:///./src/SingleValueBasic/MajorValue.jsx","webpack:///./src/SingleValueBasic/SingleValueBasic.jsx","webpack:///external \"@splunk/react-icons/enterprise/ArrowUp\"","webpack:///external \"@splunk/react-icons/enterprise/ArrowDown\"","webpack:///external \"@splunk/visualizations-shared/numberUtils\"","webpack:///external \"cssesc\"","webpack:///external \"@splunk/ui-utils/i18n\"","webpack:///./src/common/utils/singleValueUtils.js","webpack:///external \"lodash\"","webpack:///external \"@splunk/visualizations-shared/propUtils\"","webpack:///external \"styled-components\"","webpack:///external \"@babel/runtime/helpers/extends\"","webpack:///external \"@splunk/visualizations-shared/colorConstants\"","webpack:///external \"@splunk/visualizations-shared/domUtils\"","webpack:///external \"@babel/runtime/helpers/defineProperty\""],"names":["Column","styled","props","parseInt","Text","SingleValueContent","fontSize","color","value","text","TrendIndicator","ariaLabel","parseFloat","_","T","string","Row","validUnitPositions","unitPosition","title","onValueClick","unit","sanitizedUnit","cssesc","wrap","quotes","sanitizedUnitPosition","handleKeyDown","e","getAligment","SingleValueBasic","majorColor","majorTextFontSize","majorText","majorValueTitle","trendColor","trendTextFontSize","trendText","showTrendIndicator","underLabel","underLabelFontSize","underLabelColor","align","trendIndicatorEnabled","SingleValueTrendValue","DEFAULT_FONT","DEFAULT_FONT_FAMILY","SVR_PADDING","top","bottom","left","right","alignMap","center","shouldShowTrend","trendDisplay","isLoadingOrNoColumns","data","get","noColumns","loading","getFormattedColor","formatColor","hasBackground","backgroundColor","isIdenticalColor","colorA","colorB","getDefaultColorWithBg","defaultFontColor","defaultBlockFontColor","getMajorColor","getTrendColor","trendValue","majorValue","customizedBgColor","defaultColors","Number","defaultBackgroundColor","isInvalidTrend","computeColors","backgroundEnabled","computeText","numberPrecision","shouldUseThousandSeparators","shouldAbbreviateTrendValue","formatNumber","useThousandSeparators","useTrendUnits","getMajorText","getTrendText","compute","isNumerial","showPercent","diff","Math","val","computeFontSize","width","height","fontFamily","fontWeight","widthInDefaultFont","computeTextSize","getMajorFontSize","spaceRatio","majorTextCalc","getTrendFontSize","trendFontSize","getUnderLabelHeight","getUnderLabel","getMajorAndTrend","majorFontSize","majorTextSpaceRatio","textContentWidth","textContentHeight","updateVizInSmallSpace","toRemoveList","removeIndex","newProps","newMajorAndTrend","newTextSize","toRemove","truncateValue","updatedProps","computeSingleValueContent","contentWidth","contentHeight","containerWidth","containerHeight","smallVizProps","minimallyTruncateStringToWidth","textWidth","modifiedText","ellipsesLength","computeSingleValueRadialContent","smallViz","getGraphColors","customColorFormatter","adjustRGB","rgb","changeColor","hex","r","g","b","newR","newG","newB","ratio","lighten","darken","handleValueClickCallback","trellisEnabled","trellisSplityBy","trellisKey","payload","name","majorValueField"],"mappings":"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","file":"SingleValueBasic.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 104);\n","module.exports = require(\"react\");","module.exports = require(\"prop-types\");","import React from 'react';\nimport T from 'prop-types';\nimport styled from 'styled-components';\nimport ArrowUp from '@splunk/react-icons/enterprise/ArrowUp';\nimport ArrowDown from '@splunk/react-icons/enterprise/ArrowDown';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport { DEFAULT_FONT_FAMILY } from '../common/utils/singleValueUtils';\n\nconst Column = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: ${props => props.justify || 'flex-end'};\n height: ${props => props.size || 12}px;\n ${props => (props.size ? `margin: 0 ${parseInt(props.size, 10) * 0.2 || 5}px;` : '')};\n`;\n\nconst Text = styled.div`\n white-space: nowrap;\n font-size: ${props => props.size || 12}px;\n color: ${props => props.color || '#000'};\n font-family: ${DEFAULT_FONT_FAMILY};\n height: ${props => props.size || 12}px;\n line-height: ${props => props.size || 12}px;\n display: flex;\n align-self: baseline;\n ${props => (props.size ? `margin-left: ${parseInt(props.size, 10) * 0.2 || 5}px;` : '')};\n`;\n\nconst SingleValueContent = ({ fontSize, color, value, text }) => {\n let TrendIndicator = false;\n let ariaLabel = false;\n\n if (parseFloat(value, 10) > 0) {\n TrendIndicator = ArrowUp;\n ariaLabel = _('increase');\n } else if (parseFloat(value, 10) < 0) {\n TrendIndicator = ArrowDown;\n ariaLabel = _('decrease');\n }\n\n return (\n <Column justify=\"flex-end\" size={fontSize}>\n <Text data-test=\"trendValueIndicator\" size={fontSize} color={color}>\n {TrendIndicator && <TrendIndicator aria-label={ariaLabel} />}\n </Text>\n <Text data-test=\"trendValue\" size={fontSize} color={color}>\n {`${text}`}\n </Text>\n </Column>\n );\n};\n\nSingleValueContent.propTypes = {\n fontSize: T.number,\n color: T.string,\n value: T.oneOfType([T.string, T.number]),\n text: T.string,\n};\n\nexport default SingleValueContent;\n","import React from 'react';\nimport T from 'prop-types';\nimport styled from 'styled-components';\nimport cssesc from 'cssesc';\nimport { DEFAULT_FONT_FAMILY } from '../common/utils/singleValueUtils';\n\nconst Row = styled.div`\n display: flex;\n flex-direction: row;\n align-items: flex-end;\n justify-content: left;\n height: ${props => props.size}px;\n line-height: ${props => props.size}px;\n`;\n\nconst Text = styled.div`\n white-space: nowrap;\n height: 100%;\n font-size: ${props => props.size || 12}px;\n color: ${props => props.color};\n font-family: ${DEFAULT_FONT_FAMILY};\n font-weight: bold;\n &:hover {\n text-decoration: ${props => (props.showUnderline ? 'underline' : 'inherit')};\n cursor: ${props => (props.showUnderline ? 'pointer' : 'inherit')};\n }\n ${props => {\n if (!props.pseudoContent || !props.pseudoContentPosition) {\n return '';\n }\n return `&:${props.pseudoContentPosition} {\n // by default this pseudo element would inherit text-decoration from main element\n // and text-decoration could not be overwritten.\n // adding display: inline-block makes text decoration independent from main element.\n // => the unit will not be underlined if a user hovers over the main value\n display: inline-block;\n font-size: ${props.pseudoContentFontSize}px;\n position: relative;\n font-weight: normal;\n content: ${props.pseudoContent};\n }`;\n }}\n`;\n\nconst validUnitPositions = ['before', 'after'];\n\nconst SingleValueContent = ({ color, fontSize, unitPosition, title, value, onValueClick, unit }) => {\n let sanitizedUnit;\n let sanitizedUnitPosition;\n\n if (typeof unit === 'string') {\n sanitizedUnit = cssesc(unit, { wrap: true, quotes: 'double' });\n if (typeof unitPosition === 'string' && validUnitPositions.includes(unitPosition)) {\n sanitizedUnitPosition = unitPosition;\n } else {\n sanitizedUnitPosition = 'after';\n }\n }\n\n const handleKeyDown = e => {\n if (e.keyCode !== 13) {\n return;\n }\n e.preventDefault();\n onValueClick(e);\n };\n\n return (\n <Row size={fontSize}>\n <Text\n data-test=\"majorValue\"\n color={color}\n onClick={e => typeof onValueClick === 'function' && onValueClick(e)}\n showUnderline={!!onValueClick}\n size={fontSize}\n title={title}\n pseudoContent={sanitizedUnit}\n pseudoContentPosition={sanitizedUnitPosition}\n pseudoContentFontSize={fontSize * 0.6}\n tabIndex=\"0\"\n role=\"button\"\n onKeyDown={handleKeyDown}\n >\n {value}\n </Text>\n </Row>\n );\n};\n\nSingleValueContent.propTypes = {\n color: T.string,\n fontSize: T.number,\n unit: T.string,\n unitPosition: T.oneOf(validUnitPositions),\n value: T.oneOfType([T.string, T.number]),\n title: T.oneOfType([T.string, T.number]),\n onValueClick: T.oneOfType([T.bool, T.func]),\n};\n\nexport default SingleValueContent;\n","import React from 'react';\nimport T from 'prop-types';\nimport styled from 'styled-components';\nimport { DEFAULT_FONT_FAMILY, getAligment } from '../common/utils/singleValueUtils';\nimport TrendValue from './TrendValue';\nimport MajorValue from './MajorValue';\n\nconst Column = styled.div`\n display: flex;\n flex-direction: column;\n align-self: center;\n justify-content: center;\n`;\n\nconst Row = styled.div`\n display: flex;\n flex-direction: row;\n align-items: ${props => props.alignItems || 'center'};\n justify-content: ${props => getAligment(props.align)};\n`;\n\nconst Text = styled.div`\n font-weight: normal;\n white-space: nowrap;\n font-size: ${props => props.size || 12}px;\n color: ${props => props.color || '#000'};\n font-family: ${DEFAULT_FONT_FAMILY};\n height: ${props => props.size || 12}px;\n line-height: 1.2;\n margin: ${props => props.margin || 'inherit'};\n`;\n\nconst SingleValueBasic = ({ ...props }) => {\n const {\n majorColor,\n majorTextFontSize,\n majorText,\n majorValueTitle,\n trendColor,\n trendTextFontSize,\n trendText,\n showTrendIndicator,\n unit,\n unitPosition,\n underLabel,\n underLabelFontSize,\n underLabelColor,\n onValueClick,\n align,\n } = props;\n const trendIndicatorEnabled = trendText !== '' && showTrendIndicator;\n\n return (\n <Column>\n <Row\n alignItems=\"baseline\"\n align={align}\n data-test={`single-value-row-align-${getAligment(align)}`}\n >\n <MajorValue\n color={majorColor}\n fontSize={majorTextFontSize}\n unit={unit}\n unitPosition={unitPosition}\n value={majorText}\n title={majorValueTitle}\n onValueClick={onValueClick}\n />\n {trendIndicatorEnabled && (\n // Passing the same value for value and text is a temporary hold until completion of https://jira.splunk.com/browse/SCP-21371\n <TrendValue\n fontSize={trendTextFontSize}\n color={trendColor}\n value={trendText}\n text={trendText}\n />\n )}\n </Row>\n {underLabel && (\n <Row\n justify=\"center\"\n align={align}\n data-test={`single-value-row-align-${getAligment(align)}`}\n >\n <Text\n data-test=\"underLabel\"\n size={underLabelFontSize}\n color={underLabelColor}\n margin=\"0 6px\"\n >\n {underLabel}\n </Text>\n </Row>\n )}\n </Column>\n );\n};\n\nSingleValueBasic.propTypes = {\n majorText: T.string,\n majorColor: T.string,\n majorTextFontSize: T.number,\n majorValueTitle: T.string,\n trendText: T.string,\n trendTextFontSize: T.number,\n trendColor: T.string,\n showTrendIndicator: T.bool,\n unit: T.string,\n unitPosition: T.oneOf(['before', 'after']),\n underLabel: T.string,\n underLabelFontSize: T.number,\n underLabelColor: T.string,\n onValueClick: T.oneOfType([T.bool, T.func]),\n align: T.string,\n};\n\nexport const SingleValueTrendValue = TrendValue;\nexport default SingleValueBasic;\n","module.exports = require(\"@splunk/react-icons/enterprise/ArrowUp\");","module.exports = require(\"@splunk/react-icons/enterprise/ArrowDown\");","module.exports = require(\"@splunk/visualizations-shared/numberUtils\");","module.exports = require(\"cssesc\");","module.exports = require(\"@splunk/ui-utils/i18n\");","import { get } from 'lodash';\nimport { isNumerial, formatNumber } from '@splunk/visualizations-shared/numberUtils';\nimport { computeTextSize } from '@splunk/visualizations-shared/domUtils';\nimport { formatColor } from '@splunk/visualizations-shared/propUtils';\nimport { DELTA_GREEN, DELTA_RED } from '@splunk/visualizations-shared/colorConstants';\n\nexport const DEFAULT_FONT = 12;\nexport const DEFAULT_FONT_FAMILY =\n '\"Splunk Platform Sans\", \"Proxima Nova\", \"Helvetica Neue\", Helvetica, Arial, sans-serif';\n\nexport const SVR_PADDING = { top: 12, bottom: 12, left: 16, right: 16 };\n\nexport const getAligment = align => {\n const alignMap = {\n left: 'start',\n center: 'center',\n right: 'end',\n };\n return alignMap[align] || 'center';\n};\n\n/**\n * @method shouldShowTrend\n * @param {String} trendDisplay\n * @returns {Bool}\n */\nexport const shouldShowTrend = trendDisplay => trendDisplay === 'absolute' || trendDisplay === 'percent';\n\n/**\n * @method isLoadingOrNoColumns\n * @param {Object} dataSources\n * @param {Boolean} loading\n * @returns {Boolean} return true if loading or without columns in dataSources\n */\nexport const isLoadingOrNoColumns = (dataSources, loading) => {\n const data = get(dataSources, 'primary.data.columns[0]', undefined);\n const noColumns = data === undefined;\n return loading || noColumns;\n};\n\n/**\n * Retrieve the valid formatted color\n * @method getFormattedColor\n * @param {String} color\n * @param {String} defaultColor\n * @returns {String} the formatted color\n */\nexport const getFormattedColor = (color, defaultColor) => formatColor(color) || formatColor(defaultColor);\n\n/**\n * Determines if there is a background color\n * @method hasBackground\n * @param {String} backgroundColor\n * @returns true for non-transparent background color\n */\nexport const hasBackground = backgroundColor => !!backgroundColor && backgroundColor !== 'transparent';\n\n/**\n * @method isIdenticalColor\n * @param {String} colorA\n * @param {String} colorB\n * @returns {Boolean}\n */\nexport const isIdenticalColor = (colorA, colorB) =>\n !!colorA && !!colorB && formatColor(colorA.toLowerCase()) === formatColor(colorB.toLowerCase());\n\n/*\n * @method getDefaultColorWithBg\n * @param {Object} props\n * @param {String} props.backgroundColor\n * @param {String} props.defaultFontColor\n * @param {String} props.defaultBlockFontColor\n * @returns {String} defaultColor\n */\nexport const getDefaultColorWithBg = ({ backgroundColor, defaultFontColor, defaultBlockFontColor }) =>\n isIdenticalColor(backgroundColor, defaultBlockFontColor) ? defaultFontColor : defaultBlockFontColor;\n\n/*\n * @method getMajorColor\n * return formatted majorColor.\n * @param {Object} props\n * @param {String} props.majorColor\n * @param {String} props.backgroundColor\n * @param {String} props.defaultFontColor\n * @param {String} props.defaultBlockFontColor\n * @returns {String} majorColor\n */\nexport const getMajorColor = ({ majorColor, backgroundColor, defaultFontColor, defaultBlockFontColor }) => {\n // If backgroundColor is set, but no majorColor,\n // the default majorColor will turn to be defaultBlockFontColor.\n // eg: major color will turn to be white in enterprise mode.\n // however, if the bgColor is the same as defaultBlockFontColor, use defaultFontColor.\n if (hasBackground(backgroundColor) && !majorColor) {\n return getDefaultColorWithBg({\n backgroundColor,\n defaultFontColor,\n defaultBlockFontColor,\n });\n }\n\n return getFormattedColor(majorColor, defaultFontColor);\n};\n\n/**\n * Get the color for the trend components\n * @method getTrendColor\n * @param {Object} props\n * @param {String} props.trendColor The trendColor value determined from encoding\n * @param {Number} props.trendValue\n * @param {Number} props.majorValue\n * @param {String} props.customizedBgColor\n * @param {String} props.trendDisplay absolute || percent || off\n * @param {Object} defaultColors\n * @returns {String} trendColor\n */\nexport const getTrendColor = ({\n trendColor,\n trendValue,\n majorValue,\n customizedBgColor,\n trendDisplay,\n defaultColors,\n}) => {\n if (trendColor) {\n return trendColor;\n }\n\n if (Number.isNaN(Number(trendValue))) {\n return undefined;\n }\n\n const { defaultFontColor, defaultBlockFontColor, defaultBackgroundColor } = defaultColors;\n\n // if user defined a backgroundColor, the default trend color will be defaultBlockFontColor\n if (\n hasBackground(customizedBgColor) &&\n !isIdenticalColor(customizedBgColor, defaultBackgroundColor) &&\n !isIdenticalColor(customizedBgColor, defaultBlockFontColor)\n ) {\n return defaultBlockFontColor;\n }\n\n // if trendDisplay is percent, and trendValue === value\n // the trend percent = trendValue / (value - trendValue) will return Infinity\n const isInvalidTrend = trendDisplay === 'percent' && trendValue === parseFloat(majorValue);\n\n if (trendValue === 0 || isInvalidTrend) {\n return defaultFontColor;\n }\n\n return trendValue > 0 ? DELTA_GREEN : DELTA_RED;\n};\n\n/**\n * Computes visualization properties for display component\n * @method computeColors\n * @param {Object} props all viz props\n * @param {Object} defaultColors defaultColors from theme\n * @returns {Object} result\n * @returns {Boolean} backgroundEnabled\n * @returns {String} backgroundColor\n * @returns {String} majorColor\n * @returns {String} trendColor\n * @returns {String} underLabelColor\n */\nexport const computeColors = (props, defaultColors) => {\n const backgroundColor = getFormattedColor(props.backgroundColor, defaultColors.defaultBackgroundColor);\n const backgroundEnabled = hasBackground(backgroundColor);\n const majorColor = getMajorColor({\n majorColor: props.majorColor,\n backgroundColor,\n defaultFontColor: defaultColors.defaultFontColor,\n defaultBlockFontColor: defaultColors.defaultBlockFontColor,\n });\n const trendColor = getTrendColor({\n trendColor: props.trendColor,\n trendValue: props.trendValue,\n majorValue: props.majorValue,\n customizedBgColor: props.backgroundColor,\n trendDisplay: props.trendDisplay,\n defaultColors,\n });\n // todo: need change it to not depend on majorColor\n const underLabelColor = majorColor;\n\n return {\n backgroundColor,\n backgroundEnabled,\n majorColor,\n trendColor,\n underLabelColor,\n };\n};\n\n/**\n * Format and return the value (major/trend)\n * @method computeText\n * @param {Object} props\n * @param {Number} props.value // The major/trend value\n * @param {Number} props.numberPrecision\n * @param {Bool} props.shouldUseThousandSeparators\n * @param {Bool} props.shouldAbbreviateTrendValue\n * @returns {Number} major or trend text\n */\nexport const computeText = ({\n value,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n}) => {\n let text = isNumerial(value)\n ? formatNumber(value, numberPrecision, {\n useThousandSeparators: shouldUseThousandSeparators, // todo: need update formatNumber\n useTrendUnits: shouldAbbreviateTrendValue,\n })\n : value;\n // When text is undefined, return empty string\n text = text || '';\n return text;\n};\n\n/*\n * @method getMajorText\n * @param {Object} props\n * @param {Number} props.majorValue\n * @param {Number} props.numberPrecision\n * @param {Bool} props.shouldUseThousandSeparators\n * @returns {String} majorText\n */\nexport const getMajorText = ({ majorValue, numberPrecision, shouldUseThousandSeparators }) =>\n computeText({\n value: majorValue === null ? 'N/A' : majorValue, // if majorValue is null, use `N/A`.\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue: false,\n });\n\n/*\n * @method getTrendText\n * @param {Object} props\n * @param {Number} props.majorValue\n * @param {Number} props.trendValue\n * @param {String} props.trendDisplay\n * @param {Number} props.numberPrecision\n * @param {Bool} props.shouldUseThousandSeparators\n * @param {Bool} props.shouldAbbreviateTrendValue\n * @returns {String} trendText\n */\nexport const getTrendText = ({\n majorValue,\n trendValue,\n trendDisplay,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n}) => {\n const compute = value =>\n computeText({\n value,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n });\n\n if (trendValue === '' || !isNumerial(trendValue)) {\n return '';\n }\n const showPercent = trendDisplay === 'percent';\n if (!showPercent) {\n return compute(trendValue);\n }\n\n const diff = Math.abs(trendValue - majorValue);\n let val = Math.round((trendValue / diff) * 100);\n if (trendValue === 0 && diff === 0) {\n val = 0;\n }\n\n if (!Number.isFinite(val)) {\n return 'N/A';\n }\n const text = compute(val);\n\n return `${text}%`;\n};\n\n/**\n * Helper to determine the font size for an element\n * @method computeFontSize\n * @param {String} text The string to find a size for\n * @param {Object} dimensions\n * @param {Number} dimensions.width The width of the container\n * @param {Number} dimensions.height The height of the container\n * @param {String} [fontFamily='\"Splunk Platform Sans\" ...'] The font being used\n * @param {String} [fontWeight='normal'] Boldness of font\n * @returns {Number} The size to use for fontSize styles\n */\nexport const computeFontSize = (\n text,\n { width, height },\n fontFamily = DEFAULT_FONT_FAMILY,\n fontWeight = 'normal'\n) => {\n const widthInDefaultFont = computeTextSize(text, `${fontWeight} ${DEFAULT_FONT}px ${fontFamily}`);\n const fontSize = Math.min(\n (width / widthInDefaultFont) * DEFAULT_FONT,\n (height / DEFAULT_FONT) * DEFAULT_FONT\n );\n return parseInt(fontSize, 10);\n};\n\n/*\n * @method getMajorFontSize\n * @param {Object} props\n * @param {Number} props.width\n * @param {Number} props.height\n * @param {String} props.unit\n * @param {String} props.majorText\n * @param {Number} props.spaceRatio\n * @returns {Number} majorFontSize\n */\nexport const getMajorFontSize = ({ width, height, unit, majorText, spaceRatio = 1 }) => {\n const majorTextCalc = unit ? `${unit}${majorText}` : majorText;\n return computeFontSize(majorTextCalc, {\n width: width * spaceRatio,\n height,\n });\n};\n\n/*\n * @method getTrendFontSize\n * @param {Object} props\n * @param {Number} props.width\n * @param {Number} props.height\n * @param {String} props.trendText\n * @param {Number} props.spaceRatio\n * @returns {Number} trendFontSize\n */\nexport const getTrendFontSize = ({ width, height, trendText, spaceRatio = 1 }) => {\n let trendFontSize = 12;\n if (spaceRatio > 0) {\n trendFontSize = computeFontSize(trendText, {\n width: width * spaceRatio,\n height,\n });\n trendFontSize = parseInt(trendFontSize, 10) * spaceRatio;\n }\n return trendFontSize;\n};\n\n/*\n * The height of underLabel should no more than 12px\n * @param {Number} height\n * @return {Number} height || DEFAULT_FONT\n */\nexport const getUnderLabelHeight = height => (height > DEFAULT_FONT ? DEFAULT_FONT : height);\n\n/*\n * @param {Object} config\n * @param {String} underLabel\n * @param {Number} width width of underLabel\n * @param {Number} height height of underLabel\n * @param {Number} fond size of underLabel\n */\nexport const getUnderLabel = ({ underLabel, width, height }) =>\n // todo: may need truncate underLabel later\n computeFontSize(underLabel, {\n width,\n height,\n });\n\n/**\n * Compute value and font size for major and trend\n * @method getMajorAndTrend\n * @param {Object} props\n * @param {Number} props.width // Width of the text container\n * @param {Number} props.height // Height of the text container\n * @param {Number} props.majorValue // Major value\n * @param {Number} props.trendValue // Trend value\n * @param {Number} props.majorFontSize\n * @param {Number} props.trendFontSize\n * @param {String} props.trendDisplay\n * @param {String} props.unit // Unit for the value\n * @param {Number} props.numberPrecision\n * @param {Bool} props.shouldUseThousandSeparators\n * @param {Bool} props.shouldAbbreviateTrendValue\n * @returns {Number, Number, Number, Number} Major text, trend text, major text size, trend text size\n */\nexport const getMajorAndTrend = ({\n width,\n height,\n majorValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n trendDisplay,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n}) => {\n const majorTextSpaceRatio = isNumerial(trendValue) && shouldShowTrend(trendDisplay) ? 0.6 : 1;\n const textContentWidth = width * 0.9;\n const textContentHeight = height * 0.9;\n const majorText = getMajorText({ majorValue, numberPrecision, shouldUseThousandSeparators });\n const majorTextFontSize =\n majorFontSize ||\n getMajorFontSize({\n width: textContentWidth,\n height: textContentHeight,\n unit,\n majorText,\n spaceRatio: majorTextSpaceRatio,\n });\n const trendText = getTrendText({\n majorValue,\n trendValue,\n trendDisplay,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n });\n\n const trendTextFontSize =\n trendFontSize ||\n getTrendFontSize({\n width: textContentWidth,\n height: textContentHeight,\n trendText,\n spaceRatio: 1 - majorTextSpaceRatio,\n });\n\n return {\n majorText,\n majorTextFontSize,\n trendText,\n trendTextFontSize,\n };\n};\n\n/*\n * @method updateVizInSmallSpace\n * @param {Object} props\n * @param {Number} props.width // Width of the text container\n * @param {Number} props.height // Height of the text container\n * @param {Object} props.toRemoveList\n * @param {Number} props.majorValue // Major value\n * @param {Number} props.trendValue // Trend value\n * @param {Number} props.majorFontSize\n * @param {Number} props.trendFontSize\n * @param {Number} props.majorTextFontSize\n * @param {String} props.unit // Unit for the value\n * @param {Number} props.numberPrecision\n * @param {Bool} props.shouldUseThousandSeparators\n * @param {Bool} props.shouldAbbreviateTrendValue\n * @returns {Object} results\n * @returns {Object} results.newMajorAndTrend\n * @returns {Object} results.updatedProps\n */\nexport const updateVizInSmallSpace = ({\n width,\n height,\n toRemoveList,\n majorValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n majorTextFontSize,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n}) => {\n let removeIndex = 0;\n let newProps = {}; // options need to be updated\n let newMajorAndTrend = {};\n let newTextSize = majorTextFontSize;\n\n // remove info on viz to make textFontSize >= 12px;\n while (newTextSize < 12 && removeIndex < toRemoveList.length) {\n const toRemove = toRemoveList[removeIndex];\n newProps = {\n ...newProps,\n ...{\n [toRemove.key]: toRemove.value,\n },\n };\n\n newMajorAndTrend = getMajorAndTrend({\n majorValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n width,\n height,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n ...newProps,\n });\n\n newTextSize = newMajorAndTrend.majorTextFontSize;\n removeIndex += 1;\n }\n\n // truncate text if textFontSize is still less than 12\n if (newTextSize < 12) {\n const truncateValue = `${majorValue.toString().slice(0, 3)}...`;\n newMajorAndTrend = getMajorAndTrend({\n majorValue: truncateValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n width,\n height,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n ...newProps,\n });\n }\n\n return { newMajorAndTrend, updatedProps: newProps };\n};\n\n/*\n * @method computeSingleValueContent\n * @param {Object} props\n * @param {Number} props.contentWidth\n * @param {Number} props.contentHeight\n * @param {Number} props.containerWidth\n * @param {Number} props.containerHeight\n * @param {Number} props.majorValue // Major value\n * @param {Number} props.trendValue // Trend value\n * @param {Number} props.majorFontSize\n * @param {Number} props.trendFontSize\n * @param {String} props.trendDisplay\n * @param {String} props.unit // Unit for the value\n * @param {Number} props.numberPrecision\n * @param {Bool} props.shouldUseThousandSeparators\n * @param {Bool} props.shouldAbbreviateTrendValue\n * @param {Object} props.toRemoveList\n * @returns {Object} results\n * @returns {String} results.majorText\n * @returns {String} results.trendText\n * @returns {Number} results.majorTextFontSize\n * @returns {Number} results.trendTextFontSize\n * @returns {String} results.majorValueTitle\n * @returns {Object} results.smallVizProps\n */\nexport const computeSingleValueContent = ({\n contentWidth,\n contentHeight,\n containerWidth,\n containerHeight,\n majorValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n trendDisplay,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n toRemoveList,\n}) => {\n let { majorText, trendText, majorTextFontSize, trendTextFontSize } = getMajorAndTrend({\n majorValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n trendDisplay,\n width: contentWidth,\n height: contentHeight,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n });\n const majorValueTitle = majorText;\n let smallVizProps = {};\n\n // update viz in small space\n // if textFontSize is less than 12, remove extra info like sparkline, trendvalue, unit\n // or truncate major value to make the major font size >= 12\n if (majorTextFontSize < 12) {\n const { newMajorAndTrend, updatedProps } = updateVizInSmallSpace({\n width: containerWidth,\n height: containerHeight,\n toRemoveList,\n majorValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n majorTextFontSize,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n });\n\n ({ majorText, trendText, majorTextFontSize, trendTextFontSize } = newMajorAndTrend);\n smallVizProps = updatedProps;\n }\n return {\n majorText,\n trendText,\n majorTextFontSize,\n trendTextFontSize,\n majorValueTitle,\n smallVizProps,\n };\n};\n\nexport const minimallyTruncateStringToWidth = ({\n text,\n fontSize = DEFAULT_FONT,\n fontFamily = DEFAULT_FONT_FAMILY,\n fontWeight = 'normal',\n containerWidth,\n}) => {\n let textWidth = computeTextSize(text, `${fontWeight} ${fontSize}px ${fontFamily}`);\n let modifiedText = text;\n\n const ellipsesLength = computeTextSize('...', `${fontWeight} ${fontSize}px ${fontFamily}`);\n // `containerWidth - ellipsesLength > 0` condition ensures space even exists for text.\n if (containerWidth - ellipsesLength > 0 && textWidth > containerWidth) {\n // Truncates the content such that the truncated value + ellipses fit within the allocated space for the ellipses.\n // `textWidth > containerWidth - ellipsesLength` condition checks if text + ellipses exceeds container width.\n // `text.length > 1` condition included to keep at least the first number.\n while (textWidth + ellipsesLength > containerWidth && modifiedText.length > 1) {\n modifiedText = modifiedText.substring(0, modifiedText.length - 1);\n textWidth = computeTextSize(modifiedText, `normal ${fontSize}px ${fontFamily}`);\n }\n\n modifiedText = `${modifiedText}...`;\n }\n\n return modifiedText;\n};\n\n/*\n * @method computeSingleValueRadialContent\n * @param {Object} props\n * @param {Number} props.contentWidth\n * @param {Number} props.contentHeight\n * @param {Number} props.containerWidth\n * @param {Number} props.containerHeight\n * @param {Number} props.majorValue // Major value\n * @param {Number} props.trendValue // Trend value\n * @param {Number} props.majorFontSize\n * @param {Number} props.trendFontSize\n * @param {String} props.trendDisplay\n * @param {String} props.unit // Unit for the value\n * @param {Number} props.numberPrecision\n * @param {Bool} props.shouldUseThousandSeparators\n * @param {Bool} props.shouldAbbreviateTrendValue\n * @param {Object} props.toRemoveList\n * @param {Bool} props.smallViz\n * @returns {Object} results\n * @returns {String} results.majorText\n * @returns {String} results.trendText\n * @returns {Number} results.majorTextFontSize\n * @returns {Number} results.trendTextFontSize\n * @returns {String} results.majorValueTitle\n * @returns {Object} results.smallVizProps\n */\nexport const computeSingleValueRadialContent = ({\n contentWidth,\n contentHeight,\n containerWidth,\n containerHeight,\n majorValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n trendDisplay,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n smallViz,\n}) => {\n let { majorText, trendText, majorTextFontSize, trendTextFontSize } = getMajorAndTrend({\n majorValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n trendDisplay,\n width: contentWidth,\n height: contentHeight,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n });\n\n const majorValueTitle = majorText;\n let smallVizProps = {};\n\n // custom logic for viz in small space\n // if not showing the radial graph (if `smallViz` is true), then compute truncated major value\n // and font sizes\n if (smallViz) {\n const truncateValue = minimallyTruncateStringToWidth({\n text: majorValue,\n fontWeight: 'bold',\n fontSize: 12,\n containerWidth,\n });\n\n ({ majorText, trendText, majorTextFontSize, trendTextFontSize } = getMajorAndTrend({\n majorValue: truncateValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n width: containerWidth,\n height: containerHeight,\n unit,\n trendDisplay,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n }));\n\n smallVizProps = {\n trendDisplay,\n unit,\n };\n }\n\n return {\n majorText,\n trendText,\n majorTextFontSize,\n trendTextFontSize,\n majorValueTitle,\n smallVizProps,\n };\n};\n\n/**\n * Get the colors for a graph\n *\n * @method getGraphColors\n * @param {Object} options\n * @param {Bool} options.backgroundEnabled // Flag to turn on color mode\n * @param {String} options.backgroundColor // The current background color, overrides trend background color\n * @param {Object} options.defaultColors // Default colors by severity\n * @param {Function} options.customColorFormatter // must return { background, stroke } given a color\n * @returns {Object} { background, stroke } colors\n * @private\n */\nexport const getGraphColors = ({\n backgroundEnabled,\n backgroundColor,\n defaultColors,\n customColorFormatter,\n}) => {\n // Only do custom colors in block mode\n if (backgroundEnabled) {\n // Check if the user defined colors to use\n if (backgroundColor && typeof customColorFormatter === 'function') {\n return customColorFormatter(backgroundColor);\n }\n }\n\n return defaultColors.none;\n};\n\n/**\n * Adjust rgb value if it equals to 0 or 255\n * @method adjustRGB\n * @param {Number} rgb [0 - 255]\n * @param {Number} delta\n * @returns {Number} adjusted rgb\n * @private\n */\nexport const adjustRGB = (rgb, delta) => {\n if (rgb === 255) {\n return rgb - delta;\n }\n\n if (rgb === 0) {\n return rgb + delta;\n }\n\n return rgb;\n};\n\n/**\n * Modifies colors by multiplying by a given ratio\n * @method changeColor\n * @param {String} color // Color to modify\n * @param {Number} ratio // Float to modify color\n * @returns {String} new color\n * @private\n */\nconst changeColor = (color, ratio) => {\n const hex = color.replace(/(0x|#)/, '');\n const r = parseInt(hex.substr(0, 2), 16);\n const g = parseInt(hex.substr(2, 2), 16);\n const b = parseInt(hex.substr(4, 2), 16);\n\n // Multiply by given ratio, make sure is between 0 and 255;\n let newR = Math.max(Math.min(Math.floor(r * ratio), 255), 0);\n let newG = Math.max(Math.min(Math.floor(g * ratio), 255), 0);\n let newB = Math.max(Math.min(Math.floor(b * ratio), 255), 0);\n\n // If the color is not changed\n // case 1: the color is (0, 0 0)\n // lighten color (80, 80, 80)\n // darken color (40, 40, 40)\n // case 2: the color is (255, 255, 255)\n // lighten color (235, 235, 235)\n // darken color (175, 175, 175)\n // case 3: the color is e.g. (0, 255, 0)\n // new color (20, 235, 20)\n if (newR === r && newG === g && newB === b) {\n if (newR === 0 && newG === 0 && newB === 0) {\n if (ratio > 1) {\n newR = adjustRGB(newR, 80);\n newG = adjustRGB(newG, 80);\n newB = adjustRGB(newB, 80);\n } else {\n newR = adjustRGB(newR, 40);\n newG = adjustRGB(newG, 40);\n newB = adjustRGB(newB, 40);\n }\n } else if (newR === 255 && newG === 255 && newB === 255) {\n if (ratio > 1) {\n newR = adjustRGB(newR, 20);\n newG = adjustRGB(newG, 20);\n newB = adjustRGB(newB, 20);\n } else {\n newR = adjustRGB(newR, 80);\n newG = adjustRGB(newG, 80);\n newB = adjustRGB(newB, 80);\n }\n } else {\n newR = adjustRGB(newR, 20);\n newG = adjustRGB(newG, 20);\n newB = adjustRGB(newB, 20);\n }\n }\n\n return (\n `#${newR.toString(16).padStart(2, 0)}` +\n `${newG.toString(16).padStart(2, 0)}` +\n `${newB.toString(16).padStart(2, 0)}`\n );\n};\n\n/**\n * Lighten a given color\n * @method lighten\n * @param {String} color\n * @returns {String}\n * @private\n */\nexport const lighten = color => changeColor(color, 1.3);\n\n/**\n * Darkens a given color\n * @method darken\n * @param {String} color\n * @returns {String}\n * @private\n */\nexport const darken = color => changeColor(color, 0.5);\n\n/** consistent token structure: handle callback to add value and name in event payload\n * @method handleValueClickCallback\n * @param {Object} ev\n * @param {String | Number} majorValue\n * @param {String} majorValueField\n * @param {Number} trendValue\n * @param {Function} onValueClick\n */\nexport const handleValueClickCallback = (\n ev,\n majorValue,\n majorValueField,\n trendValue,\n onValueClick,\n trellisEnabled = false,\n trellisSplityBy = '',\n trellisKey = ''\n) => {\n let payload = {\n trendValue,\n value: majorValue,\n name: majorValueField,\n };\n if (trellisEnabled) {\n payload = { ...payload, 'trellis.name': trellisSplityBy, 'trellis.value': trellisKey };\n }\n return onValueClick({ ...ev, payload });\n};\n","module.exports = require(\"lodash\");","module.exports = require(\"@splunk/visualizations-shared/propUtils\");","module.exports = require(\"styled-components\");","module.exports = require(\"@babel/runtime/helpers/extends\");","module.exports = require(\"@splunk/visualizations-shared/colorConstants\");","module.exports = require(\"@splunk/visualizations-shared/domUtils\");","module.exports = require(\"@babel/runtime/helpers/defineProperty\");"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"react\"","webpack:///external \"prop-types\"","webpack:///./src/SingleValueBasic/TrendValue.jsx","webpack:///./src/SingleValueBasic/MajorValue.jsx","webpack:///./src/SingleValueBasic/SingleValueBasic.jsx","webpack:///external \"@splunk/react-icons/enterprise/ArrowUp\"","webpack:///external \"@splunk/react-icons/enterprise/ArrowDown\"","webpack:///external \"cssesc\"","webpack:///external \"@splunk/visualizations-shared/numberUtils\"","webpack:///external \"@babel/runtime/helpers/defineProperty\"","webpack:///external \"@splunk/ui-utils/i18n\"","webpack:///./src/common/utils/singleValueUtils.js","webpack:///external \"lodash\"","webpack:///external \"@splunk/visualizations-shared/propUtils\"","webpack:///external \"styled-components\"","webpack:///external \"@babel/runtime/helpers/extends\"","webpack:///external \"@splunk/visualizations-shared/colorConstants\"","webpack:///external \"@splunk/visualizations-shared/domUtils\""],"names":["Column","styled","props","parseInt","Text","SingleValueContent","fontSize","color","value","text","TrendIndicator","ariaLabel","parseFloat","_","T","string","Row","validUnitPositions","unitPosition","title","onValueClick","unit","sanitizedUnit","cssesc","wrap","quotes","sanitizedUnitPosition","handleKeyDown","e","getAligment","SingleValueBasic","majorColor","majorTextFontSize","majorText","majorValueTitle","trendColor","trendTextFontSize","trendText","showTrendIndicator","underLabel","underLabelFontSize","underLabelColor","align","trendIndicatorEnabled","SingleValueTrendValue","DEFAULT_FONT","DEFAULT_FONT_FAMILY","SVR_PADDING","top","bottom","left","right","alignMap","center","shouldShowTrend","trendDisplay","isLoadingOrNoColumns","data","get","noColumns","loading","getFormattedColor","formatColor","hasBackground","backgroundColor","isIdenticalColor","colorA","colorB","getDefaultColorWithBg","defaultFontColor","defaultBlockFontColor","getMajorColor","getTrendColor","trendValue","majorValue","customizedBgColor","defaultColors","Number","defaultBackgroundColor","isInvalidTrend","computeColors","backgroundEnabled","computeText","numberPrecision","shouldUseThousandSeparators","shouldAbbreviateTrendValue","formatNumber","useThousandSeparators","useTrendUnits","getMajorText","getTrendText","compute","isNumerial","showPercent","diff","Math","val","computeFontSize","width","height","fontFamily","fontWeight","widthInDefaultFont","computeTextSize","getMajorFontSize","spaceRatio","majorTextCalc","getTrendFontSize","trendFontSize","getUnderLabelHeight","getUnderLabel","getMajorAndTrend","majorFontSize","majorTextSpaceRatio","textContentWidth","textContentHeight","updateVizInSmallSpace","toRemoveList","removeIndex","newProps","newMajorAndTrend","newTextSize","toRemove","truncateValue","updatedProps","computeSingleValueContent","contentWidth","contentHeight","containerWidth","containerHeight","smallVizProps","minimallyTruncateStringToWidth","textWidth","modifiedText","ellipsesLength","computeSingleValueRadialContent","smallViz","getGraphColors","customColorFormatter","adjustRGB","rgb","changeColor","hex","r","g","b","newR","newG","newB","ratio","lighten","darken","handleValueClickCallback","trellisEnabled","trellisSplityBy","trellisKey","payload","name","majorValueField"],"mappings":"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","file":"SingleValueBasic.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 102);\n","module.exports = require(\"react\");","module.exports = require(\"prop-types\");","import React from 'react';\nimport T from 'prop-types';\nimport styled from 'styled-components';\nimport ArrowUp from '@splunk/react-icons/enterprise/ArrowUp';\nimport ArrowDown from '@splunk/react-icons/enterprise/ArrowDown';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport { DEFAULT_FONT_FAMILY } from '../common/utils/singleValueUtils';\n\nconst Column = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: ${props => props.justify || 'flex-end'};\n height: ${props => props.size || 12}px;\n ${props => (props.size ? `margin: 0 ${parseInt(props.size, 10) * 0.2 || 5}px;` : '')};\n`;\n\nconst Text = styled.div`\n white-space: nowrap;\n font-size: ${props => props.size || 12}px;\n color: ${props => props.color || '#000'};\n font-family: ${DEFAULT_FONT_FAMILY};\n height: ${props => props.size || 12}px;\n line-height: ${props => props.size || 12}px;\n display: flex;\n align-self: baseline;\n ${props => (props.size ? `margin-left: ${parseInt(props.size, 10) * 0.2 || 5}px;` : '')};\n`;\n\nconst SingleValueContent = ({ fontSize, color, value, text }) => {\n let TrendIndicator = false;\n let ariaLabel = false;\n\n if (parseFloat(value, 10) > 0) {\n TrendIndicator = ArrowUp;\n ariaLabel = _('increase');\n } else if (parseFloat(value, 10) < 0) {\n TrendIndicator = ArrowDown;\n ariaLabel = _('decrease');\n }\n\n return (\n <Column justify=\"flex-end\" size={fontSize}>\n <Text data-test=\"trendValueIndicator\" size={fontSize} color={color}>\n {TrendIndicator && <TrendIndicator aria-label={ariaLabel} />}\n </Text>\n <Text data-test=\"trendValue\" size={fontSize} color={color}>\n {`${text}`}\n </Text>\n </Column>\n );\n};\n\nSingleValueContent.propTypes = {\n fontSize: T.number,\n color: T.string,\n value: T.oneOfType([T.string, T.number]),\n text: T.string,\n};\n\nexport default SingleValueContent;\n","import React from 'react';\nimport T from 'prop-types';\nimport styled from 'styled-components';\nimport cssesc from 'cssesc';\nimport { DEFAULT_FONT_FAMILY } from '../common/utils/singleValueUtils';\n\nconst Row = styled.div`\n display: flex;\n flex-direction: row;\n align-items: flex-end;\n justify-content: left;\n height: ${props => props.size}px;\n line-height: ${props => props.size}px;\n`;\n\nconst Text = styled.div`\n white-space: nowrap;\n height: 100%;\n font-size: ${props => props.size || 12}px;\n color: ${props => props.color};\n font-family: ${DEFAULT_FONT_FAMILY};\n font-weight: bold;\n &:hover {\n text-decoration: ${props => (props.showUnderline ? 'underline' : 'inherit')};\n cursor: ${props => (props.showUnderline ? 'pointer' : 'inherit')};\n }\n ${props => {\n if (!props.pseudoContent || !props.pseudoContentPosition) {\n return '';\n }\n return `&:${props.pseudoContentPosition} {\n // by default this pseudo element would inherit text-decoration from main element\n // and text-decoration could not be overwritten.\n // adding display: inline-block makes text decoration independent from main element.\n // => the unit will not be underlined if a user hovers over the main value\n display: inline-block;\n font-size: ${props.pseudoContentFontSize}px;\n position: relative;\n font-weight: normal;\n content: ${props.pseudoContent};\n }`;\n }}\n`;\n\nconst validUnitPositions = ['before', 'after'];\n\nconst SingleValueContent = ({ color, fontSize, unitPosition, title, value, onValueClick, unit }) => {\n let sanitizedUnit;\n let sanitizedUnitPosition;\n\n if (typeof unit === 'string') {\n sanitizedUnit = cssesc(unit, { wrap: true, quotes: 'double' });\n if (typeof unitPosition === 'string' && validUnitPositions.includes(unitPosition)) {\n sanitizedUnitPosition = unitPosition;\n } else {\n sanitizedUnitPosition = 'after';\n }\n }\n\n const handleKeyDown = e => {\n if (e.keyCode !== 13) {\n return;\n }\n e.preventDefault();\n onValueClick(e);\n };\n\n return (\n <Row size={fontSize}>\n <Text\n data-test=\"majorValue\"\n color={color}\n onClick={e => typeof onValueClick === 'function' && onValueClick(e)}\n showUnderline={!!onValueClick}\n size={fontSize}\n title={title}\n pseudoContent={sanitizedUnit}\n pseudoContentPosition={sanitizedUnitPosition}\n pseudoContentFontSize={fontSize * 0.6}\n tabIndex=\"0\"\n role=\"button\"\n onKeyDown={handleKeyDown}\n >\n {value}\n </Text>\n </Row>\n );\n};\n\nSingleValueContent.propTypes = {\n color: T.string,\n fontSize: T.number,\n unit: T.string,\n unitPosition: T.oneOf(validUnitPositions),\n value: T.oneOfType([T.string, T.number]),\n title: T.oneOfType([T.string, T.number]),\n onValueClick: T.oneOfType([T.bool, T.func]),\n};\n\nexport default SingleValueContent;\n","import React from 'react';\nimport T from 'prop-types';\nimport styled from 'styled-components';\nimport { DEFAULT_FONT_FAMILY, getAligment } from '../common/utils/singleValueUtils';\nimport TrendValue from './TrendValue';\nimport MajorValue from './MajorValue';\n\nconst Column = styled.div`\n display: flex;\n flex-direction: column;\n align-self: center;\n justify-content: center;\n`;\n\nconst Row = styled.div`\n display: flex;\n flex-direction: row;\n align-items: ${props => props.alignItems || 'center'};\n justify-content: ${props => getAligment(props.align)};\n`;\n\nconst Text = styled.div`\n font-weight: normal;\n white-space: nowrap;\n font-size: ${props => props.size || 12}px;\n color: ${props => props.color || '#000'};\n font-family: ${DEFAULT_FONT_FAMILY};\n height: ${props => props.size || 12}px;\n line-height: 1.2;\n margin: ${props => props.margin || 'inherit'};\n`;\n\nconst SingleValueBasic = ({ ...props }) => {\n const {\n majorColor,\n majorTextFontSize,\n majorText,\n majorValueTitle,\n trendColor,\n trendTextFontSize,\n trendText,\n showTrendIndicator,\n unit,\n unitPosition,\n underLabel,\n underLabelFontSize,\n underLabelColor,\n onValueClick,\n align,\n } = props;\n const trendIndicatorEnabled = trendText !== '' && showTrendIndicator;\n\n return (\n <Column>\n <Row\n alignItems=\"baseline\"\n align={align}\n data-test={`single-value-row-align-${getAligment(align)}`}\n >\n <MajorValue\n color={majorColor}\n fontSize={majorTextFontSize}\n unit={unit}\n unitPosition={unitPosition}\n value={majorText}\n title={majorValueTitle}\n onValueClick={onValueClick}\n />\n {trendIndicatorEnabled && (\n // Passing the same value for value and text is a temporary hold until completion of https://jira.splunk.com/browse/SCP-21371\n <TrendValue\n fontSize={trendTextFontSize}\n color={trendColor}\n value={trendText}\n text={trendText}\n />\n )}\n </Row>\n {underLabel && (\n <Row\n justify=\"center\"\n align={align}\n data-test={`single-value-row-align-${getAligment(align)}`}\n >\n <Text\n data-test=\"underLabel\"\n size={underLabelFontSize}\n color={underLabelColor}\n margin=\"0 6px\"\n >\n {underLabel}\n </Text>\n </Row>\n )}\n </Column>\n );\n};\n\nSingleValueBasic.propTypes = {\n majorText: T.string,\n majorColor: T.string,\n majorTextFontSize: T.number,\n majorValueTitle: T.string,\n trendText: T.string,\n trendTextFontSize: T.number,\n trendColor: T.string,\n showTrendIndicator: T.bool,\n unit: T.string,\n unitPosition: T.oneOf(['before', 'after']),\n underLabel: T.string,\n underLabelFontSize: T.number,\n underLabelColor: T.string,\n onValueClick: T.oneOfType([T.bool, T.func]),\n align: T.string,\n};\n\nexport const SingleValueTrendValue = TrendValue;\nexport default SingleValueBasic;\n","module.exports = require(\"@splunk/react-icons/enterprise/ArrowUp\");","module.exports = require(\"@splunk/react-icons/enterprise/ArrowDown\");","module.exports = require(\"cssesc\");","module.exports = require(\"@splunk/visualizations-shared/numberUtils\");","module.exports = require(\"@babel/runtime/helpers/defineProperty\");","module.exports = require(\"@splunk/ui-utils/i18n\");","import { get } from 'lodash';\nimport { isNumerial, formatNumber } from '@splunk/visualizations-shared/numberUtils';\nimport { computeTextSize } from '@splunk/visualizations-shared/domUtils';\nimport { formatColor } from '@splunk/visualizations-shared/propUtils';\nimport { DELTA_GREEN, DELTA_RED } from '@splunk/visualizations-shared/colorConstants';\n\nexport const DEFAULT_FONT = 12;\nexport const DEFAULT_FONT_FAMILY =\n '\"Splunk Platform Sans\", \"Proxima Nova\", \"Helvetica Neue\", Helvetica, Arial, sans-serif';\n\nexport const SVR_PADDING = { top: 12, bottom: 12, left: 16, right: 16 };\n\nexport const getAligment = align => {\n const alignMap = {\n left: 'start',\n center: 'center',\n right: 'end',\n };\n return alignMap[align] || 'center';\n};\n\n/**\n * @method shouldShowTrend\n * @param {String} trendDisplay\n * @returns {Bool}\n */\nexport const shouldShowTrend = trendDisplay => trendDisplay === 'absolute' || trendDisplay === 'percent';\n\n/**\n * @method isLoadingOrNoColumns\n * @param {Object} dataSources\n * @param {Boolean} loading\n * @returns {Boolean} return true if loading or without columns in dataSources\n */\nexport const isLoadingOrNoColumns = (dataSources, loading) => {\n const data = get(dataSources, 'primary.data.columns[0]', undefined);\n const noColumns = data === undefined;\n return loading || noColumns;\n};\n\n/**\n * Retrieve the valid formatted color\n * @method getFormattedColor\n * @param {String} color\n * @param {String} defaultColor\n * @returns {String} the formatted color\n */\nexport const getFormattedColor = (color, defaultColor) => formatColor(color) || formatColor(defaultColor);\n\n/**\n * Determines if there is a background color\n * @method hasBackground\n * @param {String} backgroundColor\n * @returns true for non-transparent background color\n */\nexport const hasBackground = backgroundColor => !!backgroundColor && backgroundColor !== 'transparent';\n\n/**\n * @method isIdenticalColor\n * @param {String} colorA\n * @param {String} colorB\n * @returns {Boolean}\n */\nexport const isIdenticalColor = (colorA, colorB) =>\n !!colorA && !!colorB && formatColor(colorA.toLowerCase()) === formatColor(colorB.toLowerCase());\n\n/*\n * @method getDefaultColorWithBg\n * @param {Object} props\n * @param {String} props.backgroundColor\n * @param {String} props.defaultFontColor\n * @param {String} props.defaultBlockFontColor\n * @returns {String} defaultColor\n */\nexport const getDefaultColorWithBg = ({ backgroundColor, defaultFontColor, defaultBlockFontColor }) =>\n isIdenticalColor(backgroundColor, defaultBlockFontColor) ? defaultFontColor : defaultBlockFontColor;\n\n/*\n * @method getMajorColor\n * return formatted majorColor.\n * @param {Object} props\n * @param {String} props.majorColor\n * @param {String} props.backgroundColor\n * @param {String} props.defaultFontColor\n * @param {String} props.defaultBlockFontColor\n * @returns {String} majorColor\n */\nexport const getMajorColor = ({ majorColor, backgroundColor, defaultFontColor, defaultBlockFontColor }) => {\n // If backgroundColor is set, but no majorColor,\n // the default majorColor will turn to be defaultBlockFontColor.\n // eg: major color will turn to be white in enterprise mode.\n // however, if the bgColor is the same as defaultBlockFontColor, use defaultFontColor.\n if (hasBackground(backgroundColor) && !majorColor) {\n return getDefaultColorWithBg({\n backgroundColor,\n defaultFontColor,\n defaultBlockFontColor,\n });\n }\n\n return getFormattedColor(majorColor, defaultFontColor);\n};\n\n/**\n * Get the color for the trend components\n * @method getTrendColor\n * @param {Object} props\n * @param {String} props.trendColor The trendColor value determined from encoding\n * @param {Number} props.trendValue\n * @param {Number} props.majorValue\n * @param {String} props.customizedBgColor\n * @param {String} props.trendDisplay absolute || percent || off\n * @param {Object} defaultColors\n * @returns {String} trendColor\n */\nexport const getTrendColor = ({\n trendColor,\n trendValue,\n majorValue,\n customizedBgColor,\n trendDisplay,\n defaultColors,\n}) => {\n if (trendColor) {\n return trendColor;\n }\n\n if (Number.isNaN(Number(trendValue))) {\n return undefined;\n }\n\n const { defaultFontColor, defaultBlockFontColor, defaultBackgroundColor } = defaultColors;\n\n // if user defined a backgroundColor, the default trend color will be defaultBlockFontColor\n if (\n hasBackground(customizedBgColor) &&\n !isIdenticalColor(customizedBgColor, defaultBackgroundColor) &&\n !isIdenticalColor(customizedBgColor, defaultBlockFontColor)\n ) {\n return defaultBlockFontColor;\n }\n\n // if trendDisplay is percent, and trendValue === value\n // the trend percent = trendValue / (value - trendValue) will return Infinity\n const isInvalidTrend = trendDisplay === 'percent' && trendValue === parseFloat(majorValue);\n\n if (trendValue === 0 || isInvalidTrend) {\n return defaultFontColor;\n }\n\n return trendValue > 0 ? DELTA_GREEN : DELTA_RED;\n};\n\n/**\n * Computes visualization properties for display component\n * @method computeColors\n * @param {Object} props all viz props\n * @param {Object} defaultColors defaultColors from theme\n * @returns {Object} result\n * @returns {Boolean} backgroundEnabled\n * @returns {String} backgroundColor\n * @returns {String} majorColor\n * @returns {String} trendColor\n * @returns {String} underLabelColor\n */\nexport const computeColors = (props, defaultColors) => {\n const backgroundColor = getFormattedColor(props.backgroundColor, defaultColors.defaultBackgroundColor);\n const backgroundEnabled = hasBackground(backgroundColor);\n const majorColor = getMajorColor({\n majorColor: props.majorColor,\n backgroundColor,\n defaultFontColor: defaultColors.defaultFontColor,\n defaultBlockFontColor: defaultColors.defaultBlockFontColor,\n });\n const trendColor = getTrendColor({\n trendColor: props.trendColor,\n trendValue: props.trendValue,\n majorValue: props.majorValue,\n customizedBgColor: props.backgroundColor,\n trendDisplay: props.trendDisplay,\n defaultColors,\n });\n // todo: need change it to not depend on majorColor\n const underLabelColor = majorColor;\n\n return {\n backgroundColor,\n backgroundEnabled,\n majorColor,\n trendColor,\n underLabelColor,\n };\n};\n\n/**\n * Format and return the value (major/trend)\n * @method computeText\n * @param {Object} props\n * @param {Number} props.value // The major/trend value\n * @param {Number} props.numberPrecision\n * @param {Bool} props.shouldUseThousandSeparators\n * @param {Bool} props.shouldAbbreviateTrendValue\n * @returns {Number} major or trend text\n */\nexport const computeText = ({\n value,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n}) => {\n let text = isNumerial(value)\n ? formatNumber(value, numberPrecision, {\n useThousandSeparators: shouldUseThousandSeparators, // todo: need update formatNumber\n useTrendUnits: shouldAbbreviateTrendValue,\n })\n : value;\n // When text is undefined, return empty string\n text = text || '';\n return text;\n};\n\n/*\n * @method getMajorText\n * @param {Object} props\n * @param {Number} props.majorValue\n * @param {Number} props.numberPrecision\n * @param {Bool} props.shouldUseThousandSeparators\n * @returns {String} majorText\n */\nexport const getMajorText = ({ majorValue, numberPrecision, shouldUseThousandSeparators }) =>\n computeText({\n value: majorValue === null ? 'N/A' : majorValue, // if majorValue is null, use `N/A`.\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue: false,\n });\n\n/*\n * @method getTrendText\n * @param {Object} props\n * @param {Number} props.majorValue\n * @param {Number} props.trendValue\n * @param {String} props.trendDisplay\n * @param {Number} props.numberPrecision\n * @param {Bool} props.shouldUseThousandSeparators\n * @param {Bool} props.shouldAbbreviateTrendValue\n * @returns {String} trendText\n */\nexport const getTrendText = ({\n majorValue,\n trendValue,\n trendDisplay,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n}) => {\n const compute = value =>\n computeText({\n value,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n });\n\n if (trendValue === '' || !isNumerial(trendValue)) {\n return '';\n }\n const showPercent = trendDisplay === 'percent';\n if (!showPercent) {\n return compute(trendValue);\n }\n\n const diff = Math.abs(trendValue - majorValue);\n let val = Math.round((trendValue / diff) * 100);\n if (trendValue === 0 && diff === 0) {\n val = 0;\n }\n\n if (!Number.isFinite(val)) {\n return 'N/A';\n }\n const text = compute(val);\n\n return `${text}%`;\n};\n\n/**\n * Helper to determine the font size for an element\n * @method computeFontSize\n * @param {String} text The string to find a size for\n * @param {Object} dimensions\n * @param {Number} dimensions.width The width of the container\n * @param {Number} dimensions.height The height of the container\n * @param {String} [fontFamily='\"Splunk Platform Sans\" ...'] The font being used\n * @param {String} [fontWeight='normal'] Boldness of font\n * @returns {Number} The size to use for fontSize styles\n */\nexport const computeFontSize = (\n text,\n { width, height },\n fontFamily = DEFAULT_FONT_FAMILY,\n fontWeight = 'normal'\n) => {\n const widthInDefaultFont = computeTextSize(text, `${fontWeight} ${DEFAULT_FONT}px ${fontFamily}`);\n const fontSize = Math.min(\n (width / widthInDefaultFont) * DEFAULT_FONT,\n (height / DEFAULT_FONT) * DEFAULT_FONT\n );\n return parseInt(fontSize, 10);\n};\n\n/*\n * @method getMajorFontSize\n * @param {Object} props\n * @param {Number} props.width\n * @param {Number} props.height\n * @param {String} props.unit\n * @param {String} props.majorText\n * @param {Number} props.spaceRatio\n * @returns {Number} majorFontSize\n */\nexport const getMajorFontSize = ({ width, height, unit, majorText, spaceRatio = 1 }) => {\n const majorTextCalc = unit ? `${unit}${majorText}` : majorText;\n return computeFontSize(majorTextCalc, {\n width: width * spaceRatio,\n height,\n });\n};\n\n/*\n * @method getTrendFontSize\n * @param {Object} props\n * @param {Number} props.width\n * @param {Number} props.height\n * @param {String} props.trendText\n * @param {Number} props.spaceRatio\n * @returns {Number} trendFontSize\n */\nexport const getTrendFontSize = ({ width, height, trendText, spaceRatio = 1 }) => {\n let trendFontSize = 12;\n if (spaceRatio > 0) {\n trendFontSize = computeFontSize(trendText, {\n width: width * spaceRatio,\n height,\n });\n trendFontSize = parseInt(trendFontSize, 10) * spaceRatio;\n }\n return trendFontSize;\n};\n\n/*\n * The height of underLabel should no more than 12px\n * @param {Number} height\n * @return {Number} height || DEFAULT_FONT\n */\nexport const getUnderLabelHeight = height => (height > DEFAULT_FONT ? DEFAULT_FONT : height);\n\n/*\n * @param {Object} config\n * @param {String} underLabel\n * @param {Number} width width of underLabel\n * @param {Number} height height of underLabel\n * @param {Number} fond size of underLabel\n */\nexport const getUnderLabel = ({ underLabel, width, height }) =>\n // todo: may need truncate underLabel later\n computeFontSize(underLabel, {\n width,\n height,\n });\n\n/**\n * Compute value and font size for major and trend\n * @method getMajorAndTrend\n * @param {Object} props\n * @param {Number} props.width // Width of the text container\n * @param {Number} props.height // Height of the text container\n * @param {Number} props.majorValue // Major value\n * @param {Number} props.trendValue // Trend value\n * @param {Number} props.majorFontSize\n * @param {Number} props.trendFontSize\n * @param {String} props.trendDisplay\n * @param {String} props.unit // Unit for the value\n * @param {Number} props.numberPrecision\n * @param {Bool} props.shouldUseThousandSeparators\n * @param {Bool} props.shouldAbbreviateTrendValue\n * @returns {Number, Number, Number, Number} Major text, trend text, major text size, trend text size\n */\nexport const getMajorAndTrend = ({\n width,\n height,\n majorValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n trendDisplay,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n}) => {\n const majorTextSpaceRatio = isNumerial(trendValue) && shouldShowTrend(trendDisplay) ? 0.6 : 1;\n const textContentWidth = width * 0.9;\n const textContentHeight = height * 0.9;\n const majorText = getMajorText({ majorValue, numberPrecision, shouldUseThousandSeparators });\n const majorTextFontSize =\n majorFontSize ||\n getMajorFontSize({\n width: textContentWidth,\n height: textContentHeight,\n unit,\n majorText,\n spaceRatio: majorTextSpaceRatio,\n });\n const trendText = getTrendText({\n majorValue,\n trendValue,\n trendDisplay,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n });\n\n const trendTextFontSize =\n trendFontSize ||\n getTrendFontSize({\n width: textContentWidth,\n height: textContentHeight,\n trendText,\n spaceRatio: 1 - majorTextSpaceRatio,\n });\n\n return {\n majorText,\n majorTextFontSize,\n trendText,\n trendTextFontSize,\n };\n};\n\n/*\n * @method updateVizInSmallSpace\n * @param {Object} props\n * @param {Number} props.width // Width of the text container\n * @param {Number} props.height // Height of the text container\n * @param {Object} props.toRemoveList\n * @param {Number} props.majorValue // Major value\n * @param {Number} props.trendValue // Trend value\n * @param {Number} props.majorFontSize\n * @param {Number} props.trendFontSize\n * @param {Number} props.majorTextFontSize\n * @param {String} props.unit // Unit for the value\n * @param {Number} props.numberPrecision\n * @param {Bool} props.shouldUseThousandSeparators\n * @param {Bool} props.shouldAbbreviateTrendValue\n * @returns {Object} results\n * @returns {Object} results.newMajorAndTrend\n * @returns {Object} results.updatedProps\n */\nexport const updateVizInSmallSpace = ({\n width,\n height,\n toRemoveList,\n majorValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n majorTextFontSize,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n}) => {\n let removeIndex = 0;\n let newProps = {}; // options need to be updated\n let newMajorAndTrend = {};\n let newTextSize = majorTextFontSize;\n\n // remove info on viz to make textFontSize >= 12px;\n while (newTextSize < 12 && removeIndex < toRemoveList.length) {\n const toRemove = toRemoveList[removeIndex];\n newProps = {\n ...newProps,\n ...{\n [toRemove.key]: toRemove.value,\n },\n };\n\n newMajorAndTrend = getMajorAndTrend({\n majorValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n width,\n height,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n ...newProps,\n });\n\n newTextSize = newMajorAndTrend.majorTextFontSize;\n removeIndex += 1;\n }\n\n // truncate text if textFontSize is still less than 12\n if (newTextSize < 12) {\n const truncateValue = `${majorValue.toString().slice(0, 3)}...`;\n newMajorAndTrend = getMajorAndTrend({\n majorValue: truncateValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n width,\n height,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n ...newProps,\n });\n }\n\n return { newMajorAndTrend, updatedProps: newProps };\n};\n\n/*\n * @method computeSingleValueContent\n * @param {Object} props\n * @param {Number} props.contentWidth\n * @param {Number} props.contentHeight\n * @param {Number} props.containerWidth\n * @param {Number} props.containerHeight\n * @param {Number} props.majorValue // Major value\n * @param {Number} props.trendValue // Trend value\n * @param {Number} props.majorFontSize\n * @param {Number} props.trendFontSize\n * @param {String} props.trendDisplay\n * @param {String} props.unit // Unit for the value\n * @param {Number} props.numberPrecision\n * @param {Bool} props.shouldUseThousandSeparators\n * @param {Bool} props.shouldAbbreviateTrendValue\n * @param {Object} props.toRemoveList\n * @returns {Object} results\n * @returns {String} results.majorText\n * @returns {String} results.trendText\n * @returns {Number} results.majorTextFontSize\n * @returns {Number} results.trendTextFontSize\n * @returns {String} results.majorValueTitle\n * @returns {Object} results.smallVizProps\n */\nexport const computeSingleValueContent = ({\n contentWidth,\n contentHeight,\n containerWidth,\n containerHeight,\n majorValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n trendDisplay,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n toRemoveList,\n}) => {\n let { majorText, trendText, majorTextFontSize, trendTextFontSize } = getMajorAndTrend({\n majorValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n trendDisplay,\n width: contentWidth,\n height: contentHeight,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n });\n const majorValueTitle = majorText;\n let smallVizProps = {};\n\n // update viz in small space\n // if textFontSize is less than 12, remove extra info like sparkline, trendvalue, unit\n // or truncate major value to make the major font size >= 12\n if (majorTextFontSize < 12) {\n const { newMajorAndTrend, updatedProps } = updateVizInSmallSpace({\n width: containerWidth,\n height: containerHeight,\n toRemoveList,\n majorValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n majorTextFontSize,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n });\n\n ({ majorText, trendText, majorTextFontSize, trendTextFontSize } = newMajorAndTrend);\n smallVizProps = updatedProps;\n }\n return {\n majorText,\n trendText,\n majorTextFontSize,\n trendTextFontSize,\n majorValueTitle,\n smallVizProps,\n };\n};\n\nexport const minimallyTruncateStringToWidth = ({\n text,\n fontSize = DEFAULT_FONT,\n fontFamily = DEFAULT_FONT_FAMILY,\n fontWeight = 'normal',\n containerWidth,\n}) => {\n let textWidth = computeTextSize(text, `${fontWeight} ${fontSize}px ${fontFamily}`);\n let modifiedText = text;\n\n const ellipsesLength = computeTextSize('...', `${fontWeight} ${fontSize}px ${fontFamily}`);\n // `containerWidth - ellipsesLength > 0` condition ensures space even exists for text.\n if (containerWidth - ellipsesLength > 0 && textWidth > containerWidth) {\n // Truncates the content such that the truncated value + ellipses fit within the allocated space for the ellipses.\n // `textWidth > containerWidth - ellipsesLength` condition checks if text + ellipses exceeds container width.\n // `text.length > 1` condition included to keep at least the first number.\n while (textWidth + ellipsesLength > containerWidth && modifiedText.length > 1) {\n modifiedText = modifiedText.substring(0, modifiedText.length - 1);\n textWidth = computeTextSize(modifiedText, `normal ${fontSize}px ${fontFamily}`);\n }\n\n modifiedText = `${modifiedText}...`;\n }\n\n return modifiedText;\n};\n\n/*\n * @method computeSingleValueRadialContent\n * @param {Object} props\n * @param {Number} props.contentWidth\n * @param {Number} props.contentHeight\n * @param {Number} props.containerWidth\n * @param {Number} props.containerHeight\n * @param {Number} props.majorValue // Major value\n * @param {Number} props.trendValue // Trend value\n * @param {Number} props.majorFontSize\n * @param {Number} props.trendFontSize\n * @param {String} props.trendDisplay\n * @param {String} props.unit // Unit for the value\n * @param {Number} props.numberPrecision\n * @param {Bool} props.shouldUseThousandSeparators\n * @param {Bool} props.shouldAbbreviateTrendValue\n * @param {Object} props.toRemoveList\n * @param {Bool} props.smallViz\n * @returns {Object} results\n * @returns {String} results.majorText\n * @returns {String} results.trendText\n * @returns {Number} results.majorTextFontSize\n * @returns {Number} results.trendTextFontSize\n * @returns {String} results.majorValueTitle\n * @returns {Object} results.smallVizProps\n */\nexport const computeSingleValueRadialContent = ({\n contentWidth,\n contentHeight,\n containerWidth,\n containerHeight,\n majorValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n trendDisplay,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n smallViz,\n}) => {\n let { majorText, trendText, majorTextFontSize, trendTextFontSize } = getMajorAndTrend({\n majorValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n trendDisplay,\n width: contentWidth,\n height: contentHeight,\n unit,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n });\n\n const majorValueTitle = majorText;\n let smallVizProps = {};\n\n // custom logic for viz in small space\n // if not showing the radial graph (if `smallViz` is true), then compute truncated major value\n // and font sizes\n if (smallViz) {\n const truncateValue = minimallyTruncateStringToWidth({\n text: majorValue,\n fontWeight: 'bold',\n fontSize: 12,\n containerWidth,\n });\n\n ({ majorText, trendText, majorTextFontSize, trendTextFontSize } = getMajorAndTrend({\n majorValue: truncateValue,\n trendValue,\n majorFontSize,\n trendFontSize,\n width: containerWidth,\n height: containerHeight,\n unit,\n trendDisplay,\n numberPrecision,\n shouldUseThousandSeparators,\n shouldAbbreviateTrendValue,\n }));\n\n smallVizProps = {\n trendDisplay,\n unit,\n };\n }\n\n return {\n majorText,\n trendText,\n majorTextFontSize,\n trendTextFontSize,\n majorValueTitle,\n smallVizProps,\n };\n};\n\n/**\n * Get the colors for a graph\n *\n * @method getGraphColors\n * @param {Object} options\n * @param {Bool} options.backgroundEnabled // Flag to turn on color mode\n * @param {String} options.backgroundColor // The current background color, overrides trend background color\n * @param {Object} options.defaultColors // Default colors by severity\n * @param {Function} options.customColorFormatter // must return { background, stroke } given a color\n * @returns {Object} { background, stroke } colors\n * @private\n */\nexport const getGraphColors = ({\n backgroundEnabled,\n backgroundColor,\n defaultColors,\n customColorFormatter,\n}) => {\n // Only do custom colors in block mode\n if (backgroundEnabled) {\n // Check if the user defined colors to use\n if (backgroundColor && typeof customColorFormatter === 'function') {\n return customColorFormatter(backgroundColor);\n }\n }\n\n return defaultColors.none;\n};\n\n/**\n * Adjust rgb value if it equals to 0 or 255\n * @method adjustRGB\n * @param {Number} rgb [0 - 255]\n * @param {Number} delta\n * @returns {Number} adjusted rgb\n * @private\n */\nexport const adjustRGB = (rgb, delta) => {\n if (rgb === 255) {\n return rgb - delta;\n }\n\n if (rgb === 0) {\n return rgb + delta;\n }\n\n return rgb;\n};\n\n/**\n * Modifies colors by multiplying by a given ratio\n * @method changeColor\n * @param {String} color // Color to modify\n * @param {Number} ratio // Float to modify color\n * @returns {String} new color\n * @private\n */\nconst changeColor = (color, ratio) => {\n const hex = color.replace(/(0x|#)/, '');\n const r = parseInt(hex.substr(0, 2), 16);\n const g = parseInt(hex.substr(2, 2), 16);\n const b = parseInt(hex.substr(4, 2), 16);\n\n // Multiply by given ratio, make sure is between 0 and 255;\n let newR = Math.max(Math.min(Math.floor(r * ratio), 255), 0);\n let newG = Math.max(Math.min(Math.floor(g * ratio), 255), 0);\n let newB = Math.max(Math.min(Math.floor(b * ratio), 255), 0);\n\n // If the color is not changed\n // case 1: the color is (0, 0 0)\n // lighten color (80, 80, 80)\n // darken color (40, 40, 40)\n // case 2: the color is (255, 255, 255)\n // lighten color (235, 235, 235)\n // darken color (175, 175, 175)\n // case 3: the color is e.g. (0, 255, 0)\n // new color (20, 235, 20)\n if (newR === r && newG === g && newB === b) {\n if (newR === 0 && newG === 0 && newB === 0) {\n if (ratio > 1) {\n newR = adjustRGB(newR, 80);\n newG = adjustRGB(newG, 80);\n newB = adjustRGB(newB, 80);\n } else {\n newR = adjustRGB(newR, 40);\n newG = adjustRGB(newG, 40);\n newB = adjustRGB(newB, 40);\n }\n } else if (newR === 255 && newG === 255 && newB === 255) {\n if (ratio > 1) {\n newR = adjustRGB(newR, 20);\n newG = adjustRGB(newG, 20);\n newB = adjustRGB(newB, 20);\n } else {\n newR = adjustRGB(newR, 80);\n newG = adjustRGB(newG, 80);\n newB = adjustRGB(newB, 80);\n }\n } else {\n newR = adjustRGB(newR, 20);\n newG = adjustRGB(newG, 20);\n newB = adjustRGB(newB, 20);\n }\n }\n\n return (\n `#${newR.toString(16).padStart(2, 0)}` +\n `${newG.toString(16).padStart(2, 0)}` +\n `${newB.toString(16).padStart(2, 0)}`\n );\n};\n\n/**\n * Lighten a given color\n * @method lighten\n * @param {String} color\n * @returns {String}\n * @private\n */\nexport const lighten = color => changeColor(color, 1.3);\n\n/**\n * Darkens a given color\n * @method darken\n * @param {String} color\n * @returns {String}\n * @private\n */\nexport const darken = color => changeColor(color, 0.5);\n\n/** consistent token structure: handle callback to add value and name in event payload\n * @method handleValueClickCallback\n * @param {Object} ev\n * @param {String | Number} majorValue\n * @param {String} majorValueField\n * @param {Number} trendValue\n * @param {Function} onValueClick\n */\nexport const handleValueClickCallback = (\n ev,\n majorValue,\n majorValueField,\n trendValue,\n onValueClick,\n trellisEnabled = false,\n trellisSplityBy = '',\n trellisKey = ''\n) => {\n let payload = {\n trendValue,\n value: majorValue,\n name: majorValueField,\n };\n if (trellisEnabled) {\n payload = { ...payload, 'trellis.name': trellisSplityBy, 'trellis.value': trellisKey };\n }\n return onValueClick({ ...ev, payload });\n};\n","module.exports = require(\"lodash\");","module.exports = require(\"@splunk/visualizations-shared/propUtils\");","module.exports = require(\"styled-components\");","module.exports = require(\"@babel/runtime/helpers/extends\");","module.exports = require(\"@splunk/visualizations-shared/colorConstants\");","module.exports = require(\"@splunk/visualizations-shared/domUtils\");"],"sourceRoot":""}