@splunk/visualizations 27.4.0 → 28.0.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 (164) hide show
  1. package/Area.config.js +26 -21
  2. package/Area.config.js.map +3 -3
  3. package/Area.js +88 -36
  4. package/Area.js.map +3 -3
  5. package/Bar.config.js +25 -21
  6. package/Bar.config.js.map +3 -3
  7. package/Bar.js +83 -37
  8. package/Bar.js.map +3 -3
  9. package/Bubble.config.js +46 -44
  10. package/Bubble.config.js.map +4 -4
  11. package/Bubble.js +83 -54
  12. package/Bubble.js.map +4 -4
  13. package/CHANGELOG.external.md +54 -7
  14. package/ChoroplethSvg.config.js +47 -43
  15. package/ChoroplethSvg.config.js.map +4 -4
  16. package/ChoroplethSvg.js +72 -45
  17. package/ChoroplethSvg.js.map +4 -4
  18. package/Column.config.js +22 -20
  19. package/Column.config.js.map +3 -3
  20. package/Column.js +76 -33
  21. package/Column.js.map +3 -3
  22. package/Ellipse.config.js +16 -7
  23. package/Ellipse.config.js.map +2 -2
  24. package/Ellipse.js +104 -20
  25. package/Ellipse.js.map +4 -4
  26. package/Events.config.js +38 -27
  27. package/Events.config.js.map +4 -4
  28. package/Events.js +122 -101
  29. package/Events.js.map +4 -4
  30. package/FEATUREFLAGS.md +9 -7
  31. package/FillerGauge.config.js +20 -13
  32. package/FillerGauge.config.js.map +3 -3
  33. package/FillerGauge.js +76 -27
  34. package/FillerGauge.js.map +4 -4
  35. package/Image.config.js +5 -6
  36. package/Image.config.js.map +2 -2
  37. package/Image.js +29 -14
  38. package/Image.js.map +2 -2
  39. package/Line.config.js +22 -20
  40. package/Line.config.js.map +3 -3
  41. package/Line.js +84 -35
  42. package/Line.js.map +3 -3
  43. package/LinkGraph.config.js +39 -46
  44. package/LinkGraph.config.js.map +3 -3
  45. package/LinkGraph.js +70 -50
  46. package/LinkGraph.js.map +3 -3
  47. package/MIGRATION.md +169 -40
  48. package/Map.config.js +47 -13
  49. package/Map.config.js.map +4 -4
  50. package/Map.js +350 -159
  51. package/Map.js.map +4 -4
  52. package/Markdown.config.js +4 -5
  53. package/Markdown.config.js.map +2 -2
  54. package/Markdown.js +117 -72
  55. package/Markdown.js.map +3 -3
  56. package/MarkerGauge.config.js +14 -12
  57. package/MarkerGauge.config.js.map +3 -3
  58. package/MarkerGauge.js +107 -69
  59. package/MarkerGauge.js.map +4 -4
  60. package/ParallelCoordinates.config.js +14 -12
  61. package/ParallelCoordinates.config.js.map +3 -3
  62. package/ParallelCoordinates.js +113 -59
  63. package/ParallelCoordinates.js.map +3 -3
  64. package/Pie.config.js +51 -38
  65. package/Pie.config.js.map +4 -4
  66. package/Pie.js +116 -88
  67. package/Pie.js.map +4 -4
  68. package/Punchcard.config.js +36 -34
  69. package/Punchcard.config.js.map +4 -4
  70. package/Punchcard.js +153 -87
  71. package/Punchcard.js.map +4 -4
  72. package/README.internal.md +15 -15
  73. package/README.md +10 -10
  74. package/Rectangle.config.js +16 -7
  75. package/Rectangle.config.js.map +2 -2
  76. package/Rectangle.js +103 -20
  77. package/Rectangle.js.map +4 -4
  78. package/Sankey.config.js +69 -17
  79. package/Sankey.config.js.map +4 -4
  80. package/Sankey.js +212 -82
  81. package/Sankey.js.map +4 -4
  82. package/Scatter.config.js +44 -42
  83. package/Scatter.config.js.map +3 -3
  84. package/Scatter.js +84 -56
  85. package/Scatter.js.map +3 -3
  86. package/SingleValue.config.js +32 -18
  87. package/SingleValue.config.js.map +4 -4
  88. package/SingleValue.js +238 -94
  89. package/SingleValue.js.map +4 -4
  90. package/SingleValueBasic.js +1 -0
  91. package/SingleValueBasic.js.map +2 -2
  92. package/SingleValueIcon.config.js +22 -11
  93. package/SingleValueIcon.config.js.map +2 -2
  94. package/SingleValueIcon.js +85 -29
  95. package/SingleValueIcon.js.map +2 -2
  96. package/SingleValueRadial.config.js +34 -23
  97. package/SingleValueRadial.config.js.map +3 -3
  98. package/SingleValueRadial.js +90 -49
  99. package/SingleValueRadial.js.map +4 -4
  100. package/SparkLine.js +153 -49
  101. package/SparkLine.js.map +2 -2
  102. package/Table.config.js +71 -51
  103. package/Table.config.js.map +3 -3
  104. package/Table.js +282 -145
  105. package/Table.js.map +3 -3
  106. package/Timeline.config.js +36 -34
  107. package/Timeline.config.js.map +4 -4
  108. package/Timeline.js +67 -59
  109. package/Timeline.js.map +4 -4
  110. package/common/Charting.js +8 -3
  111. package/common/Charting.js.map +2 -2
  112. package/common/ChartingApi.js +1 -0
  113. package/common/ChartingApi.js.map +1 -1
  114. package/common/DocExampleWithVizSandbox.js +7 -2
  115. package/common/DocExampleWithVizSandbox.js.map +2 -2
  116. package/common/EventsDoc.js +31 -5
  117. package/common/EventsDoc.js.map +4 -4
  118. package/common/GaugeMajorTicks.js +4 -1
  119. package/common/GaugeMajorTicks.js.map +2 -2
  120. package/common/GaugeValueMarker.js +31 -3
  121. package/common/GaugeValueMarker.js.map +4 -4
  122. package/common/OptionsDoc.js +4 -1
  123. package/common/OptionsDoc.js.map +2 -2
  124. package/common/OverviewDoc.js +66 -50
  125. package/common/OverviewDoc.js.map +4 -4
  126. package/common/SplunkVisualization.js +1 -0
  127. package/common/SplunkVisualization.js.map +1 -1
  128. package/common/SplunkVisualizationApi.js +1 -0
  129. package/common/SplunkVisualizationApi.js.map +1 -1
  130. package/common/ThemedDefaults.js +67 -0
  131. package/common/ThemedDefaults.js.map +7 -0
  132. package/common/ThemesDoc.js +6 -9
  133. package/common/ThemesDoc.js.map +2 -2
  134. package/common/chartingUtils.js +12 -0
  135. package/common/chartingUtils.js.map +2 -2
  136. package/common/docUtils.js +6 -1
  137. package/common/docUtils.js.map +2 -2
  138. package/common/gaugeUtils.js +6 -1
  139. package/common/gaugeUtils.js.map +2 -2
  140. package/common/shapeUtils.js +87 -3
  141. package/common/shapeUtils.js.map +4 -4
  142. package/common/utils/configUtils.js +4 -5
  143. package/common/utils/configUtils.js.map +2 -2
  144. package/common/utils/dataUtils.js +1 -0
  145. package/common/utils/dataUtils.js.map +2 -2
  146. package/common/utils/featureFlagUtils.js +1 -0
  147. package/common/utils/featureFlagUtils.js.map +1 -1
  148. package/common/utils/hocUtils.js +1 -0
  149. package/common/utils/hocUtils.js.map +1 -1
  150. package/common/utils/mapUtils.js +174 -48
  151. package/common/utils/mapUtils.js.map +4 -4
  152. package/common/utils/singleValueUtils.js +9 -3
  153. package/common/utils/singleValueUtils.js.map +2 -2
  154. package/common/utils/styleUtils.js +1 -0
  155. package/common/utils/styleUtils.js.map +1 -1
  156. package/common/utils/testHelper.js +1 -0
  157. package/common/utils/testHelper.js.map +1 -1
  158. package/common/utils/trellisUtils.js +1 -0
  159. package/common/utils/trellisUtils.js.map +1 -1
  160. package/common/utils/urlUtils.js +1 -0
  161. package/common/utils/urlUtils.js.map +1 -1
  162. package/common/withDashboardViz.js +25 -8
  163. package/common/withDashboardViz.js.map +2 -2
  164. package/package.json +37 -35
