@splunk/visualizations 26.2.1 → 26.4.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 (150) hide show
  1. package/Area.config.js +92 -595
  2. package/Area.config.js.map +1 -1
  3. package/Area.js +296 -801
  4. package/Area.js.map +1 -1
  5. package/Bar.config.js +93 -562
  6. package/Bar.config.js.map +1 -1
  7. package/Bar.js +299 -770
  8. package/Bar.js.map +1 -1
  9. package/Bubble.config.js +84 -483
  10. package/Bubble.config.js.map +1 -1
  11. package/Bubble.js +286 -687
  12. package/Bubble.js.map +1 -1
  13. package/ChoroplethSvg.config.js +77 -202
  14. package/ChoroplethSvg.config.js.map +1 -1
  15. package/ChoroplethSvg.js +272 -400
  16. package/ChoroplethSvg.js.map +1 -1
  17. package/Column.config.js +93 -600
  18. package/Column.config.js.map +1 -1
  19. package/Column.js +299 -808
  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 +233 -356
  24. package/Ellipse.js.map +1 -1
  25. package/Events.config.js +62 -283
  26. package/Events.config.js.map +1 -1
  27. package/Events.js +326 -530
  28. package/Events.js.map +1 -1
  29. package/FillerGauge.config.js +91 -220
  30. package/FillerGauge.config.js.map +1 -1
  31. package/FillerGauge.js +267 -401
  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 +217 -327
  36. package/Image.js.map +1 -1
  37. package/Line.config.js +92 -607
  38. package/Line.config.js.map +1 -1
  39. package/Line.js +297 -814
  40. package/Line.js.map +1 -1
  41. package/LinkGraph.config.js +75 -257
  42. package/LinkGraph.config.js.map +1 -1
  43. package/LinkGraph.js +1755 -17415
  44. package/LinkGraph.js.map +1 -1
  45. package/MIGRATION.md +6 -0
  46. package/Map.config.js +128 -1123
  47. package/Map.config.js.map +1 -1
  48. package/Map.js +470 -782
  49. package/Map.js.map +1 -1
  50. package/Markdown.config.js +62 -189
  51. package/Markdown.config.js.map +1 -1
  52. package/Markdown.js +272 -401
  53. package/Markdown.js.map +1 -1
  54. package/MarkerGauge.config.js +138 -298
  55. package/MarkerGauge.config.js.map +1 -1
  56. package/MarkerGauge.js +309 -470
  57. package/MarkerGauge.js.map +1 -1
  58. package/ParallelCoordinates.config.js +72 -192
  59. package/ParallelCoordinates.config.js.map +1 -1
  60. package/ParallelCoordinates.js +333 -442
  61. package/ParallelCoordinates.js.map +1 -1
  62. package/Pie.config.js +77 -241
  63. package/Pie.config.js.map +1 -1
  64. package/Pie.js +336 -471
  65. package/Pie.js.map +1 -1
  66. package/Punchcard.config.js +72 -306
  67. package/Punchcard.config.js.map +1 -1
  68. package/Punchcard.js +356 -583
  69. package/Punchcard.js.map +1 -1
  70. package/Rectangle.config.js +211 -347
  71. package/Rectangle.config.js.map +1 -1
  72. package/Rectangle.js +371 -509
  73. package/Rectangle.js.map +1 -1
  74. package/Sankey.config.js +72 -214
  75. package/Sankey.config.js.map +1 -1
  76. package/Sankey.js +343 -475
  77. package/Sankey.js.map +1 -1
  78. package/Scatter.config.js +86 -464
  79. package/Scatter.config.js.map +1 -1
  80. package/Scatter.js +1118 -1493
  81. package/Scatter.js.map +1 -1
  82. package/SingleValue.config.js +124 -411
  83. package/SingleValue.config.js.map +1 -1
  84. package/SingleValue.js +522 -789
  85. package/SingleValue.js.map +1 -1
  86. package/SingleValueBasic.js +73 -61
  87. package/SingleValueBasic.js.map +1 -1
  88. package/SingleValueIcon.config.js +123 -380
  89. package/SingleValueIcon.config.js.map +1 -1
  90. package/SingleValueIcon.js +508 -745
  91. package/SingleValueIcon.js.map +1 -1
  92. package/SingleValueRadial.config.js +121 -385
  93. package/SingleValueRadial.config.js.map +1 -1
  94. package/SingleValueRadial.js +1642 -1885
  95. package/SingleValueRadial.js.map +1 -1
  96. package/SparkLine.js +39 -39
  97. package/SparkLine.js.map +1 -1
  98. package/Table.config.js +82 -496
  99. package/Table.config.js.map +1 -1
  100. package/Table.js +416 -825
  101. package/Table.js.map +1 -1
  102. package/common/Charting.js +37 -57
  103. package/common/Charting.js.map +1 -1
  104. package/common/DocExampleWithVizSandbox.js +21 -21
  105. package/common/DocExampleWithVizSandbox.js.map +1 -1
  106. package/common/EventsDoc.js +18 -18
  107. package/common/EventsDoc.js.map +1 -1
  108. package/common/GaugeMajorTicks.js +4 -4
  109. package/common/GaugeMajorTicks.js.map +1 -1
  110. package/common/GaugeValueMarker.js +2 -2
  111. package/common/GaugeValueMarker.js.map +1 -1
  112. package/common/OptionsDoc.js +4 -4
  113. package/common/OptionsDoc.js.map +1 -1
  114. package/common/OverviewDoc.js +39 -40
  115. package/common/OverviewDoc.js.map +1 -1
  116. package/common/SplunkVisualization.js +2 -2
  117. package/common/SplunkVisualization.js.map +1 -1
  118. package/common/SplunkVisualizationApi.js +2 -2
  119. package/common/SplunkVisualizationApi.js.map +1 -1
  120. package/common/ThemesDoc.js +19 -19
  121. package/common/ThemesDoc.js.map +1 -1
  122. package/common/chartingUtils.js +2 -2
  123. package/common/chartingUtils.js.map +1 -1
  124. package/common/gaugeUtils.js +10 -10
  125. package/common/gaugeUtils.js.map +1 -1
  126. package/common/shapeUtils.js +10 -10
  127. package/common/shapeUtils.js.map +1 -1
  128. package/common/utils/configUtils.js +25 -155
  129. package/common/utils/configUtils.js.map +1 -1
  130. package/common/utils/dataUtils.js +87 -105
  131. package/common/utils/dataUtils.js.map +1 -1
  132. package/common/utils/featureFlagUtils.js +4 -4
  133. package/common/utils/featureFlagUtils.js.map +1 -1
  134. package/common/utils/hocUtils.js +2 -2
  135. package/common/utils/hocUtils.js.map +1 -1
  136. package/common/utils/mapUtils.js +51 -54
  137. package/common/utils/mapUtils.js.map +1 -1
  138. package/common/utils/singleValueUtils.js +30 -18
  139. package/common/utils/singleValueUtils.js.map +1 -1
  140. package/common/utils/testHelper.js +7 -36
  141. package/common/utils/testHelper.js.map +1 -1
  142. package/common/utils/trellisUtils.js +7 -6
  143. package/common/utils/trellisUtils.js.map +1 -1
  144. package/common/utils/urlUtils.js +2 -2
  145. package/common/utils/urlUtils.js.map +1 -1
  146. package/common/withDashboardViz.js +93 -101
  147. package/common/withDashboardViz.js.map +1 -1
  148. package/package.json +48 -50
  149. package/common/utils/layoutUtils.js +0 -115
  150. package/common/utils/layoutUtils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"lodash\"","webpack:///external \"@babel/runtime/helpers/defineProperty\"","webpack:///external \"@babel/runtime/helpers/toConsumableArray\"","webpack:///external \"react\"","webpack:///external \"@babel/runtime/helpers/slicedToArray\"","webpack:///external \"@splunk/visualization-encoding/utils/types\"","webpack:///external \"@babel/runtime/helpers/taggedTemplateLiteral\"","webpack:///external \"styled-components\"","webpack:///external \"@splunk/visualizations-shared/colorUtils\"","webpack:///./src/common/utils/mapUtils.ts","webpack:///external \"@splunk/visualization-encoding/utils/dsl\"","webpack:///external \"@splunk/visualizations-shared/hocUtils\"","webpack:///external \"@splunk/visualizations-shared/JSONSchemaUtils\"","webpack:///./src/Map/PureMap/BubbleLayer.tsx","webpack:///./src/Map/PureMap/MapUtils.ts","webpack:///external \"d3-scale\"","webpack:///external \"chroma-js\"","webpack:///external \"@splunk/visualization-color-palettes\"","webpack:///./src/Map/PureMap/MarkerWrapper.tsx","webpack:///external \"maplibre-gl\"","webpack:///./src/Map/PureMap/Tooltip.tsx","webpack:///external \"@splunk/react-ui/Popover\"","webpack:///external \"@splunk/ui-utils/i18n\""],"names":[],"mappings":"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","file":"mapUtils.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 = 42);\n","module.exports = require(\"lodash\");","module.exports = require(\"@babel/runtime/helpers/defineProperty\");","module.exports = require(\"@babel/runtime/helpers/toConsumableArray\");","module.exports = require(\"react\");","module.exports = require(\"@babel/runtime/helpers/slicedToArray\");","module.exports = require(\"@splunk/visualization-encoding/utils/types\");","module.exports = require(\"@babel/runtime/helpers/taggedTemplateLiteral\");","module.exports = require(\"styled-components\");","module.exports = require(\"@splunk/visualizations-shared/colorUtils\");","import { isNumber } from '@splunk/visualization-encoding/utils/types';\nimport { getFieldsFromDSL } from '@splunk/visualization-encoding/utils/dsl';\nimport { deepMergeWithArrayPrimitiveOverrides } from '@splunk/visualizations-shared/hocUtils';\nimport { pickFieldFromJSONSchema } from '@splunk/visualizations-shared/JSONSchemaUtils';\nimport { GEO_LAT_AND_LONG_FIELD } from '../../Map/PureMap/BubbleLayer';\n\nexport const columnsNullToZeros = (config, dataSources, options) => {\n const { primary } = dataSources;\n const { columns, fields } = primary.data;\n let newColumns = columns;\n const mergedOptions = deepMergeWithArrayPrimitiveOverrides(\n {},\n options,\n pickFieldFromJSONSchema(config.optionsSchema, 'default')\n );\n if (mergedOptions.layers?.[0]?.type === 'bubble') {\n const latitudeField = getFieldsFromDSL(mergedOptions.layers[0].latitude, dataSources)[0] || '';\n const longitudeField = getFieldsFromDSL(mergedOptions.layers[0].longitude, dataSources)[0] || '';\n const excludedFields = [latitudeField, longitudeField, 'geobin'].concat(GEO_LAT_AND_LONG_FIELD);\n const indicesToEvaluate = new Set(\n fields.reduce((arr, e, i) => {\n const field = typeof e === 'string' ? e : e.name.toString();\n if (!excludedFields.includes(field)) {\n arr.push(i);\n }\n return arr;\n }, [])\n );\n\n newColumns = columns.map((column, i) => {\n if (indicesToEvaluate.has(i)) {\n // sanitize value and convert string to numeric numbers\n return column.map(value => (!value || !isNumber(value) ? 0 : +value));\n }\n return column;\n });\n }\n\n const modifiedDatasources = {\n ...dataSources,\n primary: {\n ...primary,\n data: {\n ...primary.data,\n columns: newColumns,\n },\n },\n };\n\n return modifiedDatasources;\n};\n","module.exports = require(\"@splunk/visualization-encoding/utils/dsl\");","module.exports = require(\"@splunk/visualizations-shared/hocUtils\");","module.exports = require(\"@splunk/visualizations-shared/JSONSchemaUtils\");","import * as React from 'react';\nimport styled from 'styled-components';\nimport type { Map } from 'maplibre-gl';\nimport { sum } from 'lodash';\nimport { isColor } from '@splunk/visualizations-shared/colorUtils';\nimport {\n bakeBubbleData,\n BubbleLayerType,\n DEFAULT_SERIES_COLORS,\n DEFAULT_RESULT_LIMIT,\n DEFAULT_CLUSTER_COLOR,\n getStaticColors,\n matchBubbleSize,\n} from './MapUtils';\nimport MarkerWrapper from './MarkerWrapper';\nimport type { TooltipProps } from './Tooltip';\n\nexport const GEO_BOUND_PREFIX = '_geo_bounds_';\nexport const GEO_LAT_AND_LONG_FIELD = ['_geo_long_field', '_geo_lat_field'];\nexport interface PieSegmentProps {\n start: number;\n end: number;\n radius: number;\n color: string;\n themeColor: string;\n segmentMetadata?: { name: string; value: number; color: string };\n handleBubbleClick?: (e: Event, name: string, count: number) => void;\n}\n\nexport const PieSegment = React.memo(\n ({\n start,\n end,\n radius,\n color,\n themeColor,\n segmentMetadata,\n handleBubbleClick,\n }: PieSegmentProps): JSX.Element => {\n const { name, value } = segmentMetadata ?? {};\n const handleSegmentClick = React.useCallback(\n e => {\n handleBubbleClick(e, name, value);\n },\n [name, value, handleBubbleClick]\n );\n\n if (end - start === 1) {\n return (\n <circle\n onClick={handleSegmentClick}\n cx={radius}\n cy={radius}\n r={radius}\n fill={color}\n fillOpacity={0.5}\n strokeWidth={1.5}\n stroke={color}\n />\n );\n }\n const a0 = 2 * Math.PI * (start - 0.25);\n const a1 = 2 * Math.PI * (end - 0.25);\n const x0 = Math.cos(a0);\n const y0 = Math.sin(a0);\n const x1 = Math.cos(a1);\n const y1 = Math.sin(a1);\n const arc = end - start > 0.5 ? 1 : 0;\n\n return (\n <path\n onClick={handleSegmentClick}\n d={`M ${radius} ${radius} L ${radius + radius * x0} ${\n radius + radius * y0\n } A ${radius} ${radius} 0 ${arc} 1 ${radius + radius * x1} ${\n radius + radius * y1\n } L ${radius} ${radius} A 0 0 0 ${arc} 0 ${radius} ${radius}`}\n fill={color}\n fillOpacity={0.8}\n stroke={themeColor}\n strokeWidth={2}\n strokeOpacity={0.3}\n />\n );\n }\n);\n\nPieSegment.displayName = 'MapBubblePieSegment';\n\nconst StyledMarkerWrapper = styled(MarkerWrapper)`\n cursor: pointer;\n`;\n\nexport interface BubbleProps {\n originalValues: number[];\n valueRange: number[];\n colors: string[];\n themeColor: string;\n isPie: boolean;\n latitude: number;\n longitude: number;\n bubbleSize: Required<TooltipProps['additionalFields'][number] & { value: number }>[];\n additionalFields?: TooltipProps['additionalFields'];\n map: React.MutableRefObject<Map>;\n handleMapClick?: any;\n}\n\nexport const Bubble = React.memo(\n ({\n originalValues,\n valueRange,\n colors,\n themeColor,\n isPie,\n latitude,\n longitude,\n bubbleSize,\n additionalFields = [],\n map,\n handleMapClick,\n }: BubbleProps): JSX.Element => {\n const onBubbleClick = React.useCallback(\n (e, name, value) => {\n handleMapClick(e, name, value);\n e.stopPropagation();\n },\n [handleMapClick]\n );\n\n const bubble = React.useMemo(() => {\n const allZeros = originalValues.every(v => v === 0);\n if (allZeros || !originalValues.length) {\n return null;\n }\n // sanitize values\n const values = originalValues.map(v => (v > 0 ? v : 0));\n\n // compute offsets for pie segments\n const offsets = [];\n let total = 0;\n values.forEach(count => {\n offsets.push(total);\n total += count;\n });\n\n const radius = matchBubbleSize(valueRange, total);\n const width = radius * 2;\n return (\n <svg width={width} height={width} viewBox={`-3 -3 ${width + 6} ${width + 6}`}>\n {isPie ? (\n <circle\n cx={radius}\n cy={radius}\n r={radius}\n fill=\"none\"\n strokeWidth={2}\n stroke={themeColor}\n strokeOpacity={0.3}\n />\n ) : null}\n {values.map((v, i) => (\n <PieSegment\n key={String(i)}\n start={offsets[i] / total}\n end={(offsets[i] + v) / total}\n radius={radius}\n color={colors[i]}\n themeColor={themeColor}\n segmentMetadata={bubbleSize[i]}\n handleBubbleClick={onBubbleClick}\n />\n ))}\n </svg>\n );\n }, [bubbleSize, colors, isPie, onBubbleClick, originalValues, themeColor, valueRange]);\n\n if (!bubble) {\n return null;\n }\n\n return (\n <StyledMarkerWrapper\n longitude={longitude}\n latitude={latitude}\n additionalFields={[...bubbleSize, ...additionalFields]}\n map={map}\n data-test-type=\"bubble\"\n >\n {bubble}\n </StyledMarkerWrapper>\n );\n }\n);\nBubble.displayName = 'MapBubble';\n\nexport interface BubbleLayerProps {\n bubbleLayer: BubbleLayerType;\n themeColorScheme: string;\n zoom: number;\n map: React.MutableRefObject<Map>;\n onMapClick?: any;\n}\n\nconst BubbleLayer = (props: BubbleLayerProps): JSX.Element => {\n const { bubbleLayer, themeColorScheme, map, zoom, onMapClick } = props;\n bubbleLayer.seriesColors = bubbleLayer.seriesColors || DEFAULT_SERIES_COLORS;\n bubbleLayer.bubbleSize = bubbleLayer.bubbleSize || [];\n const bakedData = React.useMemo(() => bakeBubbleData(bubbleLayer), [bubbleLayer]);\n const staticColors = React.useMemo(\n () => getStaticColors(bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors),\n [bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors]\n );\n const { data = [], dataRange = [], resultLimit, bubbleSizeFields, isPie } = bakedData ?? {};\n const { additionalTooltipFields = [] } = bubbleLayer;\n const roundedZoom = Math.round(zoom);\n const themeColor = themeColorScheme === 'light' ? '#ffffff' : '#1a1c20';\n const dynamicColors = bubbleLayer.dataColors;\n\n // filter data for the current zoom level and sort base on values\n const dataToRender = React.useMemo(\n () =>\n data\n .reduce((acc, datum, i) => {\n if (datum.zoom === roundedZoom) {\n acc.push({ data: datum, idx: i });\n }\n return acc;\n }, [])\n .slice(0, resultLimit || DEFAULT_RESULT_LIMIT)\n .sort((a, b) => sum(b.data.values) - sum(a.data.values)),\n [data, resultLimit, roundedZoom]\n );\n\n const handleMapClick = React.useCallback(\n (e, name, value, i) => {\n // retrieve metadata from the appropriate datum, indexed by i\n const metadata = dataToRender[i]?.data?.metadata ?? {};\n const payload = Object.keys(metadata).reduce(\n (acc, curr) => {\n const key = `row.${curr}.value`;\n const val = String(metadata[curr]);\n return { ...acc, [key]: val };\n },\n { name, value: String(value) }\n );\n\n onMapClick({ e, payload });\n },\n [dataToRender, onMapClick]\n );\n\n return (\n <>\n {dataToRender.map((datum, i) => {\n const colors = dynamicColors\n ? [\n dataToRender.map(obj =>\n isColor(dynamicColors[obj.idx]) ? dynamicColors[obj.idx] : DEFAULT_CLUSTER_COLOR\n )[i],\n ]\n : staticColors;\n\n const [longitude, latitude] = datum.data.coordinates;\n const bubbleSize = datum.data.values.map((value, index) => ({\n name: bubbleSizeFields[index],\n value,\n color: colors[index],\n }));\n\n const additionalFields = bubbleLayer.metadata\n ? additionalTooltipFields.map(field => ({\n name: field,\n value: datum.data.metadata[field],\n }))\n : [];\n\n return (\n <Bubble\n key={String(i)}\n originalValues={datum.data.values}\n valueRange={dataRange}\n colors={colors}\n themeColor={themeColor}\n isPie={isPie}\n longitude={longitude}\n latitude={latitude}\n bubbleSize={bubbleSize}\n additionalFields={additionalFields}\n map={map}\n handleMapClick={(e, name, value) => handleMapClick(e, name, value, i)}\n />\n );\n })}\n </>\n );\n};\n\nexport default BubbleLayer;\n","import { forEach, sum, isNumber, min as lodashMin, max as lodashMax, get, isEqual, isObject } from 'lodash';\nimport { LngLatBoundsLike } from 'maplibre-gl';\nimport { scalePow } from 'd3-scale';\nimport * as chroma from 'chroma-js';\nimport type { MapContextInterface, BaseTileConfig } from '@splunk/visualization-context/MapContext';\nimport { isColor } from '@splunk/visualizations-shared/colorUtils';\nimport { VIZ_CATEGORICAL } from '@splunk/visualization-color-palettes';\nimport { isNumber as isNumberUtil } from '@splunk/visualization-encoding/utils/types';\nimport type { GeoJsonDataType } from '@splunk/visualizations-shared/mapUtils';\n\nexport const MAX_LATITUDE = 90;\nexport const MIN_LATITUDE = -90;\nexport const MAX_LONGITUDE = 180;\nexport const MIN_LONGITUDE = -180;\nexport const DEFAULT_RESULT_LIMIT = 1000;\nexport const DEFAULT_CLUSTER_COLOR = '#909090';\nexport const DEFAULT_SERIES_COLORS = VIZ_CATEGORICAL;\n// MapLibre requires a map style specification number which is always 8\nexport const MAP_STYLE_VERSION_NUMBER = 8;\n// currently using one [min, max] value set for bubbles across all zoom levels\n// TODO: design choices on [min, max] bubble size for different zoom levels\nexport const MIN_BUBBLE_RADIUS = 7.11; // 10px\nexport const MAX_BUBBLE_RADIUS = 45.26; // 85px\nexport const DEFAULT_OPACITY = 0.8;\nconst LONGITUDE = 'longitude';\nconst LATITUDE = 'latitude';\n\nexport enum LAYER_TYPE {\n Marker = 'marker',\n Bubble = 'bubble',\n Choropleth = 'choropleth',\n}\n\ninterface GenericLayerType {\n type: string;\n latitude: number[];\n longitude: number[];\n dataColors?: string[];\n seriesColors: string[];\n additionalTooltipFields?: string[];\n resultLimit: number;\n metadata?: Array<{ [key: string]: number | string }>;\n}\n\nexport interface MarkerLayerType extends GenericLayerType {\n type: LAYER_TYPE.Marker;\n}\n\nexport interface BubbleLayerType extends GenericLayerType {\n type: LAYER_TYPE.Bubble;\n bubbleSize?: number[][] | number[];\n bubbleSizeFields: string[];\n geobin?: string[];\n}\n\ninterface BubbleLayerDatumType {\n zoom: number;\n values: number[];\n sanitizedValues: number[];\n coordinates: number[];\n}\n\nexport interface BubbleLayerDataType {\n data: BubbleLayerDatumType[];\n dataRange: number[];\n isPie: boolean;\n resultLimit: number;\n bubbleSizeFields: string[];\n}\n\nexport interface ChoroplethLayerType {\n type: LAYER_TYPE.Choropleth;\n areaIds: string[];\n areaValues: number[];\n dataColors: string[];\n additionalTooltipFields?: string[];\n geom?: GeoJsonDataType[];\n resultLimit?: number;\n metadata?: Array<{ [key: string]: number | string | GeoJsonDataType }>;\n source?: string;\n width?: string | number;\n height?: string | number;\n choroplethEmptyAreaColor?: string;\n choroplethStrokeColor?: string;\n choroplethOpacity?: number;\n}\n\n// todo(@ssahnoune) - look into this\nexport interface MapLayerClickPayloadType {\n name?: string;\n value?: string | number;\n /* cell values of all cells of clicked row with the field and value - in shape row.<field>.value */\n [key: string]: string | number;\n}\n\nexport type ClusterLayerType = BubbleLayerType | MarkerLayerType;\nexport type LayerType = ClusterLayerType | ChoroplethLayerType;\n/**\n * Construct a tile preset {key: config} by combining the default + custom tile configs\n * Also returns the default tile config for each theme - light/dark\n * @param {MapContextInterface} args\n * @param {BaseTileConfig[]} args.defaultTileConfig\n * @param {BaseTileConfig[]} args.customTileConfig\n * @returns {Object} tile preset\n */\nexport const getTilePreset = ({\n defaultTileConfig = [],\n customTileConfig = [],\n}: MapContextInterface): {\n tilePreset: Record<string, BaseTileConfig>;\n defaultTileLight: BaseTileConfig;\n defaultTileDark: BaseTileConfig;\n} => {\n const tilePreset = {};\n let defaultTileLight = {};\n let defaultTileDark = {};\n const tileConfigs = [].concat(defaultTileConfig).concat(customTileConfig);\n forEach(tileConfigs, tileConfig => {\n const key = tileConfig?.key;\n const updatedConfig = { theme: 'all', ...tileConfig, version: MAP_STYLE_VERSION_NUMBER };\n tilePreset[key] = updatedConfig;\n });\n\n if (defaultTileConfig.length > 0) {\n defaultTileLight =\n defaultTileConfig.find(config => config.theme === 'light') ??\n defaultTileConfig.find(config => config.theme === undefined);\n defaultTileDark =\n defaultTileConfig.find(config => config.theme === 'dark') ??\n defaultTileConfig.find(config => config.theme === undefined);\n }\n\n return { tilePreset, defaultTileLight, defaultTileDark };\n};\n\n/**\n * Check if baseLayerTileServer is in tilePreset and config matches current theme, if yes, return.\n * If no, construct a mapStyle with baseLayerTilerServer and baseLayerTileServerType\n * Else return default tile config based on current theme\n * @param {Object} args\n * @param {BaseTileConfig[]} args.tilePreset\n * @param {String} args.baseLayerTilerServer\n * @param {String} args.baseLayerTileServerType\n * @param {String} args.colorScheme\n * @param {BaseTileConfig} args.defaultTileDark\n * @param {BaseTileConfig} args.defaultTileLight\n * @returns {BaseTileConfig} mapStyle\n */\nexport const getMapStyle = ({\n showBaseLayer,\n baseLayerTileServer = '',\n baseLayerTileServerType = '',\n tilePreset = {},\n colorScheme = 'light',\n defaultTileLight = {},\n defaultTileDark = {},\n}: {\n showBaseLayer: boolean;\n baseLayerTileServer?: string;\n baseLayerTileServerType?: string;\n tilePreset?: Record<string, BaseTileConfig>;\n colorScheme?: string;\n defaultTileLight?: BaseTileConfig;\n defaultTileDark?: BaseTileConfig;\n}): BaseTileConfig => {\n if (!showBaseLayer) {\n return {\n version: MAP_STYLE_VERSION_NUMBER,\n sources: {\n 'base-tiles': {\n type: 'raster',\n tiles: [\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=',\n ],\n tileSize: 256,\n },\n },\n layers: [\n {\n id: 'base-layer',\n type: 'raster',\n source: 'base-tiles',\n minzoom: 0,\n maxzoom: 22,\n },\n ],\n };\n }\n\n if (\n baseLayerTileServer &&\n tilePreset[baseLayerTileServer] &&\n (tilePreset[baseLayerTileServer].theme === colorScheme ||\n tilePreset[baseLayerTileServer].theme === 'all')\n ) {\n return tilePreset[baseLayerTileServer];\n }\n\n if (baseLayerTileServer && baseLayerTileServerType) {\n let tiles = [];\n /**\n * Tile Server URLs (eg: http://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png) can specify the variable {s} which refers to a subdomain\n * Subdomains are used to help with browser parallel requests per domain limitation. These subdomains are typically single letters 'a', 'b' and 'c'\n * Refer to https://leafletjs.com/SlavaUkraini/reference.html#tilelayer and https://wiki.openstreetmap.org/wiki/Tile_servers\n */\n if (baseLayerTileServer.match(/^(https?):\\/\\/{(s|S)}\\../)) {\n /**\n * sXML (Leaflet) allows users to define their own tile server URLs + list of available subdomains\n * In order to preserve this behavior during conversion to splunk.map,\n * if the variable {s} or {S} is detected, replace it with 'a', 'b' and 'c' - default values for subdomains\n * TODO: in the future, add an additional prop - baseLayerTileServerSubdomains: ['x', 'y', 'z'], default being ['a', 'b', 'c']\n */\n tiles = [\n baseLayerTileServer.replace(/{(s|S)}/, 'a'),\n baseLayerTileServer.replace(/{(s|S)}/, 'b'),\n baseLayerTileServer.replace(/{(s|S)}/, 'c'),\n ];\n } else {\n tiles = [baseLayerTileServer];\n }\n // TODO: remove hardcoded style when we allow users to pass in layer style through Viz options\n const mapStyle = {\n version: MAP_STYLE_VERSION_NUMBER,\n sources: {\n 'base-tiles': {\n type: baseLayerTileServerType,\n tiles,\n tileSize: 256,\n },\n },\n layers: [\n {\n id: 'base-layer',\n type: 'raster',\n source: 'base-tiles',\n minzoom: 0,\n maxzoom: 24, // https://maplibre.org/maplibre-gl-js-docs/api/map/\n },\n ],\n };\n return mapStyle;\n }\n\n // if tile server is not present in the preset AND we can't construct a mapStyle, fall back on defaults\n return colorScheme === 'light' ? defaultTileLight : defaultTileDark;\n};\n\nexport interface ZoomConstraints {\n minZoom: number;\n maxZoom: number;\n}\n\nexport const getZoomConstraintsFromTileConfig = (\n tileConfig: BaseTileConfig,\n baseLayerTileServer?: string\n): ZoomConstraints => {\n const { sources, layers } = tileConfig;\n let matchedBaseLayerTileServer = false;\n // check sources for minzoom maxzoom first\n const sourceKeys = Object.keys(sources);\n for (let i = 0; i < sourceKeys.length; i += 1) {\n const { minzoom, maxzoom } = sources[sourceKeys[i]];\n if (baseLayerTileServer && sources[sourceKeys[i]].tiles.indexOf(baseLayerTileServer) !== -1) {\n matchedBaseLayerTileServer = true;\n }\n if (\n ((baseLayerTileServer && matchedBaseLayerTileServer) || !baseLayerTileServer) &&\n isNumber(minzoom) &&\n isNumber(maxzoom)\n ) {\n return {\n minZoom: minzoom,\n maxZoom: maxzoom,\n };\n }\n }\n // then check layers\n for (let i = 0; i < layers.length; i += 1) {\n const { minzoom, maxzoom } = layers[i];\n if (\n ((baseLayerTileServer && matchedBaseLayerTileServer) || !baseLayerTileServer) &&\n isNumber(minzoom) &&\n isNumber(maxzoom)\n ) {\n return {\n minZoom: minzoom,\n maxZoom: maxzoom,\n };\n }\n }\n // Maplibre default - would reset previous min/maxZoom https://maplibre.org/maplibre-gl-js-docs/api/map/\n return {\n minZoom: 0,\n maxZoom: 24,\n };\n};\n\nexport const getZoomLevelFromGeobin = (geobinStr: string): number => {\n if (!geobinStr) {\n return null;\n }\n // geostats cmds return geobin with zoom level 0-18, 0-99 in the geobinPattern covers the range\n const geobinPattern = /bin_id_zl_([0-9]{0,2})?_y_/g;\n const match = geobinPattern.exec(geobinStr);\n return (match?.length && parseInt(match[1], 10)) ?? null;\n};\n\n// Bubble colors - static\nexport const getStaticColors = (colorCount: number, colorArray: string[]): string[] => {\n if (colorCount < 0 || !colorCount) {\n return [DEFAULT_CLUSTER_COLOR];\n }\n if (!colorArray || !colorArray.length) {\n return [...Array(colorCount).keys()].map(i => DEFAULT_SERIES_COLORS[i]);\n }\n // loop through colorArray to pick the first $colorCount colors\n // start from begining again if colorCount > colorArray.length\n return [...Array(colorCount).keys()].map(i =>\n isColor(colorArray[i % colorArray.length]) ? colorArray[i % colorArray.length] : DEFAULT_CLUSTER_COLOR\n );\n};\n\n// Bubble size\nexport const matchBubbleSize = (dataRange: number[], data: number): any => {\n const size = scalePow().exponent(0.2).domain(dataRange).range([MIN_BUBBLE_RADIUS, MAX_BUBBLE_RADIUS])(\n data\n );\n\n if (size > MAX_BUBBLE_RADIUS) {\n return MAX_BUBBLE_RADIUS;\n }\n if (size < MIN_BUBBLE_RADIUS) {\n return MIN_BUBBLE_RADIUS;\n }\n return size;\n};\n\nexport const transposeArray = (array: number[][]): number[][] => {\n if (!array || !array.length || !array[0] || !array[0].length) {\n return [];\n }\n return array[0].map((_, i) => array.map(row => row[i]));\n};\n\n// sanitize values: update all null, undefined, or negative values to 0\nexport const sanitizeValues = (values: number[] | number[][]) => {\n // null / undefined\n if (!values) {\n return 0;\n }\n // number\n if (!Array.isArray(values)) {\n return values > 0 ? values : 0;\n }\n // array\n return values.map(arr => sanitizeValues(arr));\n};\n\nexport const bakeBubbleData = (layer: BubbleLayerType): BubbleLayerDataType => {\n if (\n !layer ||\n !layer.bubbleSize?.length ||\n !layer.geobin ||\n !layer.geobin.length ||\n !layer.latitude ||\n !layer.latitude.length ||\n !layer.longitude ||\n !layer.longitude.length\n ) {\n return null;\n }\n // if bubbleSize is passed as an array of single number array (data series)\n // e.g. [value0, value1, ...]\n // format each value as an array to unify data operations for data series and frames\n const sanitizedBubbleSize = sanitizeValues(layer.bubbleSize);\n let transposedBubbleSize: number[][];\n let transposedSanitizedBubbleSize: number[][];\n let isPie = false;\n // format array if bubbleSize is passed as an array of array (data frame)\n if (Array.isArray(layer.bubbleSize[0])) {\n // one-time array transpose,\n // e.g. from [column0data, column0data] (multi series)\n // to [[column0datum0, column1datum0], [column0datum1, column1data1], ...]\n // or e.g. from [column0data] (single series)\n // to [[column0data]]\n // for easy access of values at each geo location,\n // and min max pie size computation\n transposedBubbleSize = transposeArray(layer.bubbleSize as number[][]);\n transposedSanitizedBubbleSize = transposeArray(sanitizedBubbleSize);\n // if multiple series in the dataframe, set isPie to true\n if (layer.bubbleSize.length > 1) {\n isPie = true;\n }\n } else {\n transposedBubbleSize = layer.bubbleSize.map(n => [n]);\n transposedSanitizedBubbleSize = sanitizedBubbleSize.map(n => [n]);\n }\n if (!transposedBubbleSize || !transposedBubbleSize.length) {\n return null;\n }\n const data = layer.latitude\n .map((lat, i) => ({\n zoom: getZoomLevelFromGeobin(layer.geobin[i]),\n values: transposedBubbleSize[i],\n sanitizedValues: transposedSanitizedBubbleSize[i],\n coordinates: [layer.longitude[i], lat],\n metadata: layer.metadata ? layer.metadata[i] : {},\n }))\n .filter(d => Boolean(d.values));\n\n // compute the min/max value to encode min/max pie or bubble size\n let min = sum(transposedSanitizedBubbleSize[0]);\n let max = sum(transposedSanitizedBubbleSize[1]);\n transposedSanitizedBubbleSize.forEach(row => {\n const bubbleSize = sum(row);\n max = bubbleSize > max ? bubbleSize : max;\n min = bubbleSize < min ? bubbleSize : min;\n });\n return {\n data,\n dataRange: [min, max],\n isPie,\n resultLimit: layer.resultLimit,\n bubbleSizeFields: layer.bubbleSizeFields,\n };\n};\n\nexport const isValidLatLon = (latlon: Array<number | string>): boolean => {\n if (!latlon || !Array.isArray(latlon) || latlon.length !== 2) {\n return false;\n }\n const [lat, lon] = latlon;\n if (!isNumberUtil(lat) || !(lat >= MIN_LATITUDE && lat <= MAX_LATITUDE)) {\n return false;\n }\n if (!isNumberUtil(lon) || !(lon >= MIN_LONGITUDE && lon <= MAX_LONGITUDE)) {\n return false;\n }\n return true;\n};\n\n/**\n * Returns a list of all lat or lon coordinates used in a specified layer\n * @param {LayerType[]} layer\n * @param {string} field\n * @returns {number[]} list of lat coordinates or lon coordinates\n */\nconst getLatOrLonCoordinates = (layer: LayerType, field: string): number[] => {\n const getClusterValues = (clusterLayer: ClusterLayerType): number[] =>\n get(clusterLayer, field, []).slice(\n 0,\n clusterLayer.type === LAYER_TYPE.Marker && clusterLayer.resultLimit\n ? clusterLayer.resultLimit\n : DEFAULT_RESULT_LIMIT\n );\n\n const getChoroplethValues = (choroplethLayer: ChoroplethLayerType): number[] => {\n const slicedGeomList = choroplethLayer.geom.slice(0, choroplethLayer.resultLimit);\n const flatCoordinates = slicedGeomList.flatMap(geomObject => geomObject.coordinates.flat(2));\n return flatCoordinates.map(coord => coord[field === LONGITUDE ? 0 : 1]);\n };\n\n return layer.type === LAYER_TYPE.Choropleth ? getChoroplethValues(layer) : getClusterValues(layer);\n};\n\n/**\n * Returns the min and max LongLat pairs to determine the layer boundaries to fit all markers/bubbles\n * @param {LayerType[]} layers\n * @returns {LngLatBoundsLike}\n */\nexport const getGlobalLayerBoundaries = (layers: LayerType[]): LngLatBoundsLike => {\n const isLayerValid = (field: string): boolean =>\n layers.every(layer => layer[field] || (layer as ChoroplethLayerType).geom);\n const getDefaultMax = (field: string) => (field === LONGITUDE ? MAX_LONGITUDE : MAX_LATITUDE);\n const getDefaultMin = (field: string) => (field === LONGITUDE ? MIN_LONGITUDE : MIN_LATITUDE);\n\n if (!layers || !Array.isArray(layers) || !layers.length) {\n return null;\n }\n\n const getMin = (field: string): number => {\n if (!isLayerValid(field)) {\n return getDefaultMin(field);\n }\n return layers.reduce((prevVal, layer) => {\n const coordinatesNumArr = getLatOrLonCoordinates(layer, field).map(x => +x);\n return lodashMin([prevVal, ...coordinatesNumArr]);\n }, getDefaultMax(field));\n };\n\n const getMax = (field: string): number => {\n if (!isLayerValid(field)) {\n return getDefaultMax(field);\n }\n return layers.reduce((prevVal, layer) => {\n const coordinatesNumArr = getLatOrLonCoordinates(layer, field).map(Number);\n return lodashMax([prevVal, ...coordinatesNumArr]);\n }, getDefaultMin(field));\n };\n\n return [\n [getMin(LONGITUDE), getMin(LATITUDE)],\n [getMax(LONGITUDE), getMax(LATITUDE)],\n ];\n};\n\nexport const getScaledOpacities = (colors: string[], cfgOpacity: number): number[] => {\n // extract opacity information from 8 digit hex codes\n const opacities = colors?.map(color => (color?.length === 9 ? chroma(color).alpha() ?? 1 : 1));\n // opacity cannot be greater than configured opacity\n return opacities?.map(opacity => opacity * cfgOpacity);\n};\n\nexport const compareBaseStyles = (curr, next): boolean => {\n const currBaseLayer = curr?.layers?.find(layer => layer?.id === 'base-layer');\n const nextBaseLayer = next?.layers?.find(layer => layer?.id === 'base-layer');\n const currBaseSource = get(curr?.sources, (currBaseLayer?.source as string) ?? '');\n const nextBaseSource = get(next?.sources, (nextBaseLayer?.source as string) ?? '');\n\n if (!currBaseLayer || !nextBaseLayer || !currBaseSource || !nextBaseSource) {\n return false;\n }\n\n return isEqual(currBaseLayer, nextBaseLayer) && isEqual(currBaseSource, nextBaseSource);\n};\n\nexport const formatMetadata = (\n choroplethLayer: ChoroplethLayerType,\n i: number\n): { [key: string]: string } => {\n if (!choroplethLayer || !choroplethLayer.areaIds || !choroplethLayer.areaValues) return {};\n if (i >= choroplethLayer.areaIds.length) return {};\n\n const metadata = choroplethLayer.metadata ? choroplethLayer.metadata[i] : {};\n const name = choroplethLayer.areaIds[i];\n const value = choroplethLayer.areaValues[i];\n const base = { name, value: String(value) };\n\n return Object.keys(metadata).reduce((result, curr) => {\n const key = `row.${curr}.value`;\n const val = isObject(metadata[curr]) ? JSON.stringify(metadata[curr]) : String(metadata[curr]);\n return { ...result, [key]: val };\n }, base);\n};\n","module.exports = require(\"d3-scale\");","module.exports = require(\"chroma-js\");","module.exports = require(\"@splunk/visualization-color-palettes\");","import type { Map } from 'maplibre-gl';\nimport { Marker } from 'maplibre-gl';\nimport * as React from 'react';\nimport type { TooltipProps } from './Tooltip';\nimport Tooltip from './Tooltip';\n\nexport interface MarkerWrapperProps extends React.HTMLAttributes<HTMLDivElement> {\n latitude: number;\n longitude: number;\n areaId?: string;\n areaValue?: number;\n additionalFields?: TooltipProps['additionalFields'];\n map: React.MutableRefObject<Map>;\n isChoroplethTooltipOpen?: boolean;\n}\n\nconst MarkerWrapper = ({\n longitude,\n latitude,\n areaId,\n areaValue,\n additionalFields = [],\n map,\n isChoroplethTooltipOpen,\n children,\n ...otherProps\n}: MarkerWrapperProps): JSX.Element => {\n const container = React.useRef<HTMLDivElement>();\n const marker = React.useRef<Marker>();\n const [isTooltipOpen, setTooltipOpenStatus] = React.useState(false);\n\n const isChoroplethTooltip = React.useCallback(() => isChoroplethTooltipOpen !== undefined, [\n isChoroplethTooltipOpen,\n ]);\n\n const openTooltip = React.useCallback(() => setTooltipOpenStatus(true), []);\n const closeTooltip = React.useCallback(() => setTooltipOpenStatus(false), []);\n\n const cleanupMarker = React.useCallback(() => {\n if (marker.current) {\n marker.current.remove();\n marker.current = undefined;\n }\n }, []);\n\n React.useEffect(() => {\n try {\n if (marker.current) {\n marker.current.setLngLat([longitude, latitude]);\n } else {\n marker.current = new Marker({ element: container.current });\n marker.current.setLngLat([longitude, latitude]);\n marker.current.addTo(map.current);\n }\n } catch (error) {\n console.error(error);\n cleanupMarker();\n }\n }, [latitude, longitude, map]);\n\n React.useEffect(() => cleanupMarker, []);\n\n return (\n <div style={{ visibility: isChoroplethTooltip() ? 'hidden' : 'visible' }}>\n <div\n style={{ visibility: isChoroplethTooltip() ? 'hidden' : 'visible' }}\n ref={container}\n data-test=\"map-marker\"\n onMouseOver={openTooltip}\n onMouseLeave={closeTooltip}\n onFocus={openTooltip}\n onBlur={closeTooltip}\n {...otherProps}\n >\n {children}\n </div>\n\n <div>\n <Tooltip\n open={isChoroplethTooltip() ? isChoroplethTooltipOpen : isTooltipOpen}\n anchor={container.current}\n latitude={isChoroplethTooltip() ? null : latitude}\n longitude={isChoroplethTooltip() ? null : longitude}\n areaId={areaId}\n areaValue={areaValue}\n additionalFields={additionalFields}\n />\n </div>\n </div>\n );\n};\n\nexport default MarkerWrapper;\n","module.exports = require(\"maplibre-gl\");","import * as React from 'react';\nimport styled from 'styled-components';\nimport Popover from '@splunk/react-ui/Popover';\nimport { _ } from '@splunk/ui-utils/i18n';\n\nconst StyledPopover = styled(Popover)`\n width: 250px;\n font-size: 12px;\n`;\n\nconst StyledTable = styled.table`\n margin: 2px 6px 2px 6px;\n width: calc(100% - 12px);\n`;\n\nconst StyledTitleColumn = styled.td`\n opacity: 0.85;\n`;\n\nconst StyledValueColumn = styled.td`\n text-align: right;\n`;\n\nconst StyledColorBlock = styled.div`\n background-color: ${props => props.color};\n display: inline-block;\n margin-right: 4px;\n border-radius: 2px;\n width: 6px;\n height: 11px;\n transform: translateY(1px);\n`;\n\nexport const convertDegToDMS = (decimalDegree: number, type: 'latitude' | 'longitude'): string => {\n const truncate = n => (n > 0 ? Math.floor(n) : Math.ceil(n));\n const absoluteDegree = Math.abs(decimalDegree);\n let degrees = truncate(absoluteDegree);\n let minutes = truncate((absoluteDegree - degrees) * 60);\n let seconds = Math.round((absoluteDegree - degrees - minutes / 60) * 3600);\n if (seconds === 60) {\n minutes += 1;\n seconds = 0;\n }\n if (minutes === 60) {\n degrees += 1;\n minutes = 0;\n }\n let direction: string;\n if (type === 'longitude') {\n direction = decimalDegree < 0 ? 'W' : 'E';\n } else if (type === 'latitude') {\n direction = decimalDegree < 0 ? 'S' : 'N';\n }\n return `${degrees}° ${minutes}' ${seconds}\" ${direction}`;\n};\n\nexport interface TooltipProps {\n open?: boolean;\n anchor?: HTMLElement;\n latitude?: number;\n longitude?: number;\n areaId?: string;\n areaValue?: number;\n additionalFields?: Array<{ name: string; value: number | string; color?: string }>;\n}\n// only want latitude/longitude for marker and bubble\n// omit for choropleth, and put areaid, areavalue instead\nconst Tooltip = ({\n open,\n anchor,\n latitude,\n longitude,\n areaId,\n areaValue,\n additionalFields = [],\n}: TooltipProps): JSX.Element => (\n <StyledPopover\n open={open}\n animation={false}\n anchor={anchor}\n data-test=\"map-marker-tooltip\"\n defaultPlacement=\"above\"\n >\n <StyledTable>\n <tbody>\n {areaId && areaValue && (\n <tr>\n <StyledTitleColumn data-test=\"area-id\">{areaId}</StyledTitleColumn>\n <StyledValueColumn data-test=\"area-value\">{areaValue}</StyledValueColumn>\n </tr>\n )}\n {latitude && (\n <tr>\n <StyledTitleColumn>{_('Latitude')}</StyledTitleColumn>\n <StyledValueColumn data-test=\"latitude\">\n {convertDegToDMS(latitude, 'latitude')}\n </StyledValueColumn>\n </tr>\n )}\n {longitude && (\n <tr>\n <StyledTitleColumn>{_('Longitude')}</StyledTitleColumn>\n <StyledValueColumn data-test=\"longitude\">\n {convertDegToDMS(longitude, 'longitude')}\n </StyledValueColumn>\n </tr>\n )}\n {additionalFields\n .filter(({ value }) => value && String(value) !== '0')\n .map(({ name, value, color }, index) => (\n <tr key={String(index)}>\n <StyledTitleColumn data-test=\"field-title\">\n {color ? <StyledColorBlock data-test=\"field-color\" color={color} /> : null}\n {name}\n </StyledTitleColumn>\n <StyledValueColumn data-test=\"field-value\">{value}</StyledValueColumn>\n </tr>\n ))}\n </tbody>\n </StyledTable>\n </StyledPopover>\n);\n\nexport default Tooltip;\n","module.exports = require(\"@splunk/react-ui/Popover\");","module.exports = require(\"@splunk/ui-utils/i18n\");"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"lodash\"","webpack:///external \"@babel/runtime/helpers/toConsumableArray\"","webpack:///external \"@babel/runtime/helpers/defineProperty\"","webpack:///external \"react\"","webpack:///external \"@splunk/visualization-schemas\"","webpack:///external \"@babel/runtime/helpers/slicedToArray\"","webpack:///external \"@splunk/visualization-encoding/utils/types\"","webpack:///external \"@babel/runtime/helpers/taggedTemplateLiteral\"","webpack:///external \"styled-components\"","webpack:///external \"@splunk/visualizations-shared/colorUtils\"","webpack:///./src/common/utils/mapUtils.ts","webpack:///external \"@splunk/visualization-encoding/utils/dsl\"","webpack:///external \"@splunk/visualizations-shared/hocUtils\"","webpack:///external \"@splunk/visualizations-shared/JSONSchemaUtils\"","webpack:///./src/Map/PureMap/BubbleLayer.tsx","webpack:///./src/Map/PureMap/MapUtils.ts","webpack:///external \"d3-scale\"","webpack:///external \"chroma-js\"","webpack:///external \"@splunk/visualization-color-palettes\"","webpack:///./src/Map/PureMap/MarkerWrapper.tsx","webpack:///external \"maplibre-gl\"","webpack:///./src/Map/PureMap/Tooltip.tsx","webpack:///external \"@splunk/react-ui/Popover\"","webpack:///external \"@splunk/ui-utils/i18n\""],"names":[],"mappings":"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","file":"mapUtils.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 = 40);\n","module.exports = require(\"lodash\");","module.exports = require(\"@babel/runtime/helpers/toConsumableArray\");","module.exports = require(\"@babel/runtime/helpers/defineProperty\");","module.exports = require(\"react\");","module.exports = require(\"@splunk/visualization-schemas\");","module.exports = require(\"@babel/runtime/helpers/slicedToArray\");","module.exports = require(\"@splunk/visualization-encoding/utils/types\");","module.exports = require(\"@babel/runtime/helpers/taggedTemplateLiteral\");","module.exports = require(\"styled-components\");","module.exports = require(\"@splunk/visualizations-shared/colorUtils\");","import { isNumber } from '@splunk/visualization-encoding/utils/types';\nimport { getFieldsFromDSL } from '@splunk/visualization-encoding/utils/dsl';\nimport { deepMergeWithArrayPrimitiveOverrides } from '@splunk/visualizations-shared/hocUtils';\nimport { pickFieldFromJSONSchema } from '@splunk/visualizations-shared/JSONSchemaUtils';\nimport { GEO_LAT_AND_LONG_FIELD } from '../../Map/PureMap/BubbleLayer';\n\nexport const columnsNullToZeros = (config, dataSources, options) => {\n const { primary } = dataSources;\n const { columns, fields } = primary.data;\n let newColumns = columns;\n const mergedOptions = deepMergeWithArrayPrimitiveOverrides(\n {},\n options,\n pickFieldFromJSONSchema(config.optionsSchema, 'default')\n );\n if (mergedOptions.layers?.[0]?.type === 'bubble') {\n const latitudeField = getFieldsFromDSL(mergedOptions.layers[0].latitude, dataSources)[0] || '';\n const longitudeField = getFieldsFromDSL(mergedOptions.layers[0].longitude, dataSources)[0] || '';\n const excludedFields = [latitudeField, longitudeField, 'geobin'].concat(GEO_LAT_AND_LONG_FIELD);\n const indicesToEvaluate = new Set(\n fields.reduce((arr, e, i) => {\n const field = typeof e === 'string' ? e : e.name.toString();\n if (!excludedFields.includes(field)) {\n arr.push(i);\n }\n return arr;\n }, [])\n );\n\n newColumns = columns.map((column, i) => {\n if (indicesToEvaluate.has(i)) {\n // sanitize value and convert string to numeric numbers\n return column.map(value => (!value || !isNumber(value) ? 0 : +value));\n }\n return column;\n });\n }\n\n const modifiedDatasources = {\n ...dataSources,\n primary: {\n ...primary,\n data: {\n ...primary.data,\n columns: newColumns,\n },\n },\n };\n\n return modifiedDatasources;\n};\n","module.exports = require(\"@splunk/visualization-encoding/utils/dsl\");","module.exports = require(\"@splunk/visualizations-shared/hocUtils\");","module.exports = require(\"@splunk/visualizations-shared/JSONSchemaUtils\");","import * as React from 'react';\nimport styled from 'styled-components';\nimport type { Map } from 'maplibre-gl';\nimport { sum } from 'lodash';\nimport { isColor } from '@splunk/visualizations-shared/colorUtils';\nimport {\n bakeBubbleData,\n BubbleLayerType,\n DEFAULT_SERIES_COLORS,\n DEFAULT_RESULT_LIMIT,\n DEFAULT_CLUSTER_COLOR,\n getStaticColors,\n matchBubbleSize,\n} from './MapUtils';\nimport MarkerWrapper from './MarkerWrapper';\nimport type { TooltipProps } from './Tooltip';\n\nexport const GEO_BOUND_PREFIX = '_geo_bounds_';\nexport const GEO_LAT_AND_LONG_FIELD = ['_geo_long_field', '_geo_lat_field'];\nexport interface PieSegmentProps {\n start: number;\n end: number;\n radius: number;\n color: string;\n themeColor: string;\n segmentMetadata?: { name: string; value: number; color: string };\n handleBubbleClick?: (e: Event, name: string, count: number) => void;\n}\n\nexport const PieSegment = React.memo(\n ({\n start,\n end,\n radius,\n color,\n themeColor,\n segmentMetadata,\n handleBubbleClick,\n }: PieSegmentProps): JSX.Element => {\n const { name, value } = segmentMetadata ?? {};\n const handleSegmentClick = React.useCallback(\n e => {\n handleBubbleClick(e, name, value);\n },\n [name, value, handleBubbleClick]\n );\n\n if (end - start === 1) {\n return (\n <circle\n onClick={handleSegmentClick}\n cx={radius}\n cy={radius}\n r={radius}\n fill={color}\n fillOpacity={0.5}\n strokeWidth={1.5}\n stroke={color}\n />\n );\n }\n const a0 = 2 * Math.PI * (start - 0.25);\n const a1 = 2 * Math.PI * (end - 0.25);\n const x0 = Math.cos(a0);\n const y0 = Math.sin(a0);\n const x1 = Math.cos(a1);\n const y1 = Math.sin(a1);\n const arc = end - start > 0.5 ? 1 : 0;\n\n return (\n <path\n onClick={handleSegmentClick}\n d={`M ${radius} ${radius} L ${radius + radius * x0} ${\n radius + radius * y0\n } A ${radius} ${radius} 0 ${arc} 1 ${radius + radius * x1} ${\n radius + radius * y1\n } L ${radius} ${radius} A 0 0 0 ${arc} 0 ${radius} ${radius}`}\n fill={color}\n fillOpacity={0.8}\n stroke={themeColor}\n strokeWidth={2}\n strokeOpacity={0.3}\n />\n );\n }\n);\n\nPieSegment.displayName = 'MapBubblePieSegment';\n\nconst StyledMarkerWrapper = styled(MarkerWrapper)`\n cursor: pointer;\n`;\n\nexport interface BubbleProps {\n originalValues: number[];\n valueRange: number[];\n colors: string[];\n themeColor: string;\n isPie: boolean;\n latitude: number;\n longitude: number;\n bubbleSize: Required<TooltipProps['additionalFields'][number] & { value: number }>[];\n additionalFields?: TooltipProps['additionalFields'];\n map: React.MutableRefObject<Map>;\n handleMapClick?: any;\n}\n\nexport const Bubble = React.memo(\n ({\n originalValues,\n valueRange,\n colors,\n themeColor,\n isPie,\n latitude,\n longitude,\n bubbleSize,\n additionalFields = [],\n map,\n handleMapClick,\n }: BubbleProps): JSX.Element => {\n const onBubbleClick = React.useCallback(\n (e, name, value) => {\n handleMapClick(e, name, value);\n e.stopPropagation();\n },\n [handleMapClick]\n );\n\n const bubble = React.useMemo(() => {\n const allZeros = originalValues.every(v => v === 0);\n if (allZeros || !originalValues.length) {\n return null;\n }\n // sanitize values\n const values = originalValues.map(v => (v > 0 ? v : 0));\n\n // compute offsets for pie segments\n const offsets = [];\n let total = 0;\n values.forEach(count => {\n offsets.push(total);\n total += count;\n });\n\n const radius = matchBubbleSize(valueRange, total);\n const width = radius * 2;\n return (\n <svg width={width} height={width} viewBox={`-3 -3 ${width + 6} ${width + 6}`}>\n {isPie ? (\n <circle\n cx={radius}\n cy={radius}\n r={radius}\n fill=\"none\"\n strokeWidth={2}\n stroke={themeColor}\n strokeOpacity={0.3}\n />\n ) : null}\n {values.map((v, i) => (\n <PieSegment\n key={String(i)}\n start={offsets[i] / total}\n end={(offsets[i] + v) / total}\n radius={radius}\n color={colors[i]}\n themeColor={themeColor}\n segmentMetadata={bubbleSize[i]}\n handleBubbleClick={onBubbleClick}\n />\n ))}\n </svg>\n );\n }, [bubbleSize, colors, isPie, onBubbleClick, originalValues, themeColor, valueRange]);\n\n if (!bubble) {\n return null;\n }\n\n return (\n <StyledMarkerWrapper\n longitude={longitude}\n latitude={latitude}\n additionalFields={[...bubbleSize, ...additionalFields]}\n map={map}\n data-test-type=\"bubble\"\n >\n {bubble}\n </StyledMarkerWrapper>\n );\n }\n);\nBubble.displayName = 'MapBubble';\n\nexport interface BubbleLayerProps {\n bubbleLayer: BubbleLayerType;\n themeColorScheme: string;\n zoom: number;\n map: React.MutableRefObject<Map>;\n onMapClick?: any;\n}\n\nconst BubbleLayer = (props: BubbleLayerProps): JSX.Element => {\n const { bubbleLayer, themeColorScheme, map, zoom, onMapClick } = props;\n bubbleLayer.seriesColors = bubbleLayer.seriesColors || DEFAULT_SERIES_COLORS;\n bubbleLayer.bubbleSize = bubbleLayer.bubbleSize || [];\n const bakedData = React.useMemo(() => bakeBubbleData(bubbleLayer), [bubbleLayer]);\n const staticColors = React.useMemo(\n () => getStaticColors(bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors),\n [bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors]\n );\n const { data = [], dataRange = [], resultLimit, bubbleSizeFields, isPie } = bakedData ?? {};\n const { additionalTooltipFields = [] } = bubbleLayer;\n const roundedZoom = Math.round(zoom);\n const themeColor = themeColorScheme === 'light' ? '#ffffff' : '#1a1c20';\n const dynamicColors = bubbleLayer.dataColors;\n\n // filter data for the current zoom level and sort base on values\n const dataToRender = React.useMemo(\n () =>\n data\n .reduce((acc, datum, i) => {\n if (datum.zoom === roundedZoom) {\n acc.push({ data: datum, idx: i });\n }\n return acc;\n }, [])\n .slice(0, resultLimit || DEFAULT_RESULT_LIMIT)\n .sort((a, b) => sum(b.data.values) - sum(a.data.values)),\n [data, resultLimit, roundedZoom]\n );\n\n const handleMapClick = React.useCallback(\n (e, name, value, i) => {\n // retrieve metadata from the appropriate datum, indexed by i\n const metadata = dataToRender[i]?.data?.metadata ?? {};\n const payload = Object.keys(metadata).reduce(\n (acc, curr) => {\n const key = `row.${curr}.value`;\n const val = String(metadata[curr]);\n return { ...acc, [key]: val };\n },\n { name, value: String(value) }\n );\n\n onMapClick({ e, payload });\n },\n [dataToRender, onMapClick]\n );\n\n return (\n <>\n {dataToRender.map((datum, i) => {\n const colors = dynamicColors\n ? [\n dataToRender.map(obj =>\n isColor(dynamicColors[obj.idx]) ? dynamicColors[obj.idx] : DEFAULT_CLUSTER_COLOR\n )[i],\n ]\n : staticColors;\n\n const [longitude, latitude] = datum.data.coordinates;\n const bubbleSize = datum.data.values.map((value, index) => ({\n name: bubbleSizeFields[index],\n value,\n color: colors[index],\n }));\n\n const additionalFields = bubbleLayer.metadata\n ? additionalTooltipFields.map(field => ({\n name: field,\n value: datum.data.metadata[field],\n }))\n : [];\n\n return (\n <Bubble\n key={String(i)}\n originalValues={datum.data.values}\n valueRange={dataRange}\n colors={colors}\n themeColor={themeColor}\n isPie={isPie}\n longitude={longitude}\n latitude={latitude}\n bubbleSize={bubbleSize}\n additionalFields={additionalFields}\n map={map}\n handleMapClick={(e, name, value) => handleMapClick(e, name, value, i)}\n />\n );\n })}\n </>\n );\n};\n\nexport default BubbleLayer;\n","import { forEach, sum, isNumber, min as lodashMin, max as lodashMax, get, isEqual, isObject } from 'lodash';\nimport { LngLatBoundsLike } from 'maplibre-gl';\nimport { scalePow } from 'd3-scale';\nimport * as chroma from 'chroma-js';\nimport type { MapContextInterface, BaseTileConfig } from '@splunk/visualization-context/MapContext';\nimport { isColor } from '@splunk/visualizations-shared/colorUtils';\nimport { VIZ_CATEGORICAL } from '@splunk/visualization-color-palettes';\nimport { isNumber as isNumberUtil } from '@splunk/visualization-encoding/utils/types';\nimport type { GeoJsonDataType } from '@splunk/visualizations-shared/mapUtils';\nimport { LAYER_TYPE } from '@splunk/visualization-schemas';\n\nexport const MAX_LATITUDE = 90;\nexport const MIN_LATITUDE = -90;\nexport const MAX_LONGITUDE = 180;\nexport const MIN_LONGITUDE = -180;\nexport const DEFAULT_RESULT_LIMIT = 1000;\nexport const DEFAULT_CLUSTER_COLOR = '#909090';\nexport const DEFAULT_SERIES_COLORS = VIZ_CATEGORICAL;\n// MapLibre requires a map style specification number which is always 8\nexport const MAP_STYLE_VERSION_NUMBER = 8;\n// currently using one [min, max] value set for bubbles across all zoom levels\n// TODO: design choices on [min, max] bubble size for different zoom levels\nexport const MIN_BUBBLE_RADIUS = 7.11; // 10px\nexport const MAX_BUBBLE_RADIUS = 45.26; // 85px\nexport const DEFAULT_OPACITY = 0.8;\nconst LONGITUDE = 'longitude';\nconst LATITUDE = 'latitude';\ninterface GenericLayerType {\n type: string;\n latitude: number[];\n longitude: number[];\n dataColors?: string[];\n seriesColors: string[];\n additionalTooltipFields?: string[];\n resultLimit: number;\n metadata?: Array<{ [key: string]: number | string }>;\n}\n\nexport interface MarkerLayerType extends GenericLayerType {\n type: LAYER_TYPE.Marker;\n}\n\nexport interface BubbleLayerType extends GenericLayerType {\n type: LAYER_TYPE.Bubble;\n bubbleSize?: number[][] | number[];\n bubbleSizeFields: string[];\n geobin?: string[];\n}\n\ninterface BubbleLayerDatumType {\n zoom: number;\n values: number[];\n sanitizedValues: number[];\n coordinates: number[];\n}\n\nexport interface BubbleLayerDataType {\n data: BubbleLayerDatumType[];\n dataRange: number[];\n isPie: boolean;\n resultLimit: number;\n bubbleSizeFields: string[];\n}\n\nexport interface ChoroplethLayerType {\n type: LAYER_TYPE.Choropleth;\n areaIds: string[];\n areaValues: number[];\n dataColors: string[];\n additionalTooltipFields?: string[];\n geom?: GeoJsonDataType[];\n resultLimit?: number;\n metadata?: Array<{ [key: string]: number | string | GeoJsonDataType }>;\n source?: string;\n width?: string | number;\n height?: string | number;\n choroplethEmptyAreaColor?: string;\n choroplethStrokeColor?: string;\n choroplethOpacity?: number;\n}\n\n// todo(@ssahnoune) - look into this\nexport interface MapLayerClickPayloadType {\n name?: string;\n value?: string | number;\n /* cell values of all cells of clicked row with the field and value - in shape row.<field>.value */\n [key: string]: string | number;\n}\n\nexport type ClusterLayerType = BubbleLayerType | MarkerLayerType;\nexport type LayerType = ClusterLayerType | ChoroplethLayerType;\n/**\n * Construct a tile preset {key: config} by combining the default + custom tile configs\n * Also returns the default tile config for each theme - light/dark\n * @param {MapContextInterface} args\n * @param {BaseTileConfig[]} args.defaultTileConfig\n * @param {BaseTileConfig[]} args.customTileConfig\n * @returns {Object} tile preset\n */\nexport const getTilePreset = ({\n defaultTileConfig = [],\n customTileConfig = [],\n}: MapContextInterface): {\n tilePreset: Record<string, BaseTileConfig>;\n defaultTileLight: BaseTileConfig;\n defaultTileDark: BaseTileConfig;\n} => {\n const tilePreset = {};\n let defaultTileLight = {};\n let defaultTileDark = {};\n const tileConfigs = [].concat(defaultTileConfig).concat(customTileConfig);\n forEach(tileConfigs, tileConfig => {\n const key = tileConfig?.key;\n const updatedConfig = { theme: 'all', ...tileConfig, version: MAP_STYLE_VERSION_NUMBER };\n tilePreset[key] = updatedConfig;\n });\n\n if (defaultTileConfig.length > 0) {\n defaultTileLight =\n defaultTileConfig.find(config => config.theme === 'light') ??\n defaultTileConfig.find(config => config.theme === undefined);\n defaultTileDark =\n defaultTileConfig.find(config => config.theme === 'dark') ??\n defaultTileConfig.find(config => config.theme === undefined);\n }\n\n return { tilePreset, defaultTileLight, defaultTileDark };\n};\n\n/**\n * Check if baseLayerTileServer is in tilePreset and config matches current theme, if yes, return.\n * If no, construct a mapStyle with baseLayerTilerServer and baseLayerTileServerType\n * Else return default tile config based on current theme\n * @param {Object} args\n * @param {BaseTileConfig[]} args.tilePreset\n * @param {String} args.baseLayerTilerServer\n * @param {String} args.baseLayerTileServerType\n * @param {String} args.colorScheme\n * @param {BaseTileConfig} args.defaultTileDark\n * @param {BaseTileConfig} args.defaultTileLight\n * @returns {BaseTileConfig} mapStyle\n */\nexport const getMapStyle = ({\n showBaseLayer,\n baseLayerTileServer = '',\n baseLayerTileServerType = '',\n tilePreset = {},\n colorScheme = 'light',\n defaultTileLight = {},\n defaultTileDark = {},\n}: {\n showBaseLayer: boolean;\n baseLayerTileServer?: string;\n baseLayerTileServerType?: string;\n tilePreset?: Record<string, BaseTileConfig>;\n colorScheme?: string;\n defaultTileLight?: BaseTileConfig;\n defaultTileDark?: BaseTileConfig;\n}): BaseTileConfig => {\n if (!showBaseLayer) {\n return {\n version: MAP_STYLE_VERSION_NUMBER,\n sources: {\n 'base-tiles': {\n type: 'raster',\n tiles: [\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=',\n ],\n tileSize: 256,\n },\n },\n layers: [\n {\n id: 'base-layer',\n type: 'raster',\n source: 'base-tiles',\n minzoom: 0,\n maxzoom: 22,\n },\n ],\n };\n }\n\n if (\n baseLayerTileServer &&\n tilePreset[baseLayerTileServer] &&\n (tilePreset[baseLayerTileServer].theme === colorScheme ||\n tilePreset[baseLayerTileServer].theme === 'all')\n ) {\n return tilePreset[baseLayerTileServer];\n }\n\n if (baseLayerTileServer && baseLayerTileServerType) {\n let tiles = [];\n /**\n * Tile Server URLs (eg: http://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png) can specify the variable {s} which refers to a subdomain\n * Subdomains are used to help with browser parallel requests per domain limitation. These subdomains are typically single letters 'a', 'b' and 'c'\n * Refer to https://leafletjs.com/SlavaUkraini/reference.html#tilelayer and https://wiki.openstreetmap.org/wiki/Tile_servers\n */\n if (baseLayerTileServer.match(/^(https?):\\/\\/{(s|S)}\\../)) {\n /**\n * sXML (Leaflet) allows users to define their own tile server URLs + list of available subdomains\n * In order to preserve this behavior during conversion to splunk.map,\n * if the variable {s} or {S} is detected, replace it with 'a', 'b' and 'c' - default values for subdomains\n * TODO: in the future, add an additional prop - baseLayerTileServerSubdomains: ['x', 'y', 'z'], default being ['a', 'b', 'c']\n */\n tiles = [\n baseLayerTileServer.replace(/{(s|S)}/, 'a'),\n baseLayerTileServer.replace(/{(s|S)}/, 'b'),\n baseLayerTileServer.replace(/{(s|S)}/, 'c'),\n ];\n } else {\n tiles = [baseLayerTileServer];\n }\n // TODO: remove hardcoded style when we allow users to pass in layer style through Viz options\n const mapStyle = {\n version: MAP_STYLE_VERSION_NUMBER,\n sources: {\n 'base-tiles': {\n type: baseLayerTileServerType,\n tiles,\n tileSize: 256,\n },\n },\n layers: [\n {\n id: 'base-layer',\n type: 'raster',\n source: 'base-tiles',\n minzoom: 0,\n maxzoom: 24, // https://maplibre.org/maplibre-gl-js-docs/api/map/\n },\n ],\n };\n return mapStyle;\n }\n\n // if tile server is not present in the preset AND we can't construct a mapStyle, fall back on defaults\n return colorScheme === 'light' ? defaultTileLight : defaultTileDark;\n};\n\nexport interface ZoomConstraints {\n minZoom: number;\n maxZoom: number;\n}\n\nexport const getZoomConstraintsFromTileConfig = (\n tileConfig: BaseTileConfig,\n baseLayerTileServer?: string\n): ZoomConstraints => {\n const { sources, layers } = tileConfig;\n let matchedBaseLayerTileServer = false;\n // check sources for minzoom maxzoom first\n const sourceKeys = Object.keys(sources);\n for (let i = 0; i < sourceKeys.length; i += 1) {\n const { minzoom, maxzoom } = sources[sourceKeys[i]];\n if (baseLayerTileServer && sources[sourceKeys[i]].tiles.indexOf(baseLayerTileServer) !== -1) {\n matchedBaseLayerTileServer = true;\n }\n if (\n ((baseLayerTileServer && matchedBaseLayerTileServer) || !baseLayerTileServer) &&\n isNumber(minzoom) &&\n isNumber(maxzoom)\n ) {\n return {\n minZoom: minzoom,\n maxZoom: maxzoom,\n };\n }\n }\n // then check layers\n for (let i = 0; i < layers.length; i += 1) {\n const { minzoom, maxzoom } = layers[i];\n if (\n ((baseLayerTileServer && matchedBaseLayerTileServer) || !baseLayerTileServer) &&\n isNumber(minzoom) &&\n isNumber(maxzoom)\n ) {\n return {\n minZoom: minzoom,\n maxZoom: maxzoom,\n };\n }\n }\n // Maplibre default - would reset previous min/maxZoom https://maplibre.org/maplibre-gl-js-docs/api/map/\n return {\n minZoom: 0,\n maxZoom: 24,\n };\n};\n\nexport const getZoomLevelFromGeobin = (geobinStr: string): number => {\n if (!geobinStr) {\n return null;\n }\n // geostats cmds return geobin with zoom level 0-18, 0-99 in the geobinPattern covers the range\n const geobinPattern = /bin_id_zl_([0-9]{0,2})?_y_/g;\n const match = geobinPattern.exec(geobinStr);\n return (match?.length && parseInt(match[1], 10)) ?? null;\n};\n\n// Bubble colors - static\nexport const getStaticColors = (colorCount: number, colorArray: string[]): string[] => {\n if (colorCount < 0 || !colorCount) {\n return [DEFAULT_CLUSTER_COLOR];\n }\n if (!colorArray || !colorArray.length) {\n return [...Array(colorCount).keys()].map(i => DEFAULT_SERIES_COLORS[i]);\n }\n // loop through colorArray to pick the first $colorCount colors\n // start from begining again if colorCount > colorArray.length\n return [...Array(colorCount).keys()].map(i =>\n isColor(colorArray[i % colorArray.length]) ? colorArray[i % colorArray.length] : DEFAULT_CLUSTER_COLOR\n );\n};\n\n// Bubble size\nexport const matchBubbleSize = (dataRange: number[], data: number): any => {\n const size = scalePow().exponent(0.2).domain(dataRange).range([MIN_BUBBLE_RADIUS, MAX_BUBBLE_RADIUS])(\n data\n );\n\n if (size > MAX_BUBBLE_RADIUS) {\n return MAX_BUBBLE_RADIUS;\n }\n if (size < MIN_BUBBLE_RADIUS) {\n return MIN_BUBBLE_RADIUS;\n }\n return size;\n};\n\nexport const transposeArray = (array: number[][]): number[][] => {\n if (!array || !array.length || !array[0] || !array[0].length) {\n return [];\n }\n return array[0].map((_, i) => array.map(row => row[i]));\n};\n\n// sanitize values: update all null, undefined, or negative values to 0\nexport const sanitizeValues = (values: number[] | number[][]) => {\n // null / undefined\n if (!values) {\n return 0;\n }\n // number\n if (!Array.isArray(values)) {\n return values > 0 ? values : 0;\n }\n // array\n return values.map(arr => sanitizeValues(arr));\n};\n\nexport const bakeBubbleData = (layer: BubbleLayerType): BubbleLayerDataType => {\n if (\n !layer ||\n !layer.bubbleSize?.length ||\n !layer.geobin ||\n !layer.geobin.length ||\n !layer.latitude ||\n !layer.latitude.length ||\n !layer.longitude ||\n !layer.longitude.length\n ) {\n return null;\n }\n // if bubbleSize is passed as an array of single number array (data series)\n // e.g. [value0, value1, ...]\n // format each value as an array to unify data operations for data series and frames\n const sanitizedBubbleSize = sanitizeValues(layer.bubbleSize);\n let transposedBubbleSize: number[][];\n let transposedSanitizedBubbleSize: number[][];\n let isPie = false;\n // format array if bubbleSize is passed as an array of array (data frame)\n if (Array.isArray(layer.bubbleSize[0])) {\n // one-time array transpose,\n // e.g. from [column0data, column0data] (multi series)\n // to [[column0datum0, column1datum0], [column0datum1, column1data1], ...]\n // or e.g. from [column0data] (single series)\n // to [[column0data]]\n // for easy access of values at each geo location,\n // and min max pie size computation\n transposedBubbleSize = transposeArray(layer.bubbleSize as number[][]);\n transposedSanitizedBubbleSize = transposeArray(sanitizedBubbleSize);\n // if multiple series in the dataframe, set isPie to true\n if (layer.bubbleSize.length > 1) {\n isPie = true;\n }\n } else {\n transposedBubbleSize = layer.bubbleSize.map(n => [n]);\n transposedSanitizedBubbleSize = sanitizedBubbleSize.map(n => [n]);\n }\n if (!transposedBubbleSize || !transposedBubbleSize.length) {\n return null;\n }\n const data = layer.latitude\n .map((lat, i) => ({\n zoom: getZoomLevelFromGeobin(layer.geobin[i]),\n values: transposedBubbleSize[i],\n sanitizedValues: transposedSanitizedBubbleSize[i],\n coordinates: [layer.longitude[i], lat],\n metadata: layer.metadata ? layer.metadata[i] : {},\n }))\n .filter(d => Boolean(d.values));\n\n // compute the min/max value to encode min/max pie or bubble size\n let min = sum(transposedSanitizedBubbleSize[0]);\n let max = sum(transposedSanitizedBubbleSize[1]);\n transposedSanitizedBubbleSize.forEach(row => {\n const bubbleSize = sum(row);\n max = bubbleSize > max ? bubbleSize : max;\n min = bubbleSize < min ? bubbleSize : min;\n });\n return {\n data,\n dataRange: [min, max],\n isPie,\n resultLimit: layer.resultLimit,\n bubbleSizeFields: layer.bubbleSizeFields,\n };\n};\n\nexport const isValidLatLon = (latlon: Array<number | string>): boolean => {\n if (!latlon || !Array.isArray(latlon) || latlon.length !== 2) {\n return false;\n }\n const [lat, lon] = latlon;\n if (!isNumberUtil(lat) || !(lat >= MIN_LATITUDE && lat <= MAX_LATITUDE)) {\n return false;\n }\n if (!isNumberUtil(lon) || !(lon >= MIN_LONGITUDE && lon <= MAX_LONGITUDE)) {\n return false;\n }\n return true;\n};\n\n/**\n * Returns a list of all lat or lon coordinates used in a specified layer\n * @param {LayerType[]} layer\n * @param {string} field\n * @returns {number[]} list of lat coordinates or lon coordinates\n */\nconst getLatOrLonCoordinates = (layer: LayerType, field: string): number[] => {\n const getClusterValues = (clusterLayer: ClusterLayerType): number[] =>\n get(clusterLayer, field, []).slice(\n 0,\n clusterLayer.type === LAYER_TYPE.Marker && clusterLayer.resultLimit\n ? clusterLayer.resultLimit\n : DEFAULT_RESULT_LIMIT\n );\n\n const getChoroplethValues = (choroplethLayer: ChoroplethLayerType): number[] => {\n const slicedGeomList = choroplethLayer.geom.slice(0, choroplethLayer.resultLimit);\n const flatCoordinates = slicedGeomList.flatMap(geomObject => geomObject.coordinates.flat(2));\n return flatCoordinates.map(coord => coord[field === LONGITUDE ? 0 : 1]);\n };\n\n return layer.type === LAYER_TYPE.Choropleth ? getChoroplethValues(layer) : getClusterValues(layer);\n};\n\n/**\n * Returns the min and max LongLat pairs to determine the layer boundaries to fit all markers/bubbles\n * @param {LayerType[]} layers\n * @returns {LngLatBoundsLike}\n */\nexport const getGlobalLayerBoundaries = (layers: LayerType[]): LngLatBoundsLike => {\n const isLayerValid = (field: string): boolean =>\n layers.every(layer => layer[field] || (layer as ChoroplethLayerType).geom);\n const getDefaultMax = (field: string) => (field === LONGITUDE ? MAX_LONGITUDE : MAX_LATITUDE);\n const getDefaultMin = (field: string) => (field === LONGITUDE ? MIN_LONGITUDE : MIN_LATITUDE);\n\n if (!layers || !Array.isArray(layers) || !layers.length) {\n return null;\n }\n\n const getMin = (field: string): number => {\n if (!isLayerValid(field)) {\n return getDefaultMin(field);\n }\n return layers.reduce((prevVal, layer) => {\n const coordinatesNumArr = getLatOrLonCoordinates(layer, field).map(x => +x);\n return lodashMin([prevVal, ...coordinatesNumArr]);\n }, getDefaultMax(field));\n };\n\n const getMax = (field: string): number => {\n if (!isLayerValid(field)) {\n return getDefaultMax(field);\n }\n return layers.reduce((prevVal, layer) => {\n const coordinatesNumArr = getLatOrLonCoordinates(layer, field).map(Number);\n return lodashMax([prevVal, ...coordinatesNumArr]);\n }, getDefaultMin(field));\n };\n\n return [\n [getMin(LONGITUDE), getMin(LATITUDE)],\n [getMax(LONGITUDE), getMax(LATITUDE)],\n ];\n};\n\nexport const getScaledOpacities = (colors: string[], cfgOpacity: number): number[] => {\n // extract opacity information from 8 digit hex codes\n const opacities = colors?.map(color => (color?.length === 9 ? chroma(color).alpha() ?? 1 : 1));\n // opacity cannot be greater than configured opacity\n return opacities?.map(opacity => opacity * cfgOpacity);\n};\n\nexport const compareBaseStyles = (curr, next): boolean => {\n const currBaseLayer = curr?.layers?.find(layer => layer?.id === 'base-layer');\n const nextBaseLayer = next?.layers?.find(layer => layer?.id === 'base-layer');\n const currBaseSource = get(curr?.sources, (currBaseLayer?.source as string) ?? '');\n const nextBaseSource = get(next?.sources, (nextBaseLayer?.source as string) ?? '');\n\n if (!currBaseLayer || !nextBaseLayer || !currBaseSource || !nextBaseSource) {\n return false;\n }\n\n return isEqual(currBaseLayer, nextBaseLayer) && isEqual(currBaseSource, nextBaseSource);\n};\n\nexport const formatMetadata = (\n choroplethLayer: ChoroplethLayerType,\n i: number\n): { [key: string]: string } => {\n if (!choroplethLayer || !choroplethLayer.areaIds || !choroplethLayer.areaValues) return {};\n if (i >= choroplethLayer.areaIds.length) return {};\n\n const metadata = choroplethLayer.metadata ? choroplethLayer.metadata[i] : {};\n const name = choroplethLayer.areaIds[i];\n const value = choroplethLayer.areaValues[i];\n const base = { name, value: String(value) };\n\n return Object.keys(metadata).reduce((result, curr) => {\n const key = `row.${curr}.value`;\n const val = isObject(metadata[curr]) ? JSON.stringify(metadata[curr]) : String(metadata[curr]);\n return { ...result, [key]: val };\n }, base);\n};\n","module.exports = require(\"d3-scale\");","module.exports = require(\"chroma-js\");","module.exports = require(\"@splunk/visualization-color-palettes\");","import type { Map } from 'maplibre-gl';\nimport { Marker } from 'maplibre-gl';\nimport * as React from 'react';\nimport type { TooltipProps } from './Tooltip';\nimport Tooltip from './Tooltip';\n\nexport interface MarkerWrapperProps extends React.HTMLAttributes<HTMLDivElement> {\n latitude: number;\n longitude: number;\n areaId?: string;\n areaValue?: number;\n additionalFields?: TooltipProps['additionalFields'];\n map: React.MutableRefObject<Map>;\n isChoroplethTooltipOpen?: boolean;\n}\n\nconst MarkerWrapper = ({\n longitude,\n latitude,\n areaId,\n areaValue,\n additionalFields = [],\n map,\n isChoroplethTooltipOpen,\n children,\n ...otherProps\n}: MarkerWrapperProps): JSX.Element => {\n const container = React.useRef<HTMLDivElement>();\n const marker = React.useRef<Marker>();\n const [isTooltipOpen, setTooltipOpenStatus] = React.useState(false);\n\n const isChoroplethTooltip = React.useCallback(() => isChoroplethTooltipOpen !== undefined, [\n isChoroplethTooltipOpen,\n ]);\n\n const openTooltip = React.useCallback(() => setTooltipOpenStatus(true), []);\n const closeTooltip = React.useCallback(() => setTooltipOpenStatus(false), []);\n\n const cleanupMarker = React.useCallback(() => {\n if (marker.current) {\n marker.current.remove();\n marker.current = undefined;\n }\n }, []);\n\n React.useEffect(() => {\n try {\n if (marker.current) {\n marker.current.setLngLat([longitude, latitude]);\n } else {\n marker.current = new Marker({ element: container.current });\n marker.current.setLngLat([longitude, latitude]);\n marker.current.addTo(map.current);\n }\n } catch (error) {\n console.error(error);\n cleanupMarker();\n }\n }, [latitude, longitude, map]);\n\n React.useEffect(() => cleanupMarker, []);\n\n return (\n <div style={{ visibility: isChoroplethTooltip() ? 'hidden' : 'visible' }}>\n <div\n style={{ visibility: isChoroplethTooltip() ? 'hidden' : 'visible' }}\n ref={container}\n data-test=\"map-marker\"\n onMouseOver={openTooltip}\n onMouseLeave={closeTooltip}\n onFocus={openTooltip}\n onBlur={closeTooltip}\n {...otherProps}\n >\n {children}\n </div>\n\n <div>\n <Tooltip\n open={isChoroplethTooltip() ? isChoroplethTooltipOpen : isTooltipOpen}\n anchor={container.current}\n latitude={isChoroplethTooltip() ? null : latitude}\n longitude={isChoroplethTooltip() ? null : longitude}\n areaId={areaId}\n areaValue={areaValue}\n additionalFields={additionalFields}\n />\n </div>\n </div>\n );\n};\n\nexport default MarkerWrapper;\n","module.exports = require(\"maplibre-gl\");","import * as React from 'react';\nimport styled from 'styled-components';\nimport Popover from '@splunk/react-ui/Popover';\nimport { _ } from '@splunk/ui-utils/i18n';\n\nconst StyledPopover = styled(Popover)`\n width: 250px;\n font-size: 12px;\n`;\n\nconst StyledTable = styled.table`\n margin: 2px 6px 2px 6px;\n width: calc(100% - 12px);\n`;\n\nconst StyledTitleColumn = styled.td`\n opacity: 0.85;\n`;\n\nconst StyledValueColumn = styled.td`\n text-align: right;\n`;\n\nconst StyledColorBlock = styled.div`\n background-color: ${props => props.color};\n display: inline-block;\n margin-right: 4px;\n border-radius: 2px;\n width: 6px;\n height: 11px;\n transform: translateY(1px);\n`;\n\nexport const convertDegToDMS = (decimalDegree: number, type: 'latitude' | 'longitude'): string => {\n const truncate = n => (n > 0 ? Math.floor(n) : Math.ceil(n));\n const absoluteDegree = Math.abs(decimalDegree);\n let degrees = truncate(absoluteDegree);\n let minutes = truncate((absoluteDegree - degrees) * 60);\n let seconds = Math.round((absoluteDegree - degrees - minutes / 60) * 3600);\n if (seconds === 60) {\n minutes += 1;\n seconds = 0;\n }\n if (minutes === 60) {\n degrees += 1;\n minutes = 0;\n }\n let direction: string;\n if (type === 'longitude') {\n direction = decimalDegree < 0 ? 'W' : 'E';\n } else if (type === 'latitude') {\n direction = decimalDegree < 0 ? 'S' : 'N';\n }\n return `${degrees}° ${minutes}' ${seconds}\" ${direction}`;\n};\n\nexport interface TooltipProps {\n open?: boolean;\n anchor?: HTMLElement;\n latitude?: number;\n longitude?: number;\n areaId?: string;\n areaValue?: number;\n additionalFields?: Array<{ name: string; value: number | string; color?: string }>;\n}\n// only want latitude/longitude for marker and bubble\n// omit for choropleth, and put areaid, areavalue instead\nconst Tooltip = ({\n open,\n anchor,\n latitude,\n longitude,\n areaId,\n areaValue,\n additionalFields = [],\n}: TooltipProps): JSX.Element => (\n <StyledPopover\n open={open}\n animation={false}\n anchor={anchor}\n data-test=\"map-marker-tooltip\"\n defaultPlacement=\"above\"\n >\n <StyledTable>\n <tbody>\n {areaId && areaValue && (\n <tr>\n <StyledTitleColumn data-test=\"area-id\">{areaId}</StyledTitleColumn>\n <StyledValueColumn data-test=\"area-value\">{areaValue}</StyledValueColumn>\n </tr>\n )}\n {latitude && (\n <tr>\n <StyledTitleColumn>{_('Latitude')}</StyledTitleColumn>\n <StyledValueColumn data-test=\"latitude\">\n {convertDegToDMS(latitude, 'latitude')}\n </StyledValueColumn>\n </tr>\n )}\n {longitude && (\n <tr>\n <StyledTitleColumn>{_('Longitude')}</StyledTitleColumn>\n <StyledValueColumn data-test=\"longitude\">\n {convertDegToDMS(longitude, 'longitude')}\n </StyledValueColumn>\n </tr>\n )}\n {additionalFields\n .filter(({ value }) => value && String(value) !== '0')\n .map(({ name, value, color }, index) => (\n <tr key={String(index)}>\n <StyledTitleColumn data-test=\"field-title\">\n {color ? <StyledColorBlock data-test=\"field-color\" color={color} /> : null}\n {name}\n </StyledTitleColumn>\n <StyledValueColumn data-test=\"field-value\">{value}</StyledValueColumn>\n </tr>\n ))}\n </tbody>\n </StyledTable>\n </StyledPopover>\n);\n\nexport default Tooltip;\n","module.exports = require(\"@splunk/react-ui/Popover\");","module.exports = require(\"@splunk/ui-utils/i18n\");"],"sourceRoot":""}
