@splunk/visualizations 26.0.0 → 26.1.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.
- package/Area.config.js +102 -18
- package/Area.config.js.map +1 -1
- package/Area.js +618 -221
- package/Area.js.map +1 -1
- package/Bar.config.js +104 -20
- package/Bar.config.js.map +1 -1
- package/Bar.js +624 -219
- package/Bar.js.map +1 -1
- package/Bubble.config.js +94 -20
- package/Bubble.config.js.map +1 -1
- package/Bubble.js +606 -211
- package/Bubble.js.map +1 -1
- package/ChoroplethSvg.config.js +65 -14
- package/ChoroplethSvg.config.js.map +1 -1
- package/ChoroplethSvg.js +550 -183
- package/ChoroplethSvg.js.map +1 -1
- package/Column.config.js +103 -18
- package/Column.config.js.map +1 -1
- package/Column.js +637 -221
- package/Column.js.map +1 -1
- package/Ellipse.config.js +82 -17
- package/Ellipse.config.js.map +1 -1
- package/Ellipse.js +425 -148
- package/Ellipse.js.map +1 -1
- package/Events.config.js +100 -18
- package/Events.config.js.map +1 -1
- package/Events.js +752 -293
- package/Events.js.map +1 -1
- package/FillerGauge.config.js +96 -27
- package/FillerGauge.config.js.map +1 -1
- package/FillerGauge.js +759 -374
- package/FillerGauge.js.map +1 -1
- package/Image.config.js +62 -18
- package/Image.config.js.map +1 -1
- package/Image.js +419 -154
- package/Image.js.map +1 -1
- package/Line.config.js +106 -22
- package/Line.config.js.map +1 -1
- package/Line.js +631 -223
- package/Line.js.map +1 -1
- package/LinkGraph.config.js +72 -22
- package/LinkGraph.config.js.map +1 -1
- package/LinkGraph.js +632 -219
- package/LinkGraph.js.map +1 -1
- package/MIGRATION.md +1082 -0
- package/Map.config.js +241 -97
- package/Map.config.js.map +1 -1
- package/Map.js +1195 -595
- package/Map.js.map +1 -1
- package/Markdown.config.js +70 -20
- package/Markdown.config.js.map +1 -1
- package/Markdown.js +460 -195
- package/Markdown.js.map +1 -1
- package/MarkerGauge.config.js +79 -21
- package/MarkerGauge.config.js.map +1 -1
- package/MarkerGauge.js +802 -411
- package/MarkerGauge.js.map +1 -1
- package/ParallelCoordinates.config.js +72 -18
- package/ParallelCoordinates.config.js.map +1 -1
- package/ParallelCoordinates.js +853 -484
- package/ParallelCoordinates.js.map +1 -1
- package/Pie.config.js +75 -22
- package/Pie.config.js.map +1 -1
- package/Pie.js +612 -212
- package/Pie.js.map +1 -1
- package/Punchcard.config.js +81 -29
- package/Punchcard.config.js.map +1 -1
- package/Punchcard.js +844 -379
- package/Punchcard.js.map +1 -1
- package/Rectangle.config.js +85 -19
- package/Rectangle.config.js.map +1 -1
- package/Rectangle.js +432 -152
- package/Rectangle.js.map +1 -1
- package/Sankey.config.js +84 -22
- package/Sankey.config.js.map +1 -1
- package/Sankey.js +878 -342
- package/Sankey.js.map +1 -1
- package/Scatter.config.js +96 -22
- package/Scatter.config.js.map +1 -1
- package/Scatter.js +607 -212
- package/Scatter.js.map +1 -1
- package/SingleValue.config.js +94 -24
- package/SingleValue.config.js.map +1 -1
- package/SingleValue.js +1182 -650
- package/SingleValue.js.map +1 -1
- package/SingleValueBasic.js +286 -225
- package/SingleValueBasic.js.map +1 -1
- package/SingleValueIcon.config.js +92 -22
- package/SingleValueIcon.config.js.map +1 -1
- package/SingleValueIcon.js +965 -506
- package/SingleValueIcon.js.map +1 -1
- package/SingleValueRadial.config.js +99 -26
- package/SingleValueRadial.config.js.map +1 -1
- package/SingleValueRadial.js +1167 -616
- package/SingleValueRadial.js.map +1 -1
- package/SparkLine.js +126 -67
- package/SparkLine.js.map +1 -1
- package/Table.config.js +73 -20
- package/Table.config.js.map +1 -1
- package/Table.js +810 -322
- package/Table.js.map +1 -1
- package/common/Charting.js +107 -35
- package/common/Charting.js.map +1 -1
- package/common/ChartingApi.js +18 -7
- package/common/ChartingApi.js.map +1 -1
- package/common/EventsDoc.js +76 -22
- package/common/EventsDoc.js.map +1 -1
- package/common/GaugeMajorTicks.js +68 -58
- package/common/GaugeMajorTicks.js.map +1 -1
- package/common/GaugeValueMarker.js +43 -34
- package/common/GaugeValueMarker.js.map +1 -1
- package/common/OptionsDoc.js +156 -65
- package/common/OptionsDoc.js.map +1 -1
- package/common/OverviewDoc.js +33 -5
- package/common/OverviewDoc.js.map +1 -1
- package/common/SplunkVisualization.js +31 -4
- package/common/SplunkVisualization.js.map +1 -1
- package/common/SplunkVisualizationApi.js +8 -2
- package/common/SplunkVisualizationApi.js.map +1 -1
- package/common/ThemesDoc.js +27 -14
- package/common/ThemesDoc.js.map +1 -1
- package/common/chartingUtils.js +44 -12
- package/common/chartingUtils.js.map +1 -1
- package/common/docUtils.js +11 -1
- package/common/docUtils.js.map +1 -1
- package/common/gaugeUtils.js +173 -90
- package/common/gaugeUtils.js.map +1 -1
- package/common/shapeUtils.js +14 -2
- package/common/shapeUtils.js.map +1 -1
- package/common/utils/configUtils.js +49 -14
- package/common/utils/configUtils.js.map +1 -1
- package/common/utils/dataUtils.js +7 -2
- package/common/utils/dataUtils.js.map +1 -1
- package/common/utils/hocUtils.js +3 -1
- package/common/utils/hocUtils.js.map +1 -1
- package/common/utils/layoutUtils.js +1 -0
- package/common/utils/layoutUtils.js.map +1 -1
- package/common/utils/mapUtils.js +287 -127
- package/common/utils/mapUtils.js.map +1 -1
- package/common/utils/singleValueUtils.js +241 -196
- package/common/utils/singleValueUtils.js.map +1 -1
- package/common/utils/testHelper.js +9 -0
- package/common/utils/testHelper.js.map +1 -1
- package/common/utils/trellisUtils.js +61 -0
- package/common/utils/trellisUtils.js.map +1 -1
- package/common/utils/urlUtils.js +2 -0
- package/common/utils/urlUtils.js.map +1 -1
- package/common/withDashboardViz.js +274 -95
- package/common/withDashboardViz.js.map +1 -1
- package/package.json +16 -18
|
@@ -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":["types_1","require","dsl_1","hocUtils_1","JSONSchemaUtils_1","BubbleLayer_1","columnsNullToZeros","config","dataSources","options","primary","_primary$data","data","columns","fields","newColumns","mergedOptions","deepMergeWithArrayPrimitiveOverrides","pickFieldFromJSONSchema","optionsSchema","_b","_a","layers","type","latitudeField","getFieldsFromDSL","latitude","longitudeField","longitude","excludedFields","concat","GEO_LAT_AND_LONG_FIELD","indicesToEvaluate","Set","reduce","arr","e","i","field","name","toString","includes","push","map","column","has","value","isNumber","modifiedDatasources","Object","assign","exports","React","styled_components_1","lodash_1","colorUtils_1","MapUtils_1","MarkerWrapper_1","GEO_BOUND_PREFIX","PieSegment","memo","_ref","start","end","radius","color","themeColor","segmentMetadata","handleBubbleClick","_ref2","handleSegmentClick","useCallback","createElement","onClick","cx","cy","r","fill","fillOpacity","strokeWidth","stroke","a0","Math","PI","a1","x0","cos","y0","sin","x1","y1","arc","d","strokeOpacity","displayName","StyledMarkerWrapper","default","_templateObject","_taggedTemplateLiteral","Bubble","_ref3","originalValues","valueRange","colors","isPie","bubbleSize","_ref3$additionalField","additionalFields","handleMapClick","onBubbleClick","stopPropagation","bubble","useMemo","allZeros","every","v","length","values","offsets","total","forEach","count","matchBubbleSize","width","height","viewBox","key","String","_toConsumableArray","BubbleLayer","props","bubbleLayer","themeColorScheme","zoom","onMapClick","seriesColors","DEFAULT_SERIES_COLORS","bakedData","bakeBubbleData","staticColors","getStaticColors","_ref4","_ref4$data","_ref4$dataRange","dataRange","resultLimit","bubbleSizeFields","_bubbleLayer$addition","additionalTooltipFields","roundedZoom","round","dynamicColors","dataColors","dataToRender","acc","datum","idx","slice","DEFAULT_RESULT_LIMIT","sort","a","b","sum","metadata","_c","payload","keys","curr","val","_defineProperty","Fragment","obj","isColor","DEFAULT_CLUSTER_COLOR","_datum$data$coordinat","_slicedToArray","coordinates","index","d3_scale_1","chroma","visualization_color_palettes_1","MAX_LATITUDE","MIN_LATITUDE","MAX_LONGITUDE","MIN_LONGITUDE","VIZ_CATEGORICAL","MAP_STYLE_VERSION_NUMBER","MIN_BUBBLE_RADIUS","MAX_BUBBLE_RADIUS","DEFAULT_OPACITY","LONGITUDE","LATITUDE","LAYER_TYPE","getTilePreset","_ref$defaultTileConfi","defaultTileConfig","_ref$customTileConfig","customTileConfig","tilePreset","defaultTileLight","defaultTileDark","tileConfigs","tileConfig","updatedConfig","theme","version","find","undefined","getMapStyle","showBaseLayer","_ref2$baseLayerTileSe","baseLayerTileServer","_ref2$baseLayerTileSe2","baseLayerTileServerType","_ref2$tilePreset","_ref2$colorScheme","colorScheme","_ref2$defaultTileLigh","_ref2$defaultTileDark","sources","tiles","tileSize","id","source","minzoom","maxzoom","match","replace","mapStyle","getZoomConstraintsFromTileConfig","matchedBaseLayerTileServer","sourceKeys","_sources$sourceKeys$i","indexOf","minZoom","maxZoom","_layers$_i","getZoomLevelFromGeobin","geobinStr","geobinPattern","exec","parseInt","colorCount","colorArray","Array","size","scalePow","exponent","domain","range","transposeArray","array","_","row","sanitizeValues","isArray","layer","geobin","sanitizedBubbleSize","transposedBubbleSize","transposedSanitizedBubbleSize","n","lat","sanitizedValues","filter","Boolean","min","max","isValidLatLon","latlon","_latlon","lon","getLatOrLonCoordinates","getClusterValues","clusterLayer","get","Marker","getChoroplethValues","choroplethLayer","slicedGeomList","geom","flatCoordinates","flatMap","geomObject","flat","coord","Choropleth","getGlobalLayerBoundaries","isLayerValid","getDefaultMax","getDefaultMin","getMin","prevVal","coordinatesNumArr","x","getMax","Number","getScaledOpacities","cfgOpacity","opacities","alpha","opacity","compareBaseStyles","next","currBaseLayer","nextBaseLayer","currBaseSource","nextBaseSource","_d","isEqual","formatMetadata","areaIds","areaValues","base","result","isObject","JSON","stringify","maplibre_gl_1","Tooltip_1","MarkerWrapper","areaId","areaValue","_a$additionalFields","isChoroplethTooltipOpen","children","otherProps","__rest","container","useRef","marker","_React$useState","useState","_React$useState2","isTooltipOpen","setTooltipOpenStatus","isChoroplethTooltip","openTooltip","closeTooltip","cleanupMarker","current","remove","useEffect","setLngLat","element","addTo","error","console","style","visibility","ref","onMouseOver","onMouseLeave","onFocus","onBlur","open","anchor","Popover_1","i18n_1","StyledPopover","StyledTable","table","withConfig","componentId","StyledTitleColumn","td","StyledValueColumn","StyledColorBlock","div","convertDegToDMS","decimalDegree","truncate","floor","ceil","absoluteDegree","abs","degrees","minutes","seconds","direction","Tooltip","_ref$additionalFields","animation","defaultPlacement"],"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 = 19);\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/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 = 19);\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":""}
|