@@ -1,6 +1,7 @@
1
1
  /* Copyright © 2020 Splunk Inc.
2
2
  SPLUNK CONFIDENTIAL – Use or disclosure of this material in whole or
3
3
  in part without a valid written license from Splunk Inc. is PROHIBITED. */
4
+ "use strict";
4
5
  var __create = Object.create;
5
6
  var __defProp = Object.defineProperty;
6
7
  var __defProps = Object.defineProperties;
@@ -129,50 +130,86 @@ var defaultImport7 = __toESM(require("lodash"));
129
130
  __reExport(lodash_exports, require("lodash"));
130
131
  var lodash_default = "default" in defaultImport7 ? defaultImport7.default : defaultImport7;
131
132
 
133
+ // esm-externals:@splunk/visualizations-shared/iconUtils
134
+ var iconUtils_exports = {};
135
+ __export(iconUtils_exports, {
136
+ default: () => iconUtils_default
137
+ });
138
+ var defaultImport8 = __toESM(require("@splunk/visualizations-shared/iconUtils"));
139
+ __reExport(iconUtils_exports, require("@splunk/visualizations-shared/iconUtils"));
140
+ var iconUtils_default = "default" in defaultImport8 ? defaultImport8.default : defaultImport8;
141
+
132
142
  // esm-externals:@splunk/visualizations-shared/colorUtils