@@ -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 = 56);
90
+ /******/ return __webpack_require__(__webpack_require__.s = 54);
91
91
  /******/ })
92
92
  /************************************************************************/
93
93
  /******/ ({
@@ -102,14 +102,14 @@ module.exports = require("lodash");
102
102
  /***/ 1:
103
103
  /***/ (function(module, exports) {
104
104
 
105
- module.exports = require("@babel/runtime/helpers/defineProperty");
105
+ module.exports = require("@splunk/visualizations-shared/numberUtils");
106
106
 
107
107
  /***/ }),
108
108
 
109
- /***/ 2:
109
+ /***/ 3:
110
110
  /***/ (function(module, exports) {
111
111
 
112
- module.exports = require("@splunk/visualizations-shared/numberUtils");
112
+ module.exports = require("@babel/runtime/helpers/defineProperty");
113
113
 
114
114
  /***/ }),
115
115
 
@@ -120,7 +120,7 @@ module.exports = require("@splunk/visualizations-shared/domUtils");
120
120
 
121
121
  /***/ }),
122
122
 
123
- /***/ 56:
123
+ /***/ 54:
124
124
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
125
125
 
126
126
  "use strict";
@@ -156,11 +156,11 @@ __webpack_require__.r(__webpack_exports__);
156
156
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lighten", function() { return lighten; });
157
157
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "darken", function() { return darken; });
158
158
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "handleValueClickCallback", function() { return handleValueClickCallback; });
159
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
159
+ /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
160
160
  /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
