@splunk/visualizations 25.6.0 → 25.7.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 (218) hide show
  1. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Bar_Editor.png +0 -0
  2. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_ChoroplethSvg_Editor.png +0 -0
  3. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Column_Editor.png +0 -0
  4. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Ellipse_Editor.png +0 -0
  5. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_FillerGauge_Editor.png +0 -0
  6. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_LinkGraph_Editor.png +0 -0
  7. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Map_Editor.png +0 -0
  8. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Parallel_Coordinates_Editor.png +0 -0
  9. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Pie_Editor.png +0 -0
  10. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Rectangle_Editor.png +0 -0
  11. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Single_Value_Editor.png +0 -0
  12. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Single_Value_Icon_Editor.png +0 -0
  13. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Single_Value_Radial_Editor.png +0 -0
  14. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Table_Editor.png +0 -0
  15. package/.loki/reference/chrome_docker_Visualizations_Bar_Bar_Legend_Mode_Series_Compare.png +0 -0
  16. package/.loki/reference/chrome_docker_Visualizations_Column_Column_Legend_Mode_Series_Compare.png +0 -0
  17. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_Pagination.png +0 -0
  18. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_background_color.png +0 -0
  19. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_chart_cmd_count_by_status.png +0 -0
  20. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_chart_cmd_count_by_status_user.png +0 -0
  21. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_chart_cmd_count_by_status_user_aggregations.png +0 -0
  22. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_chart_cmd_max_count_avg_count_aggregations.png +0 -0
  23. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_chart_cmd_max_count_avg_count_by_status_user_aggregations.png +0 -0
  24. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_layout_options.png +0 -0
  25. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_makeresults_name_age.png +0 -0
  26. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_makeresults_name_age_aggregations.png +0 -0
  27. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_stats_cmd_avg_count_max_count_aggregations.png +0 -0
  28. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_stats_cmd_avg_count_max_count_by_status_user_aggregations.png +0 -0
  29. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_stats_cmd_count_by_status_user.png +0 -0
  30. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_stats_cmd_count_by_status_user_aggregations.png +0 -0
  31. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_table.png +0 -0
  32. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_table_aggregations.png +0 -0
  33. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_timechart_cmd_count_aggregations.png +0 -0
  34. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_timechart_cmd_count_by_status.png +0 -0
  35. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_timechart_cmd_count_by_status_aggregations.png +0 -0
  36. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_timechart_cmd_max_count_avg_count_by_status_aggregations.png +0 -0
  37. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_Chart.png +0 -0
  38. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_Chart_Count.png +0 -0
  39. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_Pagination.png +0 -0
  40. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_Timechart.png +0 -0
  41. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_background_color.png +0 -0
  42. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_chart_cmd_count_by_status_user_aggregations.png +0 -0
  43. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_chart_cmd_max_count_avg_count_aggregations.png +0 -0
  44. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_chart_cmd_max_count_avg_count_by_status_user_aggregations.png +0 -0
  45. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_layout_options.png +0 -0
  46. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_makeresults_name_age.png +0 -0
  47. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_makeresults_name_age_aggregations.png +0 -0
  48. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_stats_cmd_avg_count_max_count_aggregations.png +0 -0
  49. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_stats_cmd_count_by_status_user.png +0 -0
  50. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_stats_cmd_count_by_status_user_aggregations.png +0 -0
  51. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_table.png +0 -0
  52. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_table_aggregations.png +0 -0
  53. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_timechart_cmd_count_aggregations.png +0 -0
  54. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_timechart_cmd_count_by_status_aggregations.png +0 -0
  55. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_timechart_cmd_max_count_avg_count_by_status_aggregations.png +0 -0
  56. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Trellis_stats_cmd_avg_count_max_count_by_status_user_aggregations.png +0 -0
  57. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_Pagination.png +0 -0
  58. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_assign_default_trellisSplitBy_value_status.png +0 -0
  59. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_background_color.png +0 -0
  60. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_avg_count_max_count_by_status.png +0 -0
  61. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_avg_count_max_count_by_status_value_by_max_count.png +0 -0
  62. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_count_by_status.png +0 -0
  63. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_count_by_status_user.png +0 -0
  64. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_count_by_status_user_aggregations.png +0 -0
  65. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_count_by_status_user_user.png +0 -0
  66. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_max_count_avg_count_aggregations.png +0 -0
  67. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_max_count_avg_count_by_status_user.png +0 -0
  68. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_max_count_avg_count_by_status_user_aggregations.png +0 -0
  69. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_max_count_avg_count_by_status_user_user.png +0 -0
  70. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_layout_options.png +0 -0
  71. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_makeresults_name_age.png +0 -0
  72. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_makeresults_name_age_aggregations.png +0 -0
  73. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_stats_cmd_avg_count_max_count_aggregations.png +0 -0
  74. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_stats_cmd_avg_count_max_count_by_status.png +0 -0
  75. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_stats_cmd_avg_count_max_count_by_status_user_aggregations.png +0 -0
  76. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_stats_cmd_avg_count_max_count_by_status_value_by_max_count.png +0 -0
  77. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_stats_cmd_count_by_status_user.png +0 -0
  78. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_stats_cmd_count_by_status_user_aggregations.png +0 -0
  79. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_table.png +0 -0
  80. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_table_aggregations.png +0 -0
  81. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_timechart_cmd_count_aggregations.png +0 -0
  82. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_timechart_cmd_count_by_status.png +0 -0
  83. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_timechart_cmd_count_by_status_aggregations.png +0 -0
  84. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_timechart_cmd_max_count_avg_count_by_status.png +0 -0
  85. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_timechart_cmd_max_count_avg_count_by_status_aggregations.png +0 -0
  86. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Major_value_data_null_show_N_A.png +0 -0
  87. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Set_The_Background_Color_Based_On_The_Major_Value_Trellis.png +0 -0
  88. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Height_Percentage.png +0 -0
  89. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Height_Percentage_100_no_paginator.png +0 -0
  90. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Height_Percentage_50_no_paginator.png +0 -0
  91. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Sparkline.png +0 -0
  92. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Sparkline_Custom.png +0 -0
  93. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Sparkline_Width.png +0 -0
  94. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Sparklines_Adv.png +0 -0
  95. package/Area.config.js +12 -7
  96. package/Area.config.js.map +1 -1
  97. package/Area.js +192 -171
  98. package/Area.js.map +1 -1
  99. package/Bar.config.js +36 -8
  100. package/Bar.config.js.map +1 -1
  101. package/Bar.js +216 -172
  102. package/Bar.js.map +1 -1
  103. package/Bubble.config.js +7 -2
  104. package/Bubble.config.js.map +1 -1
  105. package/Bubble.js +183 -162
  106. package/Bubble.js.map +1 -1
  107. package/ChoroplethSvg.config.js +12 -8
  108. package/ChoroplethSvg.config.js.map +1 -1
  109. package/ChoroplethSvg.js +191 -174
  110. package/ChoroplethSvg.js.map +1 -1
  111. package/Column.config.js +36 -8
  112. package/Column.config.js.map +1 -1
  113. package/Column.js +216 -172
  114. package/Column.js.map +1 -1
  115. package/Ellipse.config.js +23 -20
  116. package/Ellipse.config.js.map +1 -1
  117. package/Ellipse.js +168 -149
  118. package/Ellipse.js.map +1 -1
  119. package/Events.config.js +79 -19
  120. package/Events.config.js.map +1 -1
  121. package/Events.js +404 -244
  122. package/Events.js.map +1 -1
  123. package/FEATUREFLAGS.md +40 -0
  124. package/FillerGauge.config.js +22 -19
  125. package/FillerGauge.config.js.map +1 -1
  126. package/FillerGauge.js +170 -151
  127. package/FillerGauge.js.map +1 -1
  128. package/Image.config.js +3 -3
  129. package/Image.config.js.map +1 -1
  130. package/Image.js +143 -130
  131. package/Image.js.map +1 -1
  132. package/LICENSE.md +444 -8
  133. package/Line.config.js +12 -7
  134. package/Line.config.js.map +1 -1
  135. package/Line.js +192 -171
  136. package/Line.js.map +1 -1
  137. package/LinkGraph.config.js +9 -15
  138. package/LinkGraph.config.js.map +1 -1
  139. package/LinkGraph.js +743 -729
  140. package/LinkGraph.js.map +1 -1
  141. package/Map.config.js +51 -48
  142. package/Map.config.js.map +1 -1
  143. package/Map.js +602 -587
  144. package/Map.js.map +1 -1
  145. package/Markdown.config.js +10 -9
  146. package/Markdown.config.js.map +1 -1
  147. package/Markdown.js +185 -171
  148. package/Markdown.js.map +1 -1
  149. package/MarkerGauge.config.js +71 -70
  150. package/MarkerGauge.config.js.map +1 -1
  151. package/MarkerGauge.js +193 -179
  152. package/MarkerGauge.js.map +1 -1
  153. package/ParallelCoordinates.config.js +3 -3
  154. package/ParallelCoordinates.config.js.map +1 -1
  155. package/ParallelCoordinates.js +179 -155
  156. package/ParallelCoordinates.js.map +1 -1
  157. package/Pie.config.js +30 -6
  158. package/Pie.config.js.map +1 -1
  159. package/Pie.js +237 -200
  160. package/Pie.js.map +1 -1
  161. package/Punchcard.config.js +3 -2
  162. package/Punchcard.config.js.map +1 -1
  163. package/Punchcard.js +305 -291
  164. package/Punchcard.js.map +1 -1
  165. package/Rectangle.config.js +22 -23
  166. package/Rectangle.config.js.map +1 -1
  167. package/Rectangle.js +232 -220
  168. package/Rectangle.js.map +1 -1
  169. package/Sankey.config.js +14 -13
  170. package/Sankey.config.js.map +1 -1
  171. package/Sankey.js +1311 -1297
  172. package/Sankey.js.map +1 -1
  173. package/Scatter.config.js +552 -580
  174. package/Scatter.config.js.map +1 -1
  175. package/Scatter.js +258 -244
  176. package/Scatter.js.map +1 -1
  177. package/SingleValue.config.js +242 -52
  178. package/SingleValue.config.js.map +1 -1
  179. package/SingleValue.js +1456 -350
  180. package/SingleValue.js.map +1 -1
  181. package/SingleValueBasic.js +40 -29
  182. package/SingleValueBasic.js.map +1 -1
  183. package/SingleValueIcon.config.js +267 -58
  184. package/SingleValueIcon.config.js.map +1 -1
  185. package/SingleValueIcon.js +1490 -363
  186. package/SingleValueIcon.js.map +1 -1
  187. package/SingleValueRadial.config.js +249 -41
  188. package/SingleValueRadial.config.js.map +1 -1
  189. package/SingleValueRadial.js +1435 -286
  190. package/SingleValueRadial.js.map +1 -1
  191. package/TRELLIS.md +296 -0
  192. package/Table.config.js +39 -41
  193. package/Table.config.js.map +1 -1
  194. package/Table.js +352 -306
  195. package/Table.js.map +1 -1
  196. package/common/EventsDoc.js +9 -3
  197. package/common/EventsDoc.js.map +1 -1
  198. package/common/docUtils.js +1 -1
  199. package/common/docUtils.js.map +1 -1
  200. package/common/utils/configUtils.js +26 -20
  201. package/common/utils/configUtils.js.map +1 -1
  202. package/common/utils/dataUtils.js +2 -2
  203. package/common/utils/dataUtils.js.map +1 -1
  204. package/common/utils/hocUtils.js +2 -2
  205. package/common/utils/hocUtils.js.map +1 -1
  206. package/common/utils/layoutUtils.js +115 -0
  207. package/common/utils/layoutUtils.js.map +1 -0
  208. package/common/utils/mapUtils.js +1166 -23
  209. package/common/utils/mapUtils.js.map +1 -1
  210. package/common/utils/singleValueUtils.js +54 -46
  211. package/common/utils/singleValueUtils.js.map +1 -1
  212. package/common/utils/testHelper.js +14 -14
  213. package/common/utils/testHelper.js.map +1 -1
  214. package/common/utils/trellisUtils.js +612 -0
  215. package/common/utils/trellisUtils.js.map +1 -0
  216. package/common/withDashboardViz.js +31 -17
  217. package/common/withDashboardViz.js.map +1 -1
  218. package/package.json +12 -12