133
143
  var colorUtils_exports = {};
134
144
  __export(colorUtils_exports, {
135
145
  default: () => colorUtils_default
136
146
  });
137
- var defaultImport8 = __toESM(require("@splunk/visualizations-shared/colorUtils"));
147
+ var defaultImport9 = __toESM(require("@splunk/visualizations-shared/colorUtils"));
138
148
  __reExport(colorUtils_exports, require("@splunk/visualizations-shared/colorUtils"));
139
- var colorUtils_default = "default" in defaultImport8 ? defaultImport8.default : defaultImport8;
149
+ var colorUtils_default = "default" in defaultImport9 ? defaultImport9.default : defaultImport9;
150
+
151
+ // esm-externals:@splunk/visualizations-shared/RemoteIcon
152
+ var RemoteIcon_exports = {};
153
+ __export(RemoteIcon_exports, {
154
+ default: () => RemoteIcon_default
155
+ });
156
+ var defaultImport10 = __toESM(require("@splunk/visualizations-shared/RemoteIcon"));
157
+ __reExport(RemoteIcon_exports, require("@splunk/visualizations-shared/RemoteIcon"));
158
+ var RemoteIcon_default = "default" in defaultImport10 ? defaultImport10.default : defaultImport10;
159
+
160
+ // esm-externals:@splunk/visualization-context/FeatureFlagContext
161
+ var FeatureFlagContext_exports = {};
162
+ __export(FeatureFlagContext_exports, {
163
+ default: () => FeatureFlagContext_default
164
+ });
165
+ var defaultImport11 = __toESM(require("@splunk/visualization-context/FeatureFlagContext"));
166
+ __reExport(FeatureFlagContext_exports, require("@splunk/visualization-context/FeatureFlagContext"));
167
+ var FeatureFlagContext_default = "default" in defaultImport11 ? defaultImport11.default : defaultImport11;
168
+
169
+ // esm-externals:@splunk/ui-utils/id
170
+ var id_exports = {};
171
+ __export(id_exports, {
172
+ default: () => id_default
173
+ });
174
+ var defaultImport12 = __toESM(require("@splunk/ui-utils/id"));
175
+ __reExport(id_exports, require("@splunk/ui-utils/id"));
176
+ var id_default = "default" in defaultImport12 ? defaultImport12.default : defaultImport12;
140
177
 