161
161
  /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0);
162
162
  /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_1__);
163
- /* harmony import */ var _splunk_visualizations_shared_numberUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);
163
+ /* harmony import */ var _splunk_visualizations_shared_numberUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
164
164
  /* harmony import */ var _splunk_visualizations_shared_numberUtils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_splunk_visualizations_shared_numberUtils__WEBPACK_IMPORTED_MODULE_2__);
165
165
  /* harmony import */ var _splunk_visualizations_shared_domUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5);
166
166
  /* harmony import */ var _splunk_visualizations_shared_domUtils__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_splunk_visualizations_shared_domUtils__WEBPACK_IMPORTED_MODULE_3__);
@@ -416,7 +416,7 @@ var computeColors = function computeColors(props, defaultColors) {
416
416
  * @param {Number} props.value // The major/trend value
417
417
  * @param {Number} props.numberPrecision
418
418
  * @param {Bool} props.shouldUseThousandSeparators
419
- * @param {Bool} props.shouldAbbreviateTrendValue
419
+ * @param {Bool} props.shouldAbbreviateValue
420
420
  * @returns {Number} major or trend text
421
421
  */
422
422
 
@@ -424,11 +424,11 @@ var computeText = function computeText(_ref4) {
424
424
  var value = _ref4.value,
425
425
  numberPrecision = _ref4.numberPrecision,
426
426
  shouldUseThousandSeparators = _ref4.shouldUseThousandSeparators,
427
- shouldAbbreviateTrendValue = _ref4.shouldAbbreviateTrendValue;
427
+ shouldAbbreviateValue = _ref4.shouldAbbreviateValue;
428
428
  var text = Object(_splunk_visualizations_shared_numberUtils__WEBPACK_IMPORTED_MODULE_2__["isNumerial"])(value) ? Object(_splunk_visualizations_shared_numberUtils__WEBPACK_IMPORTED_MODULE_2__["formatNumber"])(value, numberPrecision, {
429
429
  useThousandSeparators: shouldUseThousandSeparators,
430
430
  // todo: need update formatNumber
431
- useTrendUnits: shouldAbbreviateTrendValue
431
+ useTrendUnits: shouldAbbreviateValue
432
432
  }) : value; // When text is undefined, return empty string
433
433
 
434
434
  text = text || '';
@@ -440,19 +440,21 @@ var computeText = function computeText(_ref4) {
440
440
  * @param {Number} props.majorValue
441
441
  * @param {Number} props.numberPrecision
442
442
  * @param {Bool} props.shouldUseThousandSeparators
443
+ * @param {Bool} props.shouldAbbreviateMajorValue
443
444
  * @returns {String} majorText
444
445
  */
445
446
 
446
447
  var getMajorText = function getMajorText(_ref5) {
447
448
  var majorValue = _ref5.majorValue,
448
449
  numberPrecision = _ref5.numberPrecision,
449
- shouldUseThousandSeparators = _ref5.shouldUseThousandSeparators;
450
+ shouldUseThousandSeparators = _ref5.shouldUseThousandSeparators,
451
+ shouldAbbreviateMajorValue = _ref5.shouldAbbreviateMajorValue;
450
452
  return computeText({
451
453
  value: majorValue === null ? 'N/A' : majorValue,
452
454
  // if majorValue is null, use `N/A`.
453
455
  numberPrecision: numberPrecision,
454
456
  shouldUseThousandSeparators: shouldUseThousandSeparators,
455
- shouldAbbreviateTrendValue: false
457
+ shouldAbbreviateValue: shouldAbbreviateMajorValue
456
458
  });
457
459
  };
458
460
  /*
@@ -480,7 +482,7 @@ var getTrendText = function getTrendText(_ref6) {
480
482
  value: value,
481
483
  numberPrecision: numberPrecision,
482
484
  shouldUseThousandSeparators: shouldUseThousandSeparators,
483
- shouldAbbreviateTrendValue: shouldAbbreviateTrendValue
485
+ shouldAbbreviateValue: shouldAbbreviateTrendValue
484
486
  });
485
487
  };
486
488
 
@@ -624,6 +626,7 @@ var getUnderLabel = function getUnderLabel(_ref10) {
624
626
  * @param {Number} props.numberPrecision
625
627
  * @param {Bool} props.shouldUseThousandSeparators
626
628
  * @param {Bool} props.shouldAbbreviateTrendValue
629
+ * @param {Bool} props.shouldAbbreviateMajorValue
627
630
  * @returns {Number, Number, Number, Number} Major text, trend text, major text size, trend text size
628
631
  */
629
632
 
@@ -638,14 +641,16 @@ var getMajorAndTrend = function getMajorAndTrend(_ref11) {
638
641
  unit = _ref11.unit,
639
642
  numberPrecision = _ref11.numberPrecision,
640
643
  shouldUseThousandSeparators = _ref11.shouldUseThousandSeparators,
641
- shouldAbbreviateTrendValue = _ref11.shouldAbbreviateTrendValue;
644
+ shouldAbbreviateTrendValue = _ref11.shouldAbbreviateTrendValue,
645
+ shouldAbbreviateMajorValue = _ref11.shouldAbbreviateMajorValue;
642
646
  var majorTextSpaceRatio = Object(_splunk_visualizations_shared_numberUtils__WEBPACK_IMPORTED_MODULE_2__["isNumerial"])(trendValue) && shouldShowTrend(trendDisplay) ? 0.6 : 1;
643
647
  var textContentWidth = width * 0.9;
644
648
  var textContentHeight = height * 0.9;
645
649
  var majorText = getMajorText({
646
650
  majorValue: majorValue,
647
651
  numberPrecision: numberPrecision,
648
- shouldUseThousandSeparators: shouldUseThousandSeparators
652
+ shouldUseThousandSeparators: shouldUseThousandSeparators,
653
+ shouldAbbreviateMajorValue: shouldAbbreviateMajorValue
649
654
  });
650
655
  var majorTextFontSize = majorFontSize || getMajorFontSize({
651
656
  width: textContentWidth,
@@ -771,6 +776,7 @@ var updateVizInSmallSpace = function updateVizInSmallSpace(_ref12) {
771
776
  * @param {Number} props.numberPrecision
772
777
  * @param {Bool} props.shouldUseThousandSeparators
773
778
  * @param {Bool} props.shouldAbbreviateTrendValue
779
+ * @param {Bool} props.shouldAbbreviateMajorValue
774
780
  * @param {Object} props.toRemoveList
775
781
  * @returns {Object} results
776
782
  * @returns {String} results.majorText
@@ -795,6 +801,7 @@ var computeSingleValueContent = function computeSingleValueContent(_ref13) {
795
801
  numberPrecision = _ref13.numberPrecision,
796
802
  shouldUseThousandSeparators = _ref13.shouldUseThousandSeparators,
797
803
  shouldAbbreviateTrendValue = _ref13.shouldAbbreviateTrendValue,
804
+ shouldAbbreviateMajorValue = _ref13.shouldAbbreviateMajorValue,
798
805
  toRemoveList = _ref13.toRemoveList;
799
806
 
800
807
  var _getMajorAndTrend = getMajorAndTrend({
@@ -808,7 +815,8 @@ var computeSingleValueContent = function computeSingleValueContent(_ref13) {
808
815
  unit: unit,
809
816
  numberPrecision: numberPrecision,
810
817
  shouldUseThousandSeparators: shouldUseThousandSeparators,
811
- shouldAbbreviateTrendValue: shouldAbbreviateTrendValue
818
+ shouldAbbreviateTrendValue: shouldAbbreviateTrendValue,
819
+ shouldAbbreviateMajorValue: shouldAbbreviateMajorValue
812
820
  }),
813
821
  majorText = _getMajorAndTrend.majorText,
814
822
  trendText = _getMajorAndTrend.trendText,
@@ -897,6 +905,7 @@ var minimallyTruncateStringToWidth = function minimallyTruncateStringToWidth(_re
897
905
  * @param {Number} props.numberPrecision
898
906
  * @param {Bool} props.shouldUseThousandSeparators
899
907
  * @param {Bool} props.shouldAbbreviateTrendValue
908
+ * @param {Bool} props.shouldAbbreviateMajorValue,
900
909
  * @param {Object} props.toRemoveList
901
910
  * @param {Bool} props.smallViz
902
911
  * @returns {Object} results
@@ -922,6 +931,7 @@ var computeSingleValueRadialContent = function computeSingleValueRadialContent(_
922
931
  numberPrecision = _ref15.numberPrecision,
923
932
  shouldUseThousandSeparators = _ref15.shouldUseThousandSeparators,
924
933
  shouldAbbreviateTrendValue = _ref15.shouldAbbreviateTrendValue,
934
+ shouldAbbreviateMajorValue = _ref15.shouldAbbreviateMajorValue,
925
935
  smallViz = _ref15.smallViz;
926
936
 
927
937
  var _getMajorAndTrend2 = getMajorAndTrend({
@@ -935,7 +945,8 @@ var computeSingleValueRadialContent = function computeSingleValueRadialContent(_
935
945
  unit: unit,
936
946
  numberPrecision: numberPrecision,
937
947
  shouldUseThousandSeparators: shouldUseThousandSeparators,
938
- shouldAbbreviateTrendValue: shouldAbbreviateTrendValue
948
+ shouldAbbreviateTrendValue: shouldAbbreviateTrendValue,
949
+ shouldAbbreviateMajorValue: shouldAbbreviateMajorValue
939
950
  }),
940
951
  majorText = _getMajorAndTrend2.majorText,
941
952
  trendText = _getMajorAndTrend2.trendText,
@@ -966,7 +977,8 @@ var computeSingleValueRadialContent = function computeSingleValueRadialContent(_
966
977
  trendDisplay: trendDisplay,
967
978
  numberPrecision: numberPrecision,
968
979
  shouldUseThousandSeparators: shouldUseThousandSeparators,
969
- shouldAbbreviateTrendValue: shouldAbbreviateTrendValue
980
+ shouldAbbreviateTrendValue: shouldAbbreviateTrendValue,
981
+ shouldAbbreviateMajorValue: shouldAbbreviateMajorValue
970
982
  });
971
983
 
972
984
  majorText = _getMajorAndTrend3.majorText;