@@ -87,23 +87,69 @@ module.exports =
87
87
  /******/
88
88
  /******/
89
89
  /******/ // Load entry module and return exports
90
- /******/ return __webpack_require__(__webpack_require__.s = 12);
90
+ /******/ return __webpack_require__(__webpack_require__.s = 18);
91
91
  /******/ })
92
92
  /************************************************************************/
93
93
  /******/ ([
94
- /* 0 */,
95
- /* 1 */,
96
- /* 2 */,
97
- /* 3 */,
94
+ /* 0 */
95
+ /***/ (function(module, exports) {
96
+
97
+ module.exports = require("lodash");
98
+
99
+ /***/ }),
100
+ /* 1 */
101
+ /***/ (function(module, exports) {
102
+
103
+ module.exports = require("@babel/runtime/helpers/defineProperty");
104
+
105
+ /***/ }),
106
+ /* 2 */
107
+ /***/ (function(module, exports) {
108
+
109
+ module.exports = require("@babel/runtime/helpers/toConsumableArray");
110
+
111
+ /***/ }),
112
+ /* 3 */
113
+ /***/ (function(module, exports) {
114
+
115
+ module.exports = require("react");
116
+
117
+ /***/ }),
98
118
  /* 4 */,
99
119
  /* 5 */,
100
120
  /* 6 */,
101
- /* 7 */,
121
+ /* 7 */
122
+ /***/ (function(module, exports) {
123
+
124
+ module.exports = require("@babel/runtime/helpers/slicedToArray");
125
+
126
+ /***/ }),
102
127
  /* 8 */,
103
- /* 9 */,
104
- /* 10 */,
105
- /* 11 */,
106
- /* 12 */
128
+ /* 9 */
129
+ /***/ (function(module, exports) {
130
+
131
+ module.exports = require("@splunk/visualization-encoding/utils/types");
132
+
133
+ /***/ }),
134
+ /* 10 */
135
+ /***/ (function(module, exports) {
136
+
137
+ module.exports = require("styled-components");
138
+
139
+ /***/ }),
140
+ /* 11 */
141
+ /***/ (function(module, exports) {
142
+
143
+ module.exports = require("@splunk/visualizations-shared/colorUtils");
144
+
145
+ /***/ }),
146
+ /* 12 */,
147
+ /* 13 */,
148
+ /* 14 */,
149
+ /* 15 */,
150
+ /* 16 */,
151
+ /* 17 */,
152
+ /* 18 */
107
153
  /***/ (function(module, exports, __webpack_require__) {
108
154
 
109
155
  "use strict";
@@ -114,13 +160,15 @@ Object.defineProperty(exports, "__esModule", {
114
160
  });
115
161
  exports.columnsNullToZeros = void 0;
116
162
 
117
- var types_1 = __webpack_require__(13);
163
+ var types_1 = __webpack_require__(9);
118
164
 
119
- var dsl_1 = __webpack_require__(14);
165
+ var dsl_1 = __webpack_require__(19);
120
166
 
121
- var hocUtils_1 = __webpack_require__(15);
167
+ var hocUtils_1 = __webpack_require__(20);
122
168
 
123
- var JSONSchemaUtils_1 = __webpack_require__(16);
169
+ var JSONSchemaUtils_1 = __webpack_require__(21);
170
+
171
+ var BubbleLayer_1 = __webpack_require__(22);
124
172
 
125
173
  var columnsNullToZeros = function columnsNullToZeros(config, dataSources, options) {
126
174
  var _a, _b;
@@ -135,7 +183,7 @@ var columnsNullToZeros = function columnsNullToZeros(config, dataSources, option
135
183
  if (((_b = (_a = mergedOptions.layers) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.type) === 'bubble') {
136
184
  var latitudeField = dsl_1.getFieldsFromDSL(mergedOptions.layers[0].latitude, dataSources)[0] || '';
137
185
  var longitudeField = dsl_1.getFieldsFromDSL(mergedOptions.layers[0].longitude, dataSources)[0] || '';
138
- var excludedFields = [latitudeField, longitudeField, 'geobin'];
186
+ var excludedFields = [latitudeField, longitudeField, 'geobin'].concat(BubbleLayer_1.GEO_LAT_AND_LONG_FIELD);
139
187
  var indicesToEvaluate = new Set(fields.reduce(function (arr, e, i) {
140
188
  var field = typeof e === 'string' ? e : e.name.toString();
141
189
 
@@ -170,28 +218,1123 @@ var columnsNullToZeros = function columnsNullToZeros(config, dataSources, option
170
218
  exports.columnsNullToZeros = columnsNullToZeros;
171
219
 
172
220
  /***/ }),
173
- /* 13 */
221
+ /* 19 */
174
222
  /***/ (function(module, exports) {
175
223
 
176
- module.exports = require("@splunk/visualization-encoding/utils/types");
224
+ module.exports = require("@splunk/visualization-encoding/utils/dsl");
177
225
 
178
226
  /***/ }),
179
- /* 14 */
227
+ /* 20 */
180
228
  /***/ (function(module, exports) {
181
229
 
182
- module.exports = require("@splunk/visualization-encoding/utils/dsl");
230
+ module.exports = require("@splunk/visualizations-shared/hocUtils");
183
231
 
184
232
  /***/ }),
185
- /* 15 */
233
+ /* 21 */
186
234
  /***/ (function(module, exports) {
187
235
 
188
- module.exports = require("@splunk/visualizations-shared/hocUtils");
236
+ module.exports = require("@splunk/visualizations-shared/JSONSchemaUtils");
237
+
238
+ /***/ }),
239
+ /* 22 */
240
+ /***/ (function(module, exports, __webpack_require__) {
241
+
242
+ "use strict";
243
+
244
+
245
+ var _slicedToArray = __webpack_require__(7);
246
+
247
+ var _defineProperty = __webpack_require__(1);
248
+
249
+ var _toConsumableArray = __webpack_require__(2);
250
+
251
+ Object.defineProperty(exports, "__esModule", {
252
+ value: true
253
+ });
254
+ exports.Bubble = exports.PieSegment = exports.GEO_LAT_AND_LONG_FIELD = exports.GEO_BOUND_PREFIX = void 0;
255
+
256
+ var React = __webpack_require__(3);
257
+
258
+ var styled_components_1 = __webpack_require__(10);
259
+
260
+ var lodash_1 = __webpack_require__(0);
261
+
262
+ var colorUtils_1 = __webpack_require__(11);
263
+
264
+ var MapUtils_1 = __webpack_require__(23);
265
+
266
+ var MarkerWrapper_1 = __webpack_require__(27);
267
+
268
+ exports.GEO_BOUND_PREFIX = '_geo_bounds_';
269
+ exports.GEO_LAT_AND_LONG_FIELD = ['_geo_long_field', '_geo_lat_field'];
270
+ exports.PieSegment = React.memo(function (_ref) {
271
+ var start = _ref.start,
272
+ end = _ref.end,
273
+ radius = _ref.radius,
274
+ color = _ref.color,
275
+ themeColor = _ref.themeColor,
276
+ segmentMetadata = _ref.segmentMetadata,
277
+ handleBubbleClick = _ref.handleBubbleClick;
278
+
279
+ var _ref2 = segmentMetadata !== null && segmentMetadata !== void 0 ? segmentMetadata : {},
280
+ name = _ref2.name,
281
+ value = _ref2.value;
282
+
283
+ var handleSegmentClick = React.useCallback(function (e) {
284
+ handleBubbleClick(e, name, value);
285
+ }, [name, value, handleBubbleClick]);
286
+
287
+ if (end - start === 1) {
288
+ return React.createElement("circle", {
289
+ onClick: handleSegmentClick,
290
+ cx: radius,
291
+ cy: radius,
292
+ r: radius,
293
+ fill: color,
294
+ fillOpacity: 0.5,
295
+ strokeWidth: 1.5,
296
+ stroke: color
297
+ });
298
+ }
299
+
300
+ var a0 = 2 * Math.PI * (start - 0.25);
301
+ var a1 = 2 * Math.PI * (end - 0.25);
302
+ var x0 = Math.cos(a0);
303
+ var y0 = Math.sin(a0);
304
+ var x1 = Math.cos(a1);
305
+ var y1 = Math.sin(a1);
306
+ var arc = end - start > 0.5 ? 1 : 0;
307
+ return React.createElement("path", {
308
+ onClick: handleSegmentClick,
309
+ d: "M ".concat(radius, " ").concat(radius, " L ").concat(radius + radius * x0, " ").concat(radius + radius * y0, " A ").concat(radius, " ").concat(radius, " 0 ").concat(arc, " 1 ").concat(radius + radius * x1, " ").concat(radius + radius * y1, " L ").concat(radius, " ").concat(radius, " A 0 0 0 ").concat(arc, " 0 ").concat(radius, " ").concat(radius),
310
+ fill: color,
311
+ fillOpacity: 0.8,
312
+ stroke: themeColor,
313
+ strokeWidth: 2,
314
+ strokeOpacity: 0.3
315
+ });
316
+ });
317
+ exports.PieSegment.displayName = 'MapBubblePieSegment';
318
+ var StyledMarkerWrapper = styled_components_1.default(MarkerWrapper_1.default).withConfig({
319
+ displayName: "BubbleLayer__StyledMarkerWrapper",
320
+ componentId: "sc-8aqbb-0"
321
+ })(["cursor:pointer;"]);
322
+ exports.Bubble = React.memo(function (_ref3) {
323
+ var originalValues = _ref3.originalValues,
324
+ valueRange = _ref3.valueRange,
325
+ colors = _ref3.colors,
326
+ themeColor = _ref3.themeColor,
327
+ isPie = _ref3.isPie,
328
+ latitude = _ref3.latitude,
329
+ longitude = _ref3.longitude,
330
+ bubbleSize = _ref3.bubbleSize,
331
+ _ref3$additionalField = _ref3.additionalFields,
332
+ additionalFields = _ref3$additionalField === void 0 ? [] : _ref3$additionalField,
333
+ map = _ref3.map,
334
+ handleMapClick = _ref3.handleMapClick;
335
+ var onBubbleClick = React.useCallback(function (e, name, value) {
336
+ handleMapClick(e, name, value);
337
+ e.stopPropagation();
338
+ }, [bubbleSize]);
339
+ var bubble = React.useMemo(function () {
340
+ var allZeros = originalValues.every(function (v) {
341
+ return v === 0;
342
+ });
343
+
344
+ if (allZeros || !originalValues.length) {
345
+ return null;
346
+ } // sanitize values
347
+
348
+
349
+ var values = originalValues.map(function (v) {
350
+ return v > 0 ? v : 0;
351
+ }); // compute offsets for pie segments
352
+
353
+ var offsets = [];
354
+ var total = 0;
355
+ values.forEach(function (count) {
356
+ offsets.push(total);
357
+ total += count;
358
+ });
359
+ var radius = MapUtils_1.matchBubbleSize(valueRange, total);
360
+ var width = radius * 2;
361
+ return React.createElement("svg", {
362
+ width: width,
363
+ height: width,
364
+ viewBox: "-3 -3 ".concat(width + 6, " ").concat(width + 6)
365
+ }, isPie ? React.createElement("circle", {
366
+ cx: radius,
367
+ cy: radius,
368
+ r: radius,
369
+ fill: "none",
370
+ strokeWidth: 2,
371
+ stroke: themeColor,
372
+ strokeOpacity: 0.3
373
+ }) : null, values.map(function (v, i) {
374
+ return React.createElement(exports.PieSegment, {
375
+ key: String(i),
376
+ start: offsets[i] / total,
377
+ end: (offsets[i] + v) / total,
378
+ radius: radius,
379
+ color: colors[i],
380
+ themeColor: themeColor,
381
+ segmentMetadata: bubbleSize[i],
382
+ handleBubbleClick: onBubbleClick
383
+ });
384
+ }));
385
+ }, [colors, isPie, originalValues, themeColor, valueRange]);
386
+
387
+ if (!bubble) {
388
+ return null;
389
+ }
390
+
391
+ return React.createElement(StyledMarkerWrapper, {
392
+ longitude: longitude,
393
+ latitude: latitude,
394
+ additionalFields: [].concat(_toConsumableArray(bubbleSize), _toConsumableArray(additionalFields)),
395
+ map: map,
396
+ "data-test-type": "bubble"
397
+ }, bubble);
398
+ });
399
+ exports.Bubble.displayName = 'MapBubble';
400
+
401
+ var BubbleLayer = function BubbleLayer(props) {
402
+ var bubbleLayer = props.bubbleLayer,
403
+ themeColorScheme = props.themeColorScheme,
404
+ map = props.map,
405
+ zoom = props.zoom,
406
+ onMapClick = props.onMapClick;
407
+ bubbleLayer.seriesColors = bubbleLayer.seriesColors || MapUtils_1.DEFAULT_SERIES_COLORS;
408
+ bubbleLayer.bubbleSize = bubbleLayer.bubbleSize || [];
409
+ var bakedData = React.useMemo(function () {
410
+ return MapUtils_1.bakeBubbleData(bubbleLayer);
411
+ }, [bubbleLayer]);
412
+ var staticColors = React.useMemo(function () {
413
+ return MapUtils_1.getStaticColors(bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors);
414
+ }, [bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors]);
415
+
416
+ var _ref4 = bakedData !== null && bakedData !== void 0 ? bakedData : {},
417
+ _ref4$data = _ref4.data,
418
+ data = _ref4$data === void 0 ? [] : _ref4$data,
419
+ _ref4$dataRange = _ref4.dataRange,
420
+ dataRange = _ref4$dataRange === void 0 ? [] : _ref4$dataRange,
421
+ resultLimit = _ref4.resultLimit,
422
+ bubbleSizeFields = _ref4.bubbleSizeFields,
423
+ isPie = _ref4.isPie;
424
+
425
+ var _bubbleLayer$addition = bubbleLayer.additionalTooltipFields,
426
+ additionalTooltipFields = _bubbleLayer$addition === void 0 ? [] : _bubbleLayer$addition;
427
+ var roundedZoom = Math.round(zoom);
428
+ var themeColor = themeColorScheme === 'light' ? '#ffffff' : '#1a1c20';
429
+ var dynamicColors = bubbleLayer.dataColors; // filter data for the current zoom level and sort base on values
430
+
431
+ var dataToRender = React.useMemo(function () {
432
+ return data.reduce(function (acc, datum, i) {
433
+ if (datum.zoom === roundedZoom) {
434
+ acc.push({
435
+ data: datum,
436
+ idx: i
437
+ });
438
+ }
439
+
440
+ return acc;
441
+ }, []).slice(0, resultLimit || MapUtils_1.DEFAULT_RESULT_LIMIT).sort(function (a, b) {
442
+ return lodash_1.sum(b.data.values) - lodash_1.sum(a.data.values);
443
+ });
444
+ }, [data, resultLimit, roundedZoom]);
445
+
446
+ var _handleMapClick = React.useCallback(function (e, name, value, i) {
447
+ var _a, _b, _c; // retrieve metadata from the appropriate datum, indexed by i
448
+
449
+
450
+ var metadata = (_c = (_b = (_a = dataToRender[i]) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.metadata) !== null && _c !== void 0 ? _c : {};
451
+ var payload = Object.keys(metadata).reduce(function (acc, curr) {
452
+ var key = "row.".concat(curr, ".value");
453
+ var val = String(metadata[curr]);
454
+ return Object.assign(Object.assign({}, acc), _defineProperty({}, key, val));
455
+ }, {
456
+ name: name,
457
+ value: String(value)
458
+ });
459
+ onMapClick({
460
+ e: e,
461
+ payload: payload
462
+ });
463
+ }, [dataToRender]);
464
+
465
+ return React.createElement(React.Fragment, null, dataToRender.map(function (datum, i) {
466
+ var colors = dynamicColors ? [dataToRender.map(function (obj) {
467
+ return colorUtils_1.isColor(dynamicColors[obj.idx]) ? dynamicColors[obj.idx] : MapUtils_1.DEFAULT_CLUSTER_COLOR;
468
+ })[i]] : staticColors;
469
+
470
+ var _datum$data$coordinat = _slicedToArray(datum.data.coordinates, 2),
471
+ longitude = _datum$data$coordinat[0],
472
+ latitude = _datum$data$coordinat[1];
473
+
474
+ var bubbleSize = datum.data.values.map(function (value, index) {
475
+ return {
476
+ name: bubbleSizeFields[index],
477
+ value: value,
478
+ color: colors[index]
479
+ };
480
+ });
481
+ var additionalFields = bubbleLayer.metadata ? additionalTooltipFields.map(function (field) {
482
+ return {
483
+ name: field,
484
+ value: datum.data.metadata[field]
485
+ };
486
+ }) : [];
487
+ return React.createElement(exports.Bubble, {
488
+ key: String(i),
489
+ originalValues: datum.data.values,
490
+ valueRange: dataRange,
491
+ colors: colors,
492
+ themeColor: themeColor,
493
+ isPie: isPie,
494
+ longitude: longitude,
495
+ latitude: latitude,
496
+ bubbleSize: bubbleSize,
497
+ additionalFields: additionalFields,
498
+ map: map,
499
+ handleMapClick: function handleMapClick(e, name, value) {
500
+ return _handleMapClick(e, name, value, i);
501
+ }
502
+ });
503
+ }));
504
+ };
505
+
506
+ exports.default = BubbleLayer;
507
+
508
+ /***/ }),
509
+ /* 23 */
510
+ /***/ (function(module, exports, __webpack_require__) {
511
+
512
+ "use strict";
513
+
514
+
515
+ var _defineProperty = __webpack_require__(1);
516
+
517
+ var _slicedToArray = __webpack_require__(7);
518
+
519
+ var _toConsumableArray = __webpack_require__(2);
520
+
521
+ Object.defineProperty(exports, "__esModule", {
522
+ value: true
523
+ });
524
+ exports.formatMetadata = exports.compareBaseStyles = exports.getScaledOpacities = exports.getGlobalLayerBoundaries = exports.isValidLatLon = exports.bakeBubbleData = exports.sanitizeValues = exports.transposeArray = exports.matchBubbleSize = exports.getStaticColors = exports.getZoomLevelFromGeobin = exports.getZoomConstraintsFromTileConfig = exports.getMapStyle = exports.getTilePreset = exports.LAYER_TYPE = exports.DEFAULT_OPACITY = exports.MAX_BUBBLE_RADIUS = exports.MIN_BUBBLE_RADIUS = exports.MAP_STYLE_VERSION_NUMBER = exports.DEFAULT_SERIES_COLORS = exports.DEFAULT_CLUSTER_COLOR = exports.DEFAULT_RESULT_LIMIT = exports.MIN_LONGITUDE = exports.MAX_LONGITUDE = exports.MIN_LATITUDE = exports.MAX_LATITUDE = void 0;
525
+
526
+ var lodash_1 = __webpack_require__(0);
527
+
528
+ var d3_scale_1 = __webpack_require__(24);
529
+
530
+ var chroma = __webpack_require__(25);
531
+
532
+ var colorUtils_1 = __webpack_require__(11);
533
+
534
+ var visualization_color_palettes_1 = __webpack_require__(26);
535
+
536
+ var types_1 = __webpack_require__(9);
537
+
538
+ exports.MAX_LATITUDE = 90;
539
+ exports.MIN_LATITUDE = -90;
540
+ exports.MAX_LONGITUDE = 180;
541
+ exports.MIN_LONGITUDE = -180;
542
+ exports.DEFAULT_RESULT_LIMIT = 1000;
543
+ exports.DEFAULT_CLUSTER_COLOR = '#909090';
544
+ exports.DEFAULT_SERIES_COLORS = visualization_color_palettes_1.VIZ_CATEGORICAL; // MapLibre requires a map style specification number which is always 8
545
+
546
+ exports.MAP_STYLE_VERSION_NUMBER = 8; // currently using one [min, max] value set for bubbles across all zoom levels
547
+ // TODO: design choices on [min, max] bubble size for different zoom levels
548
+
549
+ exports.MIN_BUBBLE_RADIUS = 7.11; // 10px
550
+
551
+ exports.MAX_BUBBLE_RADIUS = 45.26; // 85px
552
+
553
+ exports.DEFAULT_OPACITY = 0.8;
554
+ var LONGITUDE = 'longitude';
555
+ var LATITUDE = 'latitude';
556
+ var LAYER_TYPE;
557
+
558
+ (function (LAYER_TYPE) {
559
+ LAYER_TYPE["Marker"] = "marker";
560
+ LAYER_TYPE["Bubble"] = "bubble";
561
+ LAYER_TYPE["Choropleth"] = "choropleth";
562
+ })(LAYER_TYPE = exports.LAYER_TYPE || (exports.LAYER_TYPE = {}));
563
+ /**
564
+ * Construct a tile preset {key: config} by combining the default + custom tile configs
565
+ * Also returns the default tile config for each theme - light/dark
566
+ * @param {MapContextInterface} args
567
+ * @param {BaseTileConfig[]} args.defaultTileConfig
568
+ * @param {BaseTileConfig[]} args.customTileConfig
569
+ * @returns {Object} tile preset
570
+ */
571
+
572
+
573
+ var getTilePreset = function getTilePreset(_ref) {
574
+ var _ref$defaultTileConfi = _ref.defaultTileConfig,
575
+ defaultTileConfig = _ref$defaultTileConfi === void 0 ? [] : _ref$defaultTileConfi,
576
+ _ref$customTileConfig = _ref.customTileConfig,
577
+ customTileConfig = _ref$customTileConfig === void 0 ? [] : _ref$customTileConfig;
578
+
579
+ var _a, _b;
580
+
581
+ var tilePreset = {};
582
+ var defaultTileLight = {};
583
+ var defaultTileDark = {};
584
+ var tileConfigs = [].concat(defaultTileConfig).concat(customTileConfig);
585
+ lodash_1.forEach(tileConfigs, function (tileConfig) {
586
+ var key = tileConfig === null || tileConfig === void 0 ? void 0 : tileConfig.key;
587
+ var updatedConfig = Object.assign(Object.assign({
588
+ theme: 'all'
589
+ }, tileConfig), {
590
+ version: exports.MAP_STYLE_VERSION_NUMBER
591
+ });
592
+ tilePreset[key] = updatedConfig;
593
+ });
594
+
595
+ if (defaultTileConfig.length > 0) {
596
+ defaultTileLight = (_a = defaultTileConfig.find(function (config) {
597
+ return config.theme === 'light';
598
+ })) !== null && _a !== void 0 ? _a : defaultTileConfig.find(function (config) {
599
+ return config.theme === undefined;
600
+ });
601
+ defaultTileDark = (_b = defaultTileConfig.find(function (config) {
602
+ return config.theme === 'dark';
603
+ })) !== null && _b !== void 0 ? _b : defaultTileConfig.find(function (config) {
604
+ return config.theme === undefined;
605
+ });
606
+ }
607
+
608
+ return {
609
+ tilePreset: tilePreset,
610
+ defaultTileLight: defaultTileLight,
611
+ defaultTileDark: defaultTileDark
612
+ };
613
+ };
614
+
615
+ exports.getTilePreset = getTilePreset;
616
+ /**
617
+ * Check if baseLayerTileServer is in tilePreset and config matches current theme, if yes, return.
618
+ * If no, construct a mapStyle with baseLayerTilerServer and baseLayerTileServerType
619
+ * Else return default tile config based on current theme
620
+ * @param {Object} args
621
+ * @param {BaseTileConfig[]} args.tilePreset
622
+ * @param {String} args.baseLayerTilerServer
623
+ * @param {String} args.baseLayerTileServerType
624
+ * @param {String} args.colorScheme
625
+ * @param {BaseTileConfig} args.defaultTileDark
626
+ * @param {BaseTileConfig} args.defaultTileLight
627
+ * @returns {BaseTileConfig} mapStyle
628
+ */
629
+
630
+ var getMapStyle = function getMapStyle(_ref2) {
631
+ var showBaseLayer = _ref2.showBaseLayer,
632
+ _ref2$baseLayerTileSe = _ref2.baseLayerTileServer,
633
+ baseLayerTileServer = _ref2$baseLayerTileSe === void 0 ? '' : _ref2$baseLayerTileSe,
634
+ _ref2$baseLayerTileSe2 = _ref2.baseLayerTileServerType,
635
+ baseLayerTileServerType = _ref2$baseLayerTileSe2 === void 0 ? '' : _ref2$baseLayerTileSe2,
636
+ _ref2$tilePreset = _ref2.tilePreset,
637
+ tilePreset = _ref2$tilePreset === void 0 ? {} : _ref2$tilePreset,
638
+ _ref2$colorScheme = _ref2.colorScheme,
639
+ colorScheme = _ref2$colorScheme === void 0 ? 'light' : _ref2$colorScheme,
640
+ _ref2$defaultTileLigh = _ref2.defaultTileLight,
641
+ defaultTileLight = _ref2$defaultTileLigh === void 0 ? {} : _ref2$defaultTileLigh,
642
+ _ref2$defaultTileDark = _ref2.defaultTileDark,
643
+ defaultTileDark = _ref2$defaultTileDark === void 0 ? {} : _ref2$defaultTileDark;
644
+
645
+ if (!showBaseLayer) {
646
+ return {
647
+ version: exports.MAP_STYLE_VERSION_NUMBER,
648
+ sources: {
649
+ 'base-tiles': {
650
+ type: 'raster',
651
+ tiles: ['data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='],
652
+ tileSize: 256
653
+ }
654
+ },
655
+ layers: [{
656
+ id: 'base-layer',
657
+ type: 'raster',
658
+ source: 'base-tiles',
659
+ minzoom: 0,
660
+ maxzoom: 22
661
+ }]
662
+ };
663
+ }
664
+
665
+ if (baseLayerTileServer && tilePreset[baseLayerTileServer] && (tilePreset[baseLayerTileServer].theme === colorScheme || tilePreset[baseLayerTileServer].theme === 'all')) {
666
+ return tilePreset[baseLayerTileServer];
667
+ }
668
+
669
+ if (baseLayerTileServer && baseLayerTileServerType) {
670
+ var tiles = [];
671
+ /**
672
+ * Tile Server URLs (eg: http://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png) can specify the variable {s} which refers to a subdomain
673
+ * Subdomains are used to help with browser parallel requests per domain limitation. These subdomains are typically single letters 'a', 'b' and 'c'
674
+ * Refer to https://leafletjs.com/SlavaUkraini/reference.html#tilelayer and https://wiki.openstreetmap.org/wiki/Tile_servers
675
+ */
676
+
677
+ if (baseLayerTileServer.match(/^(https?):\/\/{(s|S)}\../)) {
678
+ /**
679
+ * sXML (Leaflet) allows users to define their own tile server URLs + list of available subdomains
680
+ * In order to preserve this behavior during conversion to splunk.map,
681
+ * if the variable {s} or {S} is detected, replace it with 'a', 'b' and 'c' - default values for subdomains
682
+ * TODO: in the future, add an additional prop - baseLayerTileServerSubdomains: ['x', 'y', 'z'], default being ['a', 'b', 'c']
683
+ */
684
+ tiles = [baseLayerTileServer.replace(/{(s|S)}/, 'a'), baseLayerTileServer.replace(/{(s|S)}/, 'b'), baseLayerTileServer.replace(/{(s|S)}/, 'c')];
685
+ } else {
686
+ tiles = [baseLayerTileServer];
687
+ } // TODO: remove hardcoded style when we allow users to pass in layer style through Viz options
688
+
689
+
690
+ var mapStyle = {
691
+ version: exports.MAP_STYLE_VERSION_NUMBER,
692
+ sources: {
693
+ 'base-tiles': {
694
+ type: baseLayerTileServerType,
695
+ tiles: tiles,
696
+ tileSize: 256
697
+ }
698
+ },
699
+ layers: [{
700
+ id: 'base-layer',
701
+ type: 'raster',
702
+ source: 'base-tiles',
703
+ minzoom: 0,
704
+ maxzoom: 10
705
+ }]
706
+ };
707
+ return mapStyle;
708
+ } // if tile server is not present in the preset AND we can't construct a mapStyle, fall back on defaults
709
+
710
+
711
+ return colorScheme === 'light' ? defaultTileLight : defaultTileDark;
712
+ };
713
+
714
+ exports.getMapStyle = getMapStyle;
715
+
716
+ var getZoomConstraintsFromTileConfig = function getZoomConstraintsFromTileConfig(tileConfig, baseLayerTileServer) {
717
+ var sources = tileConfig.sources,
718
+ layers = tileConfig.layers;
719
+ var matchedBaseLayerTileServer = false; // check sources for minzoom maxzoom first
720
+
721
+ var sourceKeys = Object.keys(sources);
722
+
723
+ for (var i = 0; i < sourceKeys.length; i += 1) {
724
+ var _sources$sourceKeys$i = sources[sourceKeys[i]],
725
+ minzoom = _sources$sourceKeys$i.minzoom,
726
+ maxzoom = _sources$sourceKeys$i.maxzoom;
727
+
728
+ if (baseLayerTileServer && sources[sourceKeys[i]].tiles.indexOf(baseLayerTileServer) !== -1) {
729
+ matchedBaseLayerTileServer = true;
730
+ }
731
+
732
+ if ((baseLayerTileServer && matchedBaseLayerTileServer || !baseLayerTileServer) && lodash_1.isNumber(minzoom) && lodash_1.isNumber(maxzoom)) {
733
+ return {
734
+ minZoom: minzoom,
735
+ maxZoom: maxzoom
736
+ };
737
+ }
738
+ } // then check layers
739
+
740
+
741
+ for (var _i = 0; _i < layers.length; _i += 1) {
742
+ var _layers$_i = layers[_i],
743
+ _minzoom = _layers$_i.minzoom,
744
+ _maxzoom = _layers$_i.maxzoom;
745
+
746
+ if ((baseLayerTileServer && matchedBaseLayerTileServer || !baseLayerTileServer) && lodash_1.isNumber(_minzoom) && lodash_1.isNumber(_maxzoom)) {
747
+ return {
748
+ minZoom: _minzoom,
749
+ maxZoom: _maxzoom
750
+ };
751
+ }
752
+ } // Maplibre default - would reset previous min/maxZoom
753
+
754
+
755
+ return {
756
+ minZoom: 0,
757
+ maxZoom: 22
758
+ };
759
+ };
760
+
761
+ exports.getZoomConstraintsFromTileConfig = getZoomConstraintsFromTileConfig;
762
+
763
+ var getZoomLevelFromGeobin = function getZoomLevelFromGeobin(geobinStr) {
764
+ var _a;
765
+
766
+ if (!geobinStr) {
767
+ return null;
768
+ } // geostats cmds return geobin with zoom level 0-18, 0-99 in the geobinPattern covers the range
769
+
770
+
771
+ var geobinPattern = /bin_id_zl_([0-9]{0,2})?_y_/g;
772
+ var match = geobinPattern.exec(geobinStr);
773
+ return (_a = (match === null || match === void 0 ? void 0 : match.length) && parseInt(match[1], 10)) !== null && _a !== void 0 ? _a : null;
774
+ };
775
+
776
+ exports.getZoomLevelFromGeobin = getZoomLevelFromGeobin; // Bubble colors - static
777
+
778
+ var getStaticColors = function getStaticColors(colorCount, colorArray) {
779
+ if (colorCount < 0 || !colorCount) {
780
+ return [exports.DEFAULT_CLUSTER_COLOR];
781
+ }
782
+
783
+ if (!colorArray || !colorArray.length) {
784
+ return _toConsumableArray(Array(colorCount).keys()).map(function (i) {
785
+ return exports.DEFAULT_SERIES_COLORS[i];
786
+ });
787
+ } // loop through colorArray to pick the first $colorCount colors
788
+ // start from begining again if colorCount > colorArray.length
789
+
790
+
791
+ return _toConsumableArray(Array(colorCount).keys()).map(function (i) {
792
+ return colorUtils_1.isColor(colorArray[i % colorArray.length]) ? colorArray[i % colorArray.length] : exports.DEFAULT_CLUSTER_COLOR;
793
+ });
794
+ };
795
+
796
+ exports.getStaticColors = getStaticColors; // Bubble size
797
+
798
+ var matchBubbleSize = function matchBubbleSize(dataRange, data) {
799
+ var size = d3_scale_1.scalePow().exponent(0.2).domain(dataRange).range([exports.MIN_BUBBLE_RADIUS, exports.MAX_BUBBLE_RADIUS])(data);
800
+
801
+ if (size > exports.MAX_BUBBLE_RADIUS) {
802
+ return exports.MAX_BUBBLE_RADIUS;
803
+ }
804
+
805
+ if (size < exports.MIN_BUBBLE_RADIUS) {
806
+ return exports.MIN_BUBBLE_RADIUS;
807
+ }
808
+
809
+ return size;
810
+ };
811
+
812
+ exports.matchBubbleSize = matchBubbleSize;
813
+
814
+ var transposeArray = function transposeArray(array) {
815
+ if (!array || !array.length || !array[0] || !array[0].length) {
816
+ return [];
817
+ }
818
+
819
+ return array[0].map(function (_, i) {
820
+ return array.map(function (row) {
821
+ return row[i];
822
+ });
823
+ });
824
+ };
825
+
826
+ exports.transposeArray = transposeArray; // sanitize values: update all null, undefined, or negative values to 0
827
+
828
+ var sanitizeValues = function sanitizeValues(values) {
829
+ // null / undefined
830
+ if (!values) {
831
+ return 0;
832
+ } // number
833
+
834
+
835
+ if (!Array.isArray(values)) {
836
+ return values > 0 ? values : 0;
837
+ } // array
838
+
839
+
840
+ return values.map(function (arr) {
841
+ return exports.sanitizeValues(arr);
842
+ });
843
+ };
844
+
845
+ exports.sanitizeValues = sanitizeValues;
846
+
847
+ var bakeBubbleData = function bakeBubbleData(layer) {
848
+ var _a;
849
+
850
+ if (!layer || !((_a = layer.bubbleSize) === null || _a === void 0 ? void 0 : _a.length) || !layer.geobin || !layer.geobin.length || !layer.latitude || !layer.latitude.length || !layer.longitude || !layer.longitude.length) {
851
+ return null;
852
+ } // if bubbleSize is passed as an array of single number array (data series)
853
+ // e.g. [value0, value1, ...]
854
+ // format each value as an array to unify data operations for data series and frames
855
+
856
+
857
+ var sanitizedBubbleSize = exports.sanitizeValues(layer.bubbleSize);
858
+ var transposedBubbleSize;
859
+ var transposedSanitizedBubbleSize;
860
+ var isPie = false; // format array if bubbleSize is passed as an array of array (data frame)
861
+
862
+ if (Array.isArray(layer.bubbleSize[0])) {
863
+ // one-time array transpose,
864
+ // e.g. from [column0data, column0data] (multi series)
865
+ // to [[column0datum0, column1datum0], [column0datum1, column1data1], ...]
866
+ // or e.g. from [column0data] (single series)
867
+ // to [[column0data]]
868
+ // for easy access of values at each geo location,
869
+ // and min max pie size computation
870
+ transposedBubbleSize = exports.transposeArray(layer.bubbleSize);
871
+ transposedSanitizedBubbleSize = exports.transposeArray(sanitizedBubbleSize); // if multiple series in the dataframe, set isPie to true
872
+
873
+ if (layer.bubbleSize.length > 1) {
874
+ isPie = true;
875
+ }
876
+ } else {
877
+ transposedBubbleSize = layer.bubbleSize.map(function (n) {
878
+ return [n];
879
+ });
880
+ transposedSanitizedBubbleSize = sanitizedBubbleSize.map(function (n) {
881
+ return [n];
882
+ });
883
+ }
884
+
885
+ if (!transposedBubbleSize || !transposedBubbleSize.length) {
886
+ return null;
887
+ }
888
+
889
+ var data = layer.latitude.map(function (lat, i) {
890
+ return {
891
+ zoom: exports.getZoomLevelFromGeobin(layer.geobin[i]),
892
+ values: transposedBubbleSize[i],
893
+ sanitizedValues: transposedSanitizedBubbleSize[i],
894
+ coordinates: [layer.longitude[i], lat],
895
+ metadata: layer.metadata ? layer.metadata[i] : {}
896
+ };
897
+ }).filter(function (d) {
898
+ return Boolean(d.values);
899
+ }); // compute the min/max value to encode min/max pie or bubble size
900
+
901
+ var min = lodash_1.sum(transposedSanitizedBubbleSize[0]);
902
+ var max = lodash_1.sum(transposedSanitizedBubbleSize[1]);
903
+ transposedSanitizedBubbleSize.forEach(function (row) {
904
+ var bubbleSize = lodash_1.sum(row);
905
+ max = bubbleSize > max ? bubbleSize : max;
906
+ min = bubbleSize < min ? bubbleSize : min;
907
+ });
908
+ return {
909
+ data: data,
910
+ dataRange: [min, max],
911
+ isPie: isPie,
912
+ resultLimit: layer.resultLimit,
913
+ bubbleSizeFields: layer.bubbleSizeFields
914
+ };
915
+ };
916
+
917
+ exports.bakeBubbleData = bakeBubbleData;
918
+
919
+ var isValidLatLon = function isValidLatLon(latlon) {
920
+ if (!latlon || !Array.isArray(latlon) || latlon.length !== 2) {
921
+ return false;
922
+ }
923
+
924
+ var _latlon = _slicedToArray(latlon, 2),
925
+ lat = _latlon[0],
926
+ lon = _latlon[1];
927
+
928
+ if (!types_1.isNumber(lat) || !(lat >= exports.MIN_LATITUDE && lat <= exports.MAX_LATITUDE)) {
929
+ return false;
930
+ }
931
+
932
+ if (!types_1.isNumber(lon) || !(lon >= exports.MIN_LONGITUDE && lon <= exports.MAX_LONGITUDE)) {
933
+ return false;
934
+ }
935
+
936
+ return true;
937
+ };
938
+
939
+ exports.isValidLatLon = isValidLatLon;
940
+ /**
941
+ * Returns a list of all lat or lon coordinates used in a specified layer
942
+ * @param {LayerType[]} layer
943
+ * @param {string} field
944
+ * @returns {number[]} list of lat coordinates or lon coordinates
945
+ */
946
+
947
+ var getLatOrLonCoordinates = function getLatOrLonCoordinates(layer, field) {
948
+ var getClusterValues = function getClusterValues(clusterLayer) {
949
+ return lodash_1.get(clusterLayer, field, []).slice(0, clusterLayer.type === LAYER_TYPE.Marker && clusterLayer.resultLimit ? clusterLayer.resultLimit : exports.DEFAULT_RESULT_LIMIT);
950
+ };
951
+
952
+ var getChoroplethValues = function getChoroplethValues(choroplethLayer) {
953
+ var slicedGeomList = choroplethLayer.geom.slice(0, choroplethLayer.resultLimit);
954
+ var flatCoordinates = slicedGeomList.flatMap(function (geomObject) {
955
+ return geomObject.coordinates.flat(2);
956
+ });
957
+ return flatCoordinates.map(function (coord) {
958
+ return coord[field === LONGITUDE ? 0 : 1];
959
+ });
960
+ };
961
+
962
+ return layer.type === LAYER_TYPE.Choropleth ? getChoroplethValues(layer) : getClusterValues(layer);
963
+ };
964
+ /**
965
+ * Returns the min and max LongLat pairs to determine the layer boundaries to fit all markers/bubbles
966
+ * @param {LayerType[]} layers
967
+ * @returns {LngLatBoundsLike}
968
+ */
969
+
970
+
971
+ var getGlobalLayerBoundaries = function getGlobalLayerBoundaries(layers) {
972
+ var isLayerValid = function isLayerValid(field) {
973
+ return layers.every(function (layer) {
974
+ return layer[field] || layer.geom;
975
+ });
976
+ };
977
+
978
+ var getDefaultMax = function getDefaultMax(field) {
979
+ return field === LONGITUDE ? exports.MAX_LONGITUDE : exports.MAX_LATITUDE;
980
+ };
981
+
982
+ var getDefaultMin = function getDefaultMin(field) {
983
+ return field === LONGITUDE ? exports.MIN_LONGITUDE : exports.MIN_LATITUDE;
984
+ };
985
+
986
+ if (!layers || !Array.isArray(layers) || !layers.length) {
987
+ return null;
988
+ }
989
+
990
+ var getMin = function getMin(field) {
991
+ if (!isLayerValid(field)) {
992
+ return getDefaultMin(field);
993
+ }
994
+
995
+ return layers.reduce(function (prevVal, layer) {
996
+ var coordinatesNumArr = getLatOrLonCoordinates(layer, field).map(function (x) {
997
+ return +x;
998
+ });
999
+ return lodash_1.min([prevVal].concat(_toConsumableArray(coordinatesNumArr)));
1000
+ }, getDefaultMax(field));
1001
+ };
1002
+
1003
+ var getMax = function getMax(field) {
1004
+ if (!isLayerValid(field)) {
1005
+ return getDefaultMax(field);
1006
+ }
1007
+
1008
+ return layers.reduce(function (prevVal, layer) {
1009
+ var coordinatesNumArr = getLatOrLonCoordinates(layer, field).map(Number);
1010
+ return lodash_1.max([prevVal].concat(_toConsumableArray(coordinatesNumArr)));
1011
+ }, getDefaultMin(field));
1012
+ };
1013
+
1014
+ return [[getMin(LONGITUDE), getMin(LATITUDE)], [getMax(LONGITUDE), getMax(LATITUDE)]];
1015
+ };
1016
+
1017
+ exports.getGlobalLayerBoundaries = getGlobalLayerBoundaries;
1018
+
1019
+ var getScaledOpacities = function getScaledOpacities(colors, cfgOpacity) {
1020
+ // extract opacity information from 8 digit hex codes
1021
+ var opacities = colors === null || colors === void 0 ? void 0 : colors.map(function (color) {
1022
+ var _a;
1023
+
1024
+ return (color === null || color === void 0 ? void 0 : color.length) === 9 ? (_a = chroma(color).alpha()) !== null && _a !== void 0 ? _a : 1 : 1;
1025
+ }); // opacity cannot be greater than configured opacity
1026
+
1027
+ return opacities === null || opacities === void 0 ? void 0 : opacities.map(function (opacity) {
1028
+ return opacity * cfgOpacity;
1029
+ });
1030
+ };
1031
+
1032
+ exports.getScaledOpacities = getScaledOpacities;
1033
+
1034
+ var compareBaseStyles = function compareBaseStyles(curr, next) {
1035
+ var _a, _b, _c, _d;
1036
+
1037
+ var currBaseLayer = (_a = curr === null || curr === void 0 ? void 0 : curr.layers) === null || _a === void 0 ? void 0 : _a.find(function (layer) {
1038
+ return (layer === null || layer === void 0 ? void 0 : layer.id) === 'base-layer';
1039
+ });
1040
+ var nextBaseLayer = (_b = next === null || next === void 0 ? void 0 : next.layers) === null || _b === void 0 ? void 0 : _b.find(function (layer) {
1041
+ return (layer === null || layer === void 0 ? void 0 : layer.id) === 'base-layer';
1042
+ });
1043
+ var currBaseSource = lodash_1.get(curr === null || curr === void 0 ? void 0 : curr.sources, (_c = currBaseLayer === null || currBaseLayer === void 0 ? void 0 : currBaseLayer.source) !== null && _c !== void 0 ? _c : '');
1044
+ var nextBaseSource = lodash_1.get(next === null || next === void 0 ? void 0 : next.sources, (_d = nextBaseLayer === null || nextBaseLayer === void 0 ? void 0 : nextBaseLayer.source) !== null && _d !== void 0 ? _d : '');
1045
+
1046
+ if (!currBaseLayer || !nextBaseLayer || !currBaseSource || !nextBaseSource) {
1047
+ return false;
1048
+ }
1049
+
1050
+ return lodash_1.isEqual(currBaseLayer, nextBaseLayer) && lodash_1.isEqual(currBaseSource, nextBaseSource);
1051
+ };
1052
+
1053
+ exports.compareBaseStyles = compareBaseStyles;
1054
+
1055
+ var formatMetadata = function formatMetadata(choroplethLayer, i) {
1056
+ if (!choroplethLayer || !choroplethLayer.areaIds || !choroplethLayer.areaValues) return {};
1057
+ if (i >= choroplethLayer.areaIds.length) return {};
1058
+ var metadata = choroplethLayer.metadata ? choroplethLayer.metadata[i] : {};
1059
+ var name = choroplethLayer.areaIds[i];
1060
+ var value = choroplethLayer.areaValues[i];
1061
+ var base = {
1062
+ name: name,
1063
+ value: String(value)
1064
+ };
1065
+ return Object.keys(metadata).reduce(function (result, curr) {
1066
+ var key = "row.".concat(curr, ".value");
1067
+ var val = lodash_1.isObject(metadata[curr]) ? JSON.stringify(metadata[curr]) : String(metadata[curr]);
1068
+ return Object.assign(Object.assign({}, result), _defineProperty({}, key, val));
1069
+ }, base);
1070
+ };
1071
+
1072
+ exports.formatMetadata = formatMetadata;
189
1073
 
190
1074
  /***/ }),
191
- /* 16 */
1075
+ /* 24 */
192
1076
  /***/ (function(module, exports) {
193
1077
 
194
- module.exports = require("@splunk/visualizations-shared/JSONSchemaUtils");
1078
+ module.exports = require("d3-scale");
1079
+
1080
+ /***/ }),
1081
+ /* 25 */
1082
+ /***/ (function(module, exports) {
1083
+
1084
+ module.exports = require("chroma-js");
1085
+
1086
+ /***/ }),
1087
+ /* 26 */
1088
+ /***/ (function(module, exports) {
1089
+
1090
+ module.exports = require("@splunk/visualization-color-palettes");
1091
+
1092
+ /***/ }),
1093
+ /* 27 */
1094
+ /***/ (function(module, exports, __webpack_require__) {
1095
+
1096
+ "use strict";
1097
+
1098
+
1099
+ var _slicedToArray = __webpack_require__(7);
1100
+
1101
+ var __rest = this && this.__rest || function (s, e) {
1102
+ var t = {};
1103
+
1104
+ for (var p in s) {
1105
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
1106
+ }
1107
+
1108
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
1109
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
1110
+ }
1111
+ return t;
1112
+ };
1113
+
1114
+ Object.defineProperty(exports, "__esModule", {
1115
+ value: true
1116
+ });
1117
+
1118
+ var maplibre_gl_1 = __webpack_require__(28);
1119
+
1120
+ var React = __webpack_require__(3);
1121
+
1122
+ var Tooltip_1 = __webpack_require__(29);
1123
+
1124
+ var MarkerWrapper = function MarkerWrapper(_a) {
1125
+ var longitude = _a.longitude,
1126
+ latitude = _a.latitude,
1127
+ areaId = _a.areaId,
1128
+ areaValue = _a.areaValue,
1129
+ _a$additionalFields = _a.additionalFields,
1130
+ additionalFields = _a$additionalFields === void 0 ? [] : _a$additionalFields,
1131
+ map = _a.map,
1132
+ isChoroplethTooltipOpen = _a.isChoroplethTooltipOpen,
1133
+ children = _a.children,
1134
+ otherProps = __rest(_a, ["longitude", "latitude", "areaId", "areaValue", "additionalFields", "map", "isChoroplethTooltipOpen", "children"]);
1135
+
1136
+ var container = React.useRef();
1137
+ var marker = React.useRef();
1138
+
1139
+ var _React$useState = React.useState(false),
1140
+ _React$useState2 = _slicedToArray(_React$useState, 2),
1141
+ isTooltipOpen = _React$useState2[0],
1142
+ setTooltipOpenStatus = _React$useState2[1];
1143
+
1144
+ var isChoroplethTooltip = React.useCallback(function () {
1145
+ return isChoroplethTooltipOpen !== undefined;
1146
+ }, [isChoroplethTooltipOpen]);
1147
+ var openTooltip = React.useCallback(function () {
1148
+ return setTooltipOpenStatus(true);
1149
+ }, []);
1150
+ var closeTooltip = React.useCallback(function () {
1151
+ return setTooltipOpenStatus(false);
1152
+ }, []);
1153
+ var cleanupMarker = React.useCallback(function () {
1154
+ if (marker.current) {
1155
+ marker.current.remove();
1156
+ marker.current = undefined;
1157
+ }
1158
+ }, []);
1159
+ React.useEffect(function () {
1160
+ try {
1161
+ if (marker.current) {
1162
+ marker.current.setLngLat([longitude, latitude]);
1163
+ } else {
1164
+ marker.current = new maplibre_gl_1.Marker(container.current);
1165
+ marker.current.setLngLat([longitude, latitude]);
1166
+ marker.current.addTo(map.current);
1167
+ }
1168
+ } catch (error) {
1169
+ console.error(error);
1170
+ cleanupMarker();
1171
+ }
1172
+ }, [latitude, longitude, map]);
1173
+ React.useEffect(function () {
1174
+ return cleanupMarker;
1175
+ }, []);
1176
+ return React.createElement("div", {
1177
+ style: {
1178
+ visibility: isChoroplethTooltip() ? 'hidden' : 'visible'
1179
+ }
1180
+ }, React.createElement("div", Object.assign({
1181
+ style: {
1182
+ visibility: isChoroplethTooltip() ? 'hidden' : 'visible'
1183
+ },
1184
+ ref: container,
1185
+ "data-test": "map-marker",
1186
+ onMouseOver: openTooltip,
1187
+ onMouseLeave: closeTooltip,
1188
+ onFocus: openTooltip,
1189
+ onBlur: closeTooltip
1190
+ }, otherProps), children), React.createElement("div", null, React.createElement(Tooltip_1.default, {
1191
+ open: isChoroplethTooltip() ? isChoroplethTooltipOpen : isTooltipOpen,
1192
+ anchor: container.current,
1193
+ latitude: isChoroplethTooltip() ? null : latitude,
1194
+ longitude: isChoroplethTooltip() ? null : longitude,
1195
+ areaId: areaId,
1196
+ areaValue: areaValue,
1197
+ additionalFields: additionalFields
1198
+ })));
1199
+ };
1200
+
1201
+ exports.default = MarkerWrapper;
1202
+
1203
+ /***/ }),
1204
+ /* 28 */
1205
+ /***/ (function(module, exports) {
1206
+
1207
+ module.exports = require("maplibre-gl");
1208
+
1209
+ /***/ }),
1210
+ /* 29 */
1211
+ /***/ (function(module, exports, __webpack_require__) {
1212
+
1213
+ "use strict";
1214
+
1215
+
1216
+ Object.defineProperty(exports, "__esModule", {
1217
+ value: true
1218
+ });
1219
+ exports.convertDegToDMS = void 0;
1220
+
1221
+ var React = __webpack_require__(3);
1222
+
1223
+ var styled_components_1 = __webpack_require__(10);
1224
+
1225
+ var Popover_1 = __webpack_require__(30);
1226
+
1227
+ var i18n_1 = __webpack_require__(31);
1228
+
1229
+ var StyledPopover = styled_components_1.default(Popover_1.default).withConfig({
1230
+ displayName: "Tooltip__StyledPopover",
1231
+ componentId: "xwewsa-0"
1232
+ })(["width:250px;font-size:12px;"]);
1233
+ var StyledTable = styled_components_1.default.table.withConfig({
1234
+ displayName: "Tooltip__StyledTable",
1235
+ componentId: "xwewsa-1"
1236
+ })(["margin:2px 6px 2px 6px;width:calc(100% - 12px);"]);
1237
+ var StyledTitleColumn = styled_components_1.default.td.withConfig({
1238
+ displayName: "Tooltip__StyledTitleColumn",
1239
+ componentId: "xwewsa-2"
1240
+ })(["opacity:0.85;"]);
1241
+ var StyledValueColumn = styled_components_1.default.td.withConfig({
1242
+ displayName: "Tooltip__StyledValueColumn",
1243
+ componentId: "xwewsa-3"
1244
+ })(["text-align:right;"]);
1245
+ var StyledColorBlock = styled_components_1.default.div.withConfig({
1246
+ displayName: "Tooltip__StyledColorBlock",
1247
+ componentId: "xwewsa-4"
1248
+ })(["background-color:", ";display:inline-block;margin-right:4px;border-radius:2px;width:6px;height:11px;transform:translateY(1px);"], function (props) {
1249
+ return props.color;
1250
+ });
1251
+
1252
+ var convertDegToDMS = function convertDegToDMS(decimalDegree, type) {
1253
+ var truncate = function truncate(n) {
1254
+ return n > 0 ? Math.floor(n) : Math.ceil(n);
1255
+ };
1256
+
1257
+ var absoluteDegree = Math.abs(decimalDegree);
1258
+ var degrees = truncate(absoluteDegree);
1259
+ var minutes = truncate((absoluteDegree - degrees) * 60);
1260
+ var seconds = Math.round((absoluteDegree - degrees - minutes / 60) * 3600);
1261
+
1262
+ if (seconds === 60) {
1263
+ minutes += 1;
1264
+ seconds = 0;
1265
+ }
1266
+
1267
+ if (minutes === 60) {
1268
+ degrees += 1;
1269
+ minutes = 0;
1270
+ }
1271
+
1272
+ var direction;
1273
+
1274
+ if (type === 'longitude') {
1275
+ direction = decimalDegree < 0 ? 'W' : 'E';
1276
+ } else if (type === 'latitude') {
1277
+ direction = decimalDegree < 0 ? 'S' : 'N';
1278
+ }
1279
+
1280
+ return "".concat(degrees, "\xB0 ").concat(minutes, "' ").concat(seconds, "\" ").concat(direction);
1281
+ };
1282
+
1283
+ exports.convertDegToDMS = convertDegToDMS; // only want latitude/longitude for marker and bubble
1284
+ // omit for choropleth, and put areaid, areavalue instead
1285
+
1286
+ var Tooltip = function Tooltip(_ref) {
1287
+ var open = _ref.open,
1288
+ anchor = _ref.anchor,
1289
+ latitude = _ref.latitude,
1290
+ longitude = _ref.longitude,
1291
+ areaId = _ref.areaId,
1292
+ areaValue = _ref.areaValue,
1293
+ _ref$additionalFields = _ref.additionalFields,
1294
+ additionalFields = _ref$additionalFields === void 0 ? [] : _ref$additionalFields;
1295
+ return React.createElement(StyledPopover, {
1296
+ open: open,
1297
+ anchor: anchor,
1298
+ "data-test": "map-marker-tooltip",
1299
+ defaultPlacement: "above"
1300
+ }, React.createElement(StyledTable, null, React.createElement("tbody", null, areaId && areaValue && React.createElement("tr", null, React.createElement(StyledTitleColumn, {
1301
+ "data-test": "area-id"
1302
+ }, areaId), React.createElement(StyledValueColumn, {
1303
+ "data-test": "area-value"
1304
+ }, areaValue)), latitude && React.createElement("tr", null, React.createElement(StyledTitleColumn, null, i18n_1._('Latitude')), React.createElement(StyledValueColumn, {
1305
+ "data-test": "latitude"
1306
+ }, exports.convertDegToDMS(latitude, 'latitude'))), longitude && React.createElement("tr", null, React.createElement(StyledTitleColumn, null, i18n_1._('Longitude')), React.createElement(StyledValueColumn, {
1307
+ "data-test": "longitude"
1308
+ }, exports.convertDegToDMS(longitude, 'longitude'))), additionalFields.map(function (_ref2, index) {
1309
+ var name = _ref2.name,
1310
+ value = _ref2.value,
1311
+ color = _ref2.color;
1312
+ return React.createElement("tr", {
1313
+ key: String(index)
1314
+ }, React.createElement(StyledTitleColumn, {
1315
+ "data-test": "field-title"
1316
+ }, color ? React.createElement(StyledColorBlock, {
1317
+ "data-test": "field-color",
1318
+ color: color
1319
+ }) : null, name), React.createElement(StyledValueColumn, {
1320
+ "data-test": "field-value"
1321
+ }, value));
1322
+ }))));
1323
+ };
1324
+
1325
+ exports.default = Tooltip;
1326
+
1327
+ /***/ }),
1328
+ /* 30 */
1329
+ /***/ (function(module, exports) {
1330
+
1331
+ module.exports = require("@splunk/react-ui/Popover");
1332
+
1333
+ /***/ }),
1334
+ /* 31 */
1335
+ /***/ (function(module, exports) {
1336
+
1337
+ module.exports = require("@splunk/ui-utils/i18n");
195
1338
 
196
1339
  /***/ })
197
1340
  /******/ ]);