141
178
  // esm-externals:d3-scale
142
179
  var d3_scale_exports = {};
143
180
  __export(d3_scale_exports, {
144
181
  default: () => d3_scale_default
145
182
  });
146
- var defaultImport9 = __toESM(require("d3-scale"));
183
+ var defaultImport13 = __toESM(require("d3-scale"));
147
184
  __reExport(d3_scale_exports, require("d3-scale"));
148
- var d3_scale_default = "default" in defaultImport9 ? defaultImport9.default : defaultImport9;
185
+ var d3_scale_default = "default" in defaultImport13 ? defaultImport13.default : defaultImport13;
149
186
 
150
187
  // esm-externals:chroma-js
151
188
  var chroma_js_exports = {};
152
189
  __export(chroma_js_exports, {
153
190
  default: () => chroma_js_default
154
191
  });
155
- var defaultImport10 = __toESM(require("chroma-js"));
192
+ var defaultImport14 = __toESM(require("chroma-js"));
156
193
  __reExport(chroma_js_exports, require("chroma-js"));
157
- var chroma_js_default = "default" in defaultImport10 ? defaultImport10.default : defaultImport10;
194
+ var chroma_js_default = "default" in defaultImport14 ? defaultImport14.default : defaultImport14;
158
195
 
159
196
  // esm-externals:@splunk/visualization-color-palettes
160
197
  var visualization_color_palettes_exports = {};
161
198
  __export(visualization_color_palettes_exports, {
162
199
  default: () => visualization_color_palettes_default
163
200
  });
164
- var defaultImport11 = __toESM(require("@splunk/visualization-color-palettes"));
201
+ var defaultImport15 = __toESM(require("@splunk/visualization-color-palettes"));
165
202
  __reExport(visualization_color_palettes_exports, require("@splunk/visualization-color-palettes"));
166
- var visualization_color_palettes_default = "default" in defaultImport11 ? defaultImport11.default : defaultImport11;
203
+ var visualization_color_palettes_default = "default" in defaultImport15 ? defaultImport15.default : defaultImport15;
167
204
 
168
205
  // esm-externals:@splunk/visualization-schemas
169
206
  var visualization_schemas_exports = {};
170
207
  __export(visualization_schemas_exports, {
171
208
  default: () => visualization_schemas_default
172
209
  });
173
- var defaultImport12 = __toESM(require("@splunk/visualization-schemas"));
210
+ var defaultImport16 = __toESM(require("@splunk/visualization-schemas"));
174
211
  __reExport(visualization_schemas_exports, require("@splunk/visualization-schemas"));
175
- var visualization_schemas_default = "default" in defaultImport12 ? defaultImport12.default : defaultImport12;
212
+ var visualization_schemas_default = "default" in defaultImport16 ? defaultImport16.default : defaultImport16;
176
213
 
177
214
  // src/Map/PureMap/MapUtils.ts
178
215
  var MIN_BUBBLE_RADIUS = 7.11;
@@ -195,27 +232,36 @@ var maplibre_gl_exports = {};
195
232
  __export(maplibre_gl_exports, {
196
233
  default: () => maplibre_gl_default
197
234
  });
198
- var defaultImport13 = __toESM(require("maplibre-gl"));
235
+ var defaultImport17 = __toESM(require("maplibre-gl"));
199
236
  __reExport(maplibre_gl_exports, require("maplibre-gl"));
200
- var maplibre_gl_default = "default" in defaultImport13 ? defaultImport13.default : defaultImport13;
237
+ var maplibre_gl_default = "default" in defaultImport17 ? defaultImport17.default : defaultImport17;
201
238
 
202
239
  // esm-externals:@splunk/react-ui/Popover
203
240
  var Popover_exports = {};
204
241
  __export(Popover_exports, {
205
242
  default: () => Popover_default
206
243
  });
207
- var defaultImport14 = __toESM(require("@splunk/react-ui/Popover"));
244
+ var defaultImport18 = __toESM(require("@splunk/react-ui/Popover"));
208
245
  __reExport(Popover_exports, require("@splunk/react-ui/Popover"));
209
- var Popover_default = "default" in defaultImport14 ? defaultImport14.default : defaultImport14;
246
+ var Popover_default = "default" in defaultImport18 ? defaultImport18.default : defaultImport18;
210
247
 
211
248
  // esm-externals:@splunk/ui-utils/i18n
212
249
  var i18n_exports = {};
213
250
  __export(i18n_exports, {
214
251
  default: () => i18n_default
215
252
  });
216
- var defaultImport15 = __toESM(require("@splunk/ui-utils/i18n"));
253
+ var defaultImport19 = __toESM(require("@splunk/ui-utils/i18n"));
217
254
  __reExport(i18n_exports, require("@splunk/ui-utils/i18n"));
218
- var i18n_default = "default" in defaultImport15 ? defaultImport15.default : defaultImport15;
255
+ var i18n_default = "default" in defaultImport19 ? defaultImport19.default : defaultImport19;
256
+
257
+ // esm-externals:@splunk/themes
258
+ var themes_exports = {};
259
+ __export(themes_exports, {
260
+ default: () => themes_default
261
+ });
262
+ var defaultImport20 = __toESM(require("@splunk/themes"));
263
+ __reExport(themes_exports, require("@splunk/themes"));
264
+ var themes_default = "default" in defaultImport20 ? defaultImport20.default : defaultImport20;
219
265
 
220
266
  // src/Map/PureMap/Tooltip.tsx
221
267
  var StyledPopover = styled_components_default(Popover_default)`
@@ -224,6 +270,7 @@ var StyledPopover = styled_components_default(Popover_default)`
224
270
  `;
225
271
  var StyledTable = styled_components_default.table`
226
272
  margin: 2px 6px 2px 6px;
273
+ table-layout: fixed;
227
274
  width: calc(100% - 12px);
228
275
  `;
229
276
  var StyledTitleColumn = styled_components_default.td`
@@ -241,6 +288,30 @@ var StyledColorBlock = styled_components_default.div`
241
288
  height: 11px;
242
289
  transform: translateY(1px);
243
290
  `;
291
+ var StyledFieldLabel = styled_components_default.span`
292
+ display: inline-block;
293
+ white-space: nowrap;
294
+ `;
295
+ var StyledIconWrapper = styled_components_default.span`
296
+ margin-left: 4px;
297
+ display: inline-block;
298
+ vertical-align: middle;
299
+ `;
300
+ var StyledTooltipHeader = styled_components_default.thead`
301
+ th {
302
+ height: 16px;
303
+ color: ${themes_exports.variables.contentColorActive};
304
+ padding: 0;
305
+ }
306
+
307
+ span {
308
+ display: block;
309
+ white-space: nowrap;
310
+ overflow: hidden;
311
+ text-overflow: ellipsis;
312
+ width: 100%;
313
+ }
314
+ `;
244
315
  var convertDegToDMS = (decimalDegree, type) => {
245
316
  const truncate = (n) => n > 0 ? Math.floor(n) : Math.ceil(n);
246
317
  const absoluteDegree = Math.abs(decimalDegree);
@@ -271,18 +342,25 @@ var Tooltip = ({
271
342
  areaId,
272
343
  areaValue,
273
344
  additionalFields = [],
274
- showCoordinates = true
275
- }) => /* @__PURE__ */ react_exports.createElement(
276
- StyledPopover,
277
- {
278
- open,
279
- animation: false,
280
- anchor,
281
- "data-test": "map-marker-tooltip",
282
- defaultPlacement: "above"
283
- },
284
- /* @__PURE__ */ react_exports.createElement(StyledTable, null, /* @__PURE__ */ react_exports.createElement("tbody", null, areaId && areaValue && /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, { "data-test": "area-id" }, areaId), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "area-value" }, areaValue)), Boolean(showCoordinates && latitude) && /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, null, (0, i18n_exports._)("Latitude")), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "latitude" }, convertDegToDMS(latitude, "latitude"))), Boolean(showCoordinates && longitude) && /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, null, (0, i18n_exports._)("Longitude")), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "longitude" }, convertDegToDMS(longitude, "longitude"))), additionalFields.filter(({ value }) => value && String(value) !== "0").map(({ name, value, color }, index) => /* @__PURE__ */ react_exports.createElement("tr", { key: String(index) }, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, { "data-test": "field-title" }, color ? /* @__PURE__ */ react_exports.createElement(StyledColorBlock, { "data-test": "field-color", color }) : null, name), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "field-value" }, value)))))
285
- );
345
+ showCoordinates = true,
346
+ tooltipHeader = null
347
+ }) => {
348
+ const featureFlagContext = react_exports.useContext(FeatureFlagContext_default);
349
+ const isTooltipIconFlagEnabled = Boolean(
350
+ featureFlagContext && featureFlagContext.visualizations_enableTooltipIcon
351
+ );
352
+ return /* @__PURE__ */ react_exports.createElement(
353
+ StyledPopover,
354
+ {
355
+ open,
356
+ animation: false,
357
+ anchor,
358
+ "data-test": "map-marker-tooltip",
359
+ defaultPlacement: "above"
360
+ },
361
+ /* @__PURE__ */ react_exports.createElement(StyledTable, null, tooltipHeader && /* @__PURE__ */ react_exports.createElement(StyledTooltipHeader, { "data-test": "tooltip-header" }, /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement("th", { colSpan: 2 }, /* @__PURE__ */ react_exports.createElement("span", { "data-test": "tooltip-header-value" }, tooltipHeader)))), /* @__PURE__ */ react_exports.createElement("tbody", null, areaId && areaValue && /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, { "data-test": "area-id" }, areaId), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "area-value" }, areaValue)), Boolean(showCoordinates && latitude) && /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, null, (0, i18n_exports._)("Latitude")), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "latitude" }, convertDegToDMS(latitude, "latitude"))), Boolean(showCoordinates && longitude) && /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, null, (0, i18n_exports._)("Longitude")), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "longitude" }, convertDegToDMS(longitude, "longitude"))), additionalFields.filter(({ value }) => value && String(value) !== "0").map(({ name, value, color, icon }) => /* @__PURE__ */ react_exports.createElement("tr", { key: (0, id_exports.createDOMID)() }, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, { "data-test": "field-title" }, color ? /* @__PURE__ */ react_exports.createElement(StyledColorBlock, { "data-test": "field-color", color }) : null, /* @__PURE__ */ react_exports.createElement(StyledFieldLabel, null, name, isTooltipIconFlagEnabled && icon && ((0, iconUtils_exports.isRemoteIcon)(icon) || (0, iconUtils_exports.isDataURI)(icon)) ? /* @__PURE__ */ react_exports.createElement(StyledIconWrapper, { "data-test": "field-icon" }, /* @__PURE__ */ react_exports.createElement(RemoteIcon_default, { iconURL: icon, width: 16, height: 16 })) : null)), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "field-value" }, value)))))
362
+ );
363
+ };
286
364
  var Tooltip_default = Tooltip;
287
365
 
288
366
  // src/Map/PureMap/MarkerWrapper.tsx
@@ -293,6 +371,7 @@ var MarkerWrapper = (_a) => {
293
371
  areaId,
294
372
  areaValue,
295
373
  additionalFields = [],
374
+ tooltipHeader = null,
296
375
  map,
297
376
  isChoroplethTooltipOpen,
298
377
  children,
@@ -303,6 +382,7 @@ var MarkerWrapper = (_a) => {
303
382
  "areaId",
304
383
  "areaValue",
305
384
  "additionalFields",
385
+ "tooltipHeader",
306
386
  "map",
307
387
  "isChoroplethTooltipOpen",
308
388
  "children",
@@ -311,9 +391,10 @@ var MarkerWrapper = (_a) => {
311
391
  const container = react_exports.useRef();
312
392
  const marker = react_exports.useRef();
313
393
  const [isTooltipOpen, setTooltipOpenStatus] = react_exports.useState(false);
314
- const isChoroplethTooltip = react_exports.useCallback(() => isChoroplethTooltipOpen !== void 0, [
315
- isChoroplethTooltipOpen
316
- ]);
394
+ const isChoroplethTooltip = react_exports.useCallback(
395
+ () => isChoroplethTooltipOpen !== void 0,
396
+ [isChoroplethTooltipOpen]
397
+ );
317
398
  const openTooltip = react_exports.useCallback(() => setTooltipOpenStatus(true), []);
318
399
  const closeTooltip = react_exports.useCallback(() => setTooltipOpenStatus(false), []);
319
400
  const cleanupMarker = react_exports.useCallback(() => {
@@ -342,7 +423,9 @@ var MarkerWrapper = (_a) => {
342
423
  return /* @__PURE__ */ react_exports.createElement("div", { style: { visibility: isChoroplethTooltip() ? "hidden" : "visible" } }, /* @__PURE__ */ react_exports.createElement(
343
424
  "div",
344
425
  __spreadValues({
345
- style: { visibility: isChoroplethTooltip() ? "hidden" : "visible" },
426
+ style: {
427
+ visibility: isChoroplethTooltip() ? "hidden" : "visible"
428
+ },
346
429
  ref: container,
347
430
  "data-test": "map-marker",
348
431
  onMouseOver: openTooltip,
@@ -361,7 +444,8 @@ var MarkerWrapper = (_a) => {
361
444
  areaId,
362
445
  areaValue,
363
446
  additionalFields,
364
- showCoordinates
447
+ showCoordinates,
448
+ tooltipHeader
365
449
  }
366
450
  )));
367
451
  };
@@ -369,6 +453,7 @@ var MarkerWrapper_default = MarkerWrapper;
369
453
 
370
454
  // src/Map/PureMap/BubbleLayer.tsx
371
455
  var GEO_LAT_AND_LONG_FIELD = ["_geo_long_field", "_geo_lat_field"];
456
+ var ICON_DISPLAY_CUTOFF = 16;
372
457
  var PieSegment = react_exports.memo(
373
458
  ({
374
459
  start,
@@ -437,10 +522,16 @@ var Bubble = react_exports.memo(
437
522
  longitude,
438
523
  bubbleSize,
439
524
  additionalFields = [],
525
+ tooltipHeader = null,
440
526
  map,
441
527
  handleMapClick,
528
+ icon,
442
529
  showCoordinates
443
530
  }) => {
531
+ const featureFlagContext = react_exports.useContext(FeatureFlagContext_default);
532
+ const isBubbleMapIconFlagEnabled = Boolean(
533
+ featureFlagContext && featureFlagContext.visualizations_enableBubbleMapIcon
534
+ );
444
535
  const onBubbleClick = react_exports.useCallback(
445
536
  (e, name, value) => {
446
537
  handleMapClick(e, name, value);
@@ -448,21 +539,20 @@ var Bubble = react_exports.memo(
448
539
  },
449
540
  [handleMapClick]
450
541
  );
542
+ const allZeros = originalValues.every((v) => v === 0);
543
+ const values = originalValues.map((v) => v > 0 ? v : 0);
544
+ const total = values.reduce((totalValue, v) => totalValue + v, 0);
545
+ const radius = matchBubbleSize(valueRange, total);
451
546
  const bubble = react_exports.useMemo(() => {
452
- const allZeros = originalValues.every((v) => v === 0);
453
- if (allZeros || !originalValues.length) {
454
- return null;
455
- }
456
- const values = originalValues.map((v) => v > 0 ? v : 0);
547
+ if (allZeros || !originalValues.length) return null;
457
548
  const offsets = [];
458
- let total = 0;
549
+ let runningTotal = 0;
459
550
  values.forEach((count) => {
460
- offsets.push(total);
461
- total += count;
551
+ offsets.push(runningTotal);
552
+ runningTotal += count;
462
553
  });
463
- const radius = matchBubbleSize(valueRange, total);
464
554
  const width = radius * 2;
465
- return /* @__PURE__ */ react_exports.createElement("svg", { width, height: width, viewBox: `-3 -3 ${width + 6} ${width + 6}` }, isPie ? /* @__PURE__ */ react_exports.createElement(
555
+ return /* @__PURE__ */ react_exports.createElement("svg", { width, height: width, viewBox: `-3 -3 ${width + 6} ${width + 6}` }, isPie && /* @__PURE__ */ react_exports.createElement(
466
556
  "circle",
467
557
  {
468
558
  cx: radius,
@@ -473,10 +563,10 @@ var Bubble = react_exports.memo(
473
563
  stroke: themeColor,
474
564
  strokeOpacity: 0.3
475
565
  }
476
- ) : null, values.map((v, i) => /* @__PURE__ */ react_exports.createElement(
566
+ ), values.map((v, i) => /* @__PURE__ */ react_exports.createElement(
477
567
  PieSegment,
478
568
  {
479
- key: String(i),
569
+ key: (0, id_exports.createDOMID)(),
480
570
  start: offsets[i] / total,
481
571
  end: (offsets[i] + v) / total,
482
572
  radius,
@@ -486,7 +576,18 @@ var Bubble = react_exports.memo(
486
576
  handleBubbleClick: onBubbleClick
487
577
  }
488
578
  )));
489
- }, [bubbleSize, colors, isPie, onBubbleClick, originalValues, themeColor, valueRange]);
579
+ }, [
580
+ bubbleSize,
581
+ colors,
582
+ isPie,
583
+ onBubbleClick,
584
+ originalValues,
585
+ themeColor,
586
+ allZeros,
587
+ radius,
588
+ total,
589
+ values
590
+ ]);
490
591
  if (!bubble) {
491
592
  return null;
492
593
  }
@@ -496,11 +597,26 @@ var Bubble = react_exports.memo(
496
597
  longitude,
497
598
  latitude,
498
599
  additionalFields: [...bubbleSize, ...additionalFields],
600
+ tooltipHeader,
499
601
  map,
500
602
  "data-test-type": "bubble",
501
603
  showCoordinates
502
604
  },
503
- bubble
605
+ bubble,
606
+ isBubbleMapIconFlagEnabled && radius >= ICON_DISPLAY_CUTOFF && icon && ((0, iconUtils_exports.isRemoteIcon)(icon) || (0, iconUtils_exports.isDataURI)(icon)) && /* @__PURE__ */ react_exports.createElement(
607
+ "div",
608
+ {
609
+ "data-test": "bubble-icon-wrapper",
610
+ style: {
611
+ position: "absolute",
612
+ top: `${radius}px`,
613
+ left: `${radius}px`,
614
+ transform: "translate(-50%, -50%)",
615
+ pointerEvents: "none"
616
+ }
617
+ },
618
+ /* @__PURE__ */ react_exports.createElement(RemoteIcon_default, { iconURL: icon, width: radius * 0.8, height: radius * 0.8 })
619
+ )
504
620
  );
505
621
  }
506
622
  );
@@ -520,7 +636,17 @@ var columnsNullToZeros = (config, dataSources, options) => {
520
636
  if (((_b = (_a = mergedOptions.layers) == null ? void 0 : _a[0]) == null ? void 0 : _b.type) === "bubble") {
521
637
  const latitudeField = (0, dsl_exports.getFieldsFromDSL)(mergedOptions.layers[0].latitude, dataSources)[0] || "";
522
638
  const longitudeField = (0, dsl_exports.getFieldsFromDSL)(mergedOptions.layers[0].longitude, dataSources)[0] || "";
523
- const excludedFields = [latitudeField, longitudeField, "geobin"].concat(GEO_LAT_AND_LONG_FIELD);
639
+ const stringsFields = (0, dsl_exports.getFieldsFromDSL)("> primary | frameBySeriesTypes('string')", dataSources);
640
+ const excludedFields = Array.from(
641
+ /* @__PURE__ */ new Set([
642
+ latitudeField,
643
+ longitudeField,
644
+ "geobin",
645
+ "name",
646
+ ...stringsFields,
647
+ ...GEO_LAT_AND_LONG_FIELD
648
+ ])
649
+ );
524
650
  const indicesToEvaluate = new Set(
525
651
  fields.reduce((arr, e, i) => {
526
652
  const field = typeof e === "string" ? e : e.name.toString();