@splunk/visualizations 24.3.5 → 24.5.1

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 (337) hide show
  1. package/.loki/reference/chrome_docker_PureVisualizations_PureSingleValueRadial_basic_scp_theme.png +0 -0
  2. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Area_Editor.png +0 -0
  3. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Bar_Editor.png +0 -0
  4. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Bubble_Editor.png +0 -0
  5. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_ChoroplethSvg_Editor.png +0 -0
  6. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Column_Editor.png +0 -0
  7. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Ellipse_Editor.png +0 -0
  8. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_FillerGauge_Editor.png +0 -0
  9. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Image_Editor.png +0 -0
  10. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Line_Editor.png +0 -0
  11. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_LinkGraph_Editor.png +0 -0
  12. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Map_Editor.png +0 -0
  13. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Markdown_Editor.png +0 -0
  14. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_MarkerGauge_Editor.png +0 -0
  15. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Parallel_Coordinates_Editor.png +0 -0
  16. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Pie_Editor.png +0 -0
  17. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Punchcard_Editor.png +0 -0
  18. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Rectangle_Editor.png +0 -0
  19. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Sankey_Editor.png +0 -0
  20. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Scatter_Editor.png +0 -0
  21. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Single_Value_Editor.png +0 -0
  22. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Single_Value_Icon_Editor.png +0 -0
  23. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Single_Value_Radial_Editor.png +0 -0
  24. package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Table_Editor.png +0 -0
  25. package/.loki/reference/chrome_docker_Visualizations_Area_Area_Placeholder_if_datasource_does_not_have_any_data.png +0 -0
  26. package/.loki/reference/chrome_docker_Visualizations_Area_Area_Placeholder_if_viz_does_not_connect_to_datasource.png +0 -0
  27. package/.loki/reference/chrome_docker_Visualizations_Bar_Bar_Placeholder_if_datasource_does_not_have_any_data.png +0 -0
  28. package/.loki/reference/chrome_docker_Visualizations_Bar_Bar_Placeholder_if_viz_does_not_connect_to_datasource.png +0 -0
  29. package/.loki/reference/chrome_docker_Visualizations_Bubble_Bubble_Placeholder_if_datasource_does_not_have_any_data.png +0 -0
  30. package/.loki/reference/chrome_docker_Visualizations_Bubble_Bubble_Placeholder_if_viz_does_not_connect_to_datasource.png +0 -0
  31. package/.loki/reference/chrome_docker_Visualizations_Choropleth_Svg_Choropleth_Svg_Click.png +0 -0
  32. package/.loki/reference/chrome_docker_Visualizations_Choropleth_Svg_Choropleth_Svg_Default.png +0 -0
  33. package/.loki/reference/chrome_docker_Visualizations_Choropleth_Svg_Choropleth_Svg_Missing_Props_Message_When_No_Svg.png +0 -0
  34. package/.loki/reference/chrome_docker_Visualizations_Choropleth_Svg_Choropleth_Svg_Placeholder_If_No_Svg_And_No_Data.png +0 -0
  35. package/.loki/reference/chrome_docker_Visualizations_Choropleth_Svg_Choropleth_Svg_Set_the_color_of_multiple_areas_in_an_Svg_based_on_a_rangeValue_threshold.png +0 -0
  36. package/.loki/reference/chrome_docker_Visualizations_Choropleth_Svg_Choropleth_Svg_Set_the_color_of_multiple_areas_in_an_Svg_based_on_areaIds.png +0 -0
  37. package/.loki/reference/chrome_docker_Visualizations_Choropleth_Svg_Choropleth_Svg_Set_the_color_using_multiMap_formatter.png +0 -0
  38. package/.loki/reference/chrome_docker_Visualizations_Choropleth_Svg_Choropleth_Svg_Svg_Shows_Even_When_No_Datasources.png +0 -0
  39. package/.loki/reference/chrome_docker_Visualizations_Choropleth_Svg_Choropleth_Svg_Use_Local_To_Download_Svg.png +0 -0
  40. package/.loki/reference/chrome_docker_Visualizations_Column_Column_Placeholder_if_datasource_does_not_have_any_data.png +0 -0
  41. package/.loki/reference/chrome_docker_Visualizations_Column_Column_Placeholder_if_viz_does_not_connect_to_datasource.png +0 -0
  42. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Background_Color_orange.png +0 -0
  43. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Basic_Filler_Gauge.png +0 -0
  44. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Gauge_Color_computed_using_rangeValue_formatter.png +0 -0
  45. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Gauge_Color_yellow.png +0 -0
  46. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Label_Display_number_default.png +0 -0
  47. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Label_Display_off.png +0 -0
  48. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Label_Display_percentage.png +0 -0
  49. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Major_Tick_Interval_10.png +0 -0
  50. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Major_Tick_Interval_auto_default.png +0 -0
  51. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Orientation_horizontal.png +0 -0
  52. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Orientation_horizontal_height_100_no_placeholder.png +0 -0
  53. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Orientation_vertical_default.png +0 -0
  54. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Placeholder_if_datasource_does_not_have_any_data.png +0 -0
  55. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Placeholder_if_viz_does_not_connect_to_datasource.png +0 -0
  56. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Value_Display_number_default.png +0 -0
  57. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Value_Display_off.png +0 -0
  58. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Value_Display_percentage.png +0 -0
  59. package/.loki/reference/chrome_docker_Visualizations_Filler_Gauge_Filler_Gauge_Value_Display_percentage_Label_Display_percentage.png +0 -0
  60. package/.loki/reference/chrome_docker_Visualizations_Image_Image_No_image_src_present_in_options.png +0 -0
  61. package/.loki/reference/chrome_docker_Visualizations_Image_Image_No_options_present.png +0 -0
  62. package/.loki/reference/chrome_docker_Visualizations_Line_Line_Placeholder_if_datasource_does_not_have_any_data.png +0 -0
  63. package/.loki/reference/chrome_docker_Visualizations_Line_Line_Placeholder_if_viz_does_not_connect_to_datasource.png +0 -0
  64. package/.loki/reference/chrome_docker_Visualizations_LinkGraph_LinkGraph_Basic_LinkGraph.png +0 -0
  65. package/.loki/reference/chrome_docker_Visualizations_LinkGraph_LinkGraph_Field_Order_First_and_Last_Fields.png +0 -0
  66. package/.loki/reference/chrome_docker_Visualizations_LinkGraph_LinkGraph_Field_Order_From_the_First_to_the_Last_Fields.png +0 -0
  67. package/.loki/reference/chrome_docker_Visualizations_LinkGraph_LinkGraph_Field_Order_From_the_Last_to_the_First_Fields.png +0 -0
  68. package/.loki/reference/chrome_docker_Visualizations_LinkGraph_LinkGraph_Node_Text_Highlight_Color.png +0 -0
  69. package/.loki/reference/chrome_docker_Visualizations_LinkGraph_LinkGraph_Result_Limit_3.png +0 -0
  70. package/.loki/reference/chrome_docker_Visualizations_LinkGraph_LinkGraph_Show_Placeholder.png +0 -0
  71. package/.loki/reference/chrome_docker_Visualizations_Map_Map_Basic_Map.png +0 -0
  72. package/.loki/reference/chrome_docker_Visualizations_Map_Map_Bubble_Layer.png +0 -0
  73. package/.loki/reference/chrome_docker_Visualizations_Map_Map_Bubble_Layer_Geostats_By_Additional_Cases.png +0 -0
  74. package/.loki/reference/chrome_docker_Visualizations_Map_Map_Bubble_Layer_Geostats_By_GET.png +0 -0
  75. package/.loki/reference/chrome_docker_Visualizations_Map_Map_Bubble_Layer_Geostats_By_GET_Dynamic_Coloring.png +0 -0
  76. package/.loki/reference/chrome_docker_Visualizations_Map_Map_Bubble_Layer_Geostats_By_Internal_Fields.png +0 -0
  77. package/.loki/reference/chrome_docker_Visualizations_Map_Map_Bubble_Layer_Geostats_By_Mostly_null.png +0 -0
  78. package/.loki/reference/chrome_docker_Visualizations_Map_Map_Bubble_Layer_Geostats_By_Static_Coloring.png +0 -0
  79. package/.loki/reference/chrome_docker_Visualizations_Map_Map_Bubble_Layer_Geostats_Dynamic_Coloring.png +0 -0
  80. package/.loki/reference/chrome_docker_Visualizations_Map_Map_Marker_layer.png +0 -0
  81. package/.loki/reference/chrome_docker_Visualizations_Map_Map_Marker_layer_Dynamic_coloring.png +0 -0
  82. package/.loki/reference/chrome_docker_Visualizations_Map_Map_Marker_layer_Result_Limit_Set_To_3.png +0 -0
  83. package/.loki/reference/chrome_docker_Visualizations_Map_Map_Marker_layer_with_geostats_data_No_render.png +0 -0
  84. package/.loki/reference/chrome_docker_Visualizations_Map_Map_Restricted_Zoom.png +0 -0
  85. package/.loki/reference/chrome_docker_Visualizations_Map_Map_Set_Map_tiles.png +0 -0
  86. package/.loki/reference/chrome_docker_Visualizations_Markdown_Markdown_Background_Color_af575a.png +0 -0
  87. package/.loki/reference/chrome_docker_Visualizations_Markdown_Markdown_Basic_Markdown.png +0 -0
  88. package/.loki/reference/chrome_docker_Visualizations_Markdown_Markdown_Begin_with_Text_Instead_of_Header.png +0 -0
  89. package/.loki/reference/chrome_docker_Visualizations_Markdown_Markdown_Font_Color_purple.png +0 -0
  90. package/.loki/reference/chrome_docker_Visualizations_Markdown_Markdown_Font_Size_extraLarge.png +0 -0
  91. package/.loki/reference/chrome_docker_Visualizations_Markdown_Markdown_Markdown_with_number_as_DSL.png +0 -0
  92. package/.loki/reference/chrome_docker_Visualizations_Marker_Gauge_Marker_Gauge_Background_Color_blue.png +0 -0
  93. package/.loki/reference/chrome_docker_Visualizations_Marker_Gauge_Marker_Gauge_Basic_Marker_Gauge.png +0 -0
  94. package/.loki/reference/chrome_docker_Visualizations_Marker_Gauge_Marker_Gauge_Gauge_Ranges_0_to_30_purple_30_to_90_blue_90_to_100_pink.png +0 -0
  95. package/.loki/reference/chrome_docker_Visualizations_Marker_Gauge_Marker_Gauge_Gauge_Ranges_negative_10_to_50_blue.png +0 -0
  96. package/.loki/reference/chrome_docker_Visualizations_Marker_Gauge_Marker_Gauge_Label_Display_number_default.png +0 -0
  97. package/.loki/reference/chrome_docker_Visualizations_Marker_Gauge_Marker_Gauge_Label_Display_off.png +0 -0
  98. package/.loki/reference/chrome_docker_Visualizations_Marker_Gauge_Marker_Gauge_Label_Display_percentage.png +0 -0
  99. package/.loki/reference/chrome_docker_Visualizations_Marker_Gauge_Marker_Gauge_Major_Tick_Interval_7.png +0 -0
  100. package/.loki/reference/chrome_docker_Visualizations_Marker_Gauge_Marker_Gauge_Orientation_horizontal.png +0 -0
  101. package/.loki/reference/chrome_docker_Visualizations_Marker_Gauge_Marker_Gauge_Orientation_vertical_default.png +0 -0
  102. package/.loki/reference/chrome_docker_Visualizations_Marker_Gauge_Marker_Gauge_Placeholder_if_datasource_does_not_have_any_data.png +0 -0
  103. package/.loki/reference/chrome_docker_Visualizations_Marker_Gauge_Marker_Gauge_Placeholder_if_viz_does_not_connect_to_datasource.png +0 -0
  104. package/.loki/reference/chrome_docker_Visualizations_Marker_Gauge_Marker_Gauge_Value_Display_number_default.png +0 -0
  105. package/.loki/reference/chrome_docker_Visualizations_Marker_Gauge_Marker_Gauge_Value_Display_off.png +0 -0
  106. package/.loki/reference/chrome_docker_Visualizations_Marker_Gauge_Marker_Gauge_Value_Display_percentage.png +0 -0
  107. package/.loki/reference/chrome_docker_Visualizations_Marker_Gauge_Marker_Gauge_Value_Display_percentage_Label_Display_percentage.png +0 -0
  108. package/.loki/reference/chrome_docker_Visualizations_Parallel_Coordinates_Parallel_Coordinates_Array_column_values.png +0 -0
  109. package/.loki/reference/chrome_docker_Visualizations_Parallel_Coordinates_Parallel_Coordinates_Background_Color_yellow.png +0 -0
  110. package/.loki/reference/chrome_docker_Visualizations_Parallel_Coordinates_Parallel_Coordinates_Basic_Parallel_Coordinates.png +0 -0
  111. package/.loki/reference/chrome_docker_Visualizations_Parallel_Coordinates_Parallel_Coordinates_Categorical_dataSources_excessive_categorical_data.png +0 -0
  112. package/.loki/reference/chrome_docker_Visualizations_Parallel_Coordinates_Parallel_Coordinates_Larger_Dimensions_width_800_height_500.png +0 -0
  113. package/.loki/reference/chrome_docker_Visualizations_Parallel_Coordinates_Parallel_Coordinates_Line_Color_pink.png +0 -0
  114. package/.loki/reference/chrome_docker_Visualizations_Parallel_Coordinates_Parallel_Coordinates_Line_Opacity_0_3.png +0 -0
  115. package/.loki/reference/chrome_docker_Visualizations_Parallel_Coordinates_Parallel_Coordinates_Numerical_dataSources.png +0 -0
  116. package/.loki/reference/chrome_docker_Visualizations_Parallel_Coordinates_Parallel_Coordinates_Show_Null_Axis_false.png +0 -0
  117. package/.loki/reference/chrome_docker_Visualizations_Parallel_Coordinates_Parallel_Coordinates_Show_Placeholder.png +0 -0
  118. package/.loki/reference/chrome_docker_Visualizations_Parallel_Coordinates_Parallel_Coordinates_Stringified_Numerical_dataSources.png +0 -0
  119. package/.loki/reference/chrome_docker_Visualizations_Pie_Pie_Placeholder_if_datasource_does_not_have_any_data.png +0 -0
  120. package/.loki/reference/chrome_docker_Visualizations_Pie_Pie_Placeholder_if_empty_columns_and_fields.png +0 -0
  121. package/.loki/reference/chrome_docker_Visualizations_Pie_Pie_Placeholder_if_invalid_label_data_specified.png +0 -0
  122. package/.loki/reference/chrome_docker_Visualizations_Pie_Pie_Placeholder_if_invalid_value_data_specified.png +0 -0
  123. package/.loki/reference/chrome_docker_Visualizations_Pie_Pie_Placeholder_if_missing_column.png +0 -0
  124. package/.loki/reference/chrome_docker_Visualizations_Pie_Pie_Placeholder_if_values_in_datasource_are_all_invalid.png +0 -0
  125. package/.loki/reference/chrome_docker_Visualizations_Pie_Pie_Placeholder_if_viz_does_not_connect_to_datasource.png +0 -0
  126. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Background_Color_green.png +0 -0
  127. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Basic_Punchcard.png +0 -0
  128. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Bubble_Color_red.png +0 -0
  129. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Bubble_Label_Display_all_default.png +0 -0
  130. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Bubble_Label_Display_max.png +0 -0
  131. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Bubble_Label_Display_off.png +0 -0
  132. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Bubble_Row_Scale_global_default.png +0 -0
  133. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Bubble_Row_Scale_row.png +0 -0
  134. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Bubble_Size_Max_50.png +0 -0
  135. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Bubble_Size_Max_75_Bubble_Size_Min_15_Bubble_Size_Method_radius_Bubble_Row_Scale_row.png +0 -0
  136. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Bubble_Size_Max_75_Bubble_Size_Min_15_Color_Mode_categorical.png +0 -0
  137. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Bubble_Size_Method_area_default.png +0 -0
  138. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Bubble_Size_Method_radius.png +0 -0
  139. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Bubble_Size_Min_10.png +0 -0
  140. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Color_Mode_categorical.png +0 -0
  141. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Color_Mode_categorical_Legend_Display_off.png +0 -0
  142. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Color_Mode_categorical_Legend_Display_right_default.png +0 -0
  143. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Color_Mode_categorical_Series_Color_red_blue_green_orange_cyan.png +0 -0
  144. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Color_Mode_dynamic_default.png +0 -0
  145. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Multi_Series.png +0 -0
  146. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Placeholder_if_datasource_does_not_have_any_data.png +0 -0
  147. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Placeholder_if_viz_does_not_connect_to_datasource.png +0 -0
  148. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Show_Default_Sort_false_default.png +0 -0
  149. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Show_Default_Sort_true.png +0 -0
  150. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Show_Dynamic_Bubble_Size_false.png +0 -0
  151. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Show_Dynamic_Bubble_Size_false_Bubble_Radius_Max_25.png +0 -0
  152. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Show_Dynamic_Bubble_Size_false_Bubble_Radius_Min_5.png +0 -0
  153. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Show_Dynamic_Bubble_Size_false_Bubble_Radius_Min_5_Bubble_Radius_Max_30_Bubble_Row_Scale_row.png +0 -0
  154. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Show_Dynamic_Bubble_Size_false_Bubble_Radius_Min_5_Bubble_Radius_Max_30_Color_Mode_categorical_Bubble_Size_Method_radius.png +0 -0
  155. package/.loki/reference/chrome_docker_Visualizations_Punchcard_Punchcard_Show_Dynamic_Bubble_Size_true_default.png +0 -0
  156. package/.loki/reference/chrome_docker_Visualizations_Sankey_Sankey_Background_Color_pink.png +0 -0
  157. package/.loki/reference/chrome_docker_Visualizations_Sankey_Sankey_Backward_Link_Self_Loop.png +0 -0
  158. package/.loki/reference/chrome_docker_Visualizations_Sankey_Sankey_Basic_Sankey.png +0 -0
  159. package/.loki/reference/chrome_docker_Visualizations_Sankey_Sankey_Color_Mode_dynamic.png +0 -0
  160. package/.loki/reference/chrome_docker_Visualizations_Sankey_Sankey_Larger_Dimension.png +0 -0
  161. package/.loki/reference/chrome_docker_Visualizations_Sankey_Sankey_Link_Opacity_0_8.png +0 -0
  162. package/.loki/reference/chrome_docker_Visualizations_Sankey_Sankey_Link_Opacity_Changed.png +0 -0
  163. package/.loki/reference/chrome_docker_Visualizations_Sankey_Sankey_Link_Values_Not_Default.png +0 -0
  164. package/.loki/reference/chrome_docker_Visualizations_Sankey_Sankey_Show_Placeholder.png +0 -0
  165. package/.loki/reference/chrome_docker_Visualizations_Scatter_Scatter_Placeholder_if_datasource_does_not_have_any_data.png +0 -0
  166. package/.loki/reference/chrome_docker_Visualizations_Scatter_Scatter_Placeholder_if_viz_does_not_connect_to_datasource.png +0 -0
  167. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon.png +0 -0
  168. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Change_Icon_Color_For_A_Remote_Icon.png +0 -0
  169. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Set_The_Icon_As_A_Remote_Icon.png +0 -0
  170. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Set_the_backgroundColor_based_on_the_majorValue.png +0 -0
  171. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Set_the_icon_color_based_on_the_majorValue.png +0 -0
  172. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Set_the_majorColor_based_on_the_majorValue.png +0 -0
  173. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Use_Mixed_Type_Series_Data.png +0 -0
  174. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Use_Numerical_Series_Data.png +0 -0
  175. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Use_String_Type_Series_Data.png +0 -0
  176. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Use_The_First_Series_Data_If_No_Matched_Type.png +0 -0
  177. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Use_Time_Type_Series_Data.png +0 -0
  178. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Background_From_Major_Value.png +0 -0
  179. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Background_From_Trend_Value.png +0 -0
  180. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial.png +0 -0
  181. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Major_Value_Color.png +0 -0
  182. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Major_Value_Color_By_Trend_Value.png +0 -0
  183. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Max_Value_1000.png +0 -0
  184. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Radial_Color_By_Major_Value.png +0 -0
  185. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Show_Placeholder.png +0 -0
  186. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Use_String_Type_Series_Data.png +0 -0
  187. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value.png +0 -0
  188. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Change_The_Color_Of_Major_Value_Based_On_Its_Value.png +0 -0
  189. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_No_Trend_Value.png +0 -0
  190. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Set_The_Background_Color_Based_On_The_Major_Value.png +0 -0
  191. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Set_The_Background_Color_Based_On_The_Trend_Value.png +0 -0
  192. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Set_The_Color_Of_Major_Value_Based_On_The_Trend_Value.png +0 -0
  193. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Set_The_Color_Of_The_Trend_Indicators_And_Number_Based_On_The_Trend_Value.png +0 -0
  194. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Show_Gaps_For_Null_Value_In_Sparkline.png +0 -0
  195. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Show_Placeholder.png +0 -0
  196. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Trend_Index_Out_Of_Range.png +0 -0
  197. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Trend_Value_Is_Zero.png +0 -0
  198. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Use_Mixed_Type_Series_Data.png +0 -0
  199. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Use_Numerical_Series_Data.png +0 -0
  200. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Use_String_Type_Series_Data.png +0 -0
  201. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Use_The_First_Series_Data_If_No_Matched_Type.png +0 -0
  202. package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Use_Time_Type_Series_Data.png +0 -0
  203. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Cell_Types.png +0 -0
  204. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Dark_Background_No_Stripe.png +0 -0
  205. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Dark_Background_Stripe.png +0 -0
  206. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Header_Visibility_fixed.png +0 -0
  207. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Placeholder.png +0 -0
  208. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Show_Internal_Fields_false.png +0 -0
  209. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Sparkline.png +0 -0
  210. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Sparkline_Custom.png +0 -0
  211. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Sparklines_Adv.png +0 -0
  212. package/.loki/reference/chrome_docker_Visualizations_Table_Table_Time_Zone_Time_Formatting.png +0 -0
  213. package/Area.config.js +40 -31
  214. package/Area.config.js.map +1 -1
  215. package/Area.js +324 -276
  216. package/Area.js.map +1 -1
  217. package/Bar.config.js +33 -24
  218. package/Bar.config.js.map +1 -1
  219. package/Bar.js +315 -267
  220. package/Bar.js.map +1 -1
  221. package/Bubble.config.js +26 -17
  222. package/Bubble.config.js.map +1 -1
  223. package/Bubble.js +307 -259
  224. package/Bubble.js.map +1 -1
  225. package/ChoroplethSvg.config.js +24 -15
  226. package/ChoroplethSvg.config.js.map +1 -1
  227. package/ChoroplethSvg.js +309 -256
  228. package/ChoroplethSvg.js.map +1 -1
  229. package/Column.config.js +33 -24
  230. package/Column.config.js.map +1 -1
  231. package/Column.js +315 -267
  232. package/Column.js.map +1 -1
  233. package/Ellipse.config.js +20 -19
  234. package/Ellipse.config.js.map +1 -1
  235. package/Ellipse.js +272 -227
  236. package/Ellipse.js.map +1 -1
  237. package/FillerGauge.config.js +31 -22
  238. package/FillerGauge.config.js.map +1 -1
  239. package/FillerGauge.js +293 -240
  240. package/FillerGauge.js.map +1 -1
  241. package/Image.config.js +10 -10
  242. package/Image.config.js.map +1 -1
  243. package/Image.js +261 -211
  244. package/Image.js.map +1 -1
  245. package/Line.config.js +33 -24
  246. package/Line.config.js.map +1 -1
  247. package/Line.js +316 -268
  248. package/Line.js.map +1 -1
  249. package/LinkGraph.config.js +52 -42
  250. package/LinkGraph.config.js.map +1 -1
  251. package/LinkGraph.js +339 -278
  252. package/LinkGraph.js.map +1 -1
  253. package/Map.config.js +67 -37
  254. package/Map.config.js.map +1 -1
  255. package/Map.js +1887 -1304
  256. package/Map.js.map +1 -1
  257. package/Markdown.config.js +37 -9
  258. package/Markdown.config.js.map +1 -1
  259. package/Markdown.js +499 -238
  260. package/Markdown.js.map +1 -1
  261. package/MarkerGauge.config.js +21 -11
  262. package/MarkerGauge.config.js.map +1 -1
  263. package/MarkerGauge.js +1154 -1101
  264. package/MarkerGauge.js.map +1 -1
  265. package/ParallelCoordinates.config.js +21 -11
  266. package/ParallelCoordinates.config.js.map +1 -1
  267. package/ParallelCoordinates.js +306 -252
  268. package/ParallelCoordinates.js.map +1 -1
  269. package/Pie.config.js +21 -11
  270. package/Pie.config.js.map +1 -1
  271. package/Pie.js +405 -261
  272. package/Pie.js.map +1 -1
  273. package/Punchcard.config.js +21 -11
  274. package/Punchcard.config.js.map +1 -1
  275. package/Punchcard.js +345 -291
  276. package/Punchcard.js.map +1 -1
  277. package/Rectangle.config.js +22 -22
  278. package/Rectangle.config.js.map +1 -1
  279. package/Rectangle.js +311 -268
  280. package/Rectangle.js.map +1 -1
  281. package/Sankey.config.js +31 -21
  282. package/Sankey.config.js.map +1 -1
  283. package/Sankey.js +3135 -2948
  284. package/Sankey.js.map +1 -1
  285. package/Scatter.config.js +25 -15
  286. package/Scatter.config.js.map +1 -1
  287. package/Scatter.js +383 -337
  288. package/Scatter.js.map +1 -1
  289. package/SingleValue.config.js +41 -32
  290. package/SingleValue.config.js.map +1 -1
  291. package/SingleValue.js +441 -388
  292. package/SingleValue.js.map +1 -1
  293. package/SingleValueBasic.js +27 -27
  294. package/SingleValueBasic.js.map +1 -1
  295. package/SingleValueIcon.config.js +38 -37
  296. package/SingleValueIcon.config.js.map +1 -1
  297. package/SingleValueIcon.js +350 -309
  298. package/SingleValueIcon.js.map +1 -1
  299. package/SingleValueRadial.config.js +174 -136
  300. package/SingleValueRadial.config.js.map +1 -1
  301. package/SingleValueRadial.js +455 -402
  302. package/SingleValueRadial.js.map +1 -1
  303. package/Table.config.js +32 -21
  304. package/Table.config.js.map +1 -1
  305. package/Table.js +727 -449
  306. package/Table.js.map +1 -1
  307. package/common/Charting.js +26 -25
  308. package/common/Charting.js.map +1 -1
  309. package/common/ChartingApi.js +2 -2
  310. package/common/ChartingApi.js.map +1 -1
  311. package/common/EventsDoc.js +23 -22
  312. package/common/EventsDoc.js.map +1 -1
  313. package/common/GaugeMajorTicks.js +12 -12
  314. package/common/GaugeMajorTicks.js.map +1 -1
  315. package/common/GaugeValueMarker.js +12 -12
  316. package/common/GaugeValueMarker.js.map +1 -1
  317. package/common/OptionsDoc.js +225 -181
  318. package/common/OptionsDoc.js.map +1 -1
  319. package/common/OverviewDoc.js +22 -22
  320. package/common/OverviewDoc.js.map +1 -1
  321. package/common/SplunkVisualization.js +4 -4
  322. package/common/SplunkVisualization.js.map +1 -1
  323. package/common/SplunkVisualizationApi.js +2 -2
  324. package/common/SplunkVisualizationApi.js.map +1 -1
  325. package/common/ThemesDoc.js +28 -28
  326. package/common/ThemesDoc.js.map +1 -1
  327. package/common/chartingUtils.js +5 -5
  328. package/common/chartingUtils.js.map +1 -1
  329. package/common/docUtils.js +4 -4
  330. package/common/docUtils.js.map +1 -1
  331. package/common/gaugeUtils.js +13 -13
  332. package/common/gaugeUtils.js.map +1 -1
  333. package/common/shapeUtils.js +12 -12
  334. package/common/shapeUtils.js.map +1 -1
  335. package/common/withDashboardViz.js +99 -54
  336. package/common/withDashboardViz.js.map +1 -1
  337. package/package.json +16 -13
package/Map.js CHANGED
@@ -87,7 +87,7 @@ module.exports =
87
87
  /******/
88
88
  /******/
89
89
  /******/ // Load entry module and return exports
90
- /******/ return __webpack_require__(__webpack_require__.s = 189);
90
+ /******/ return __webpack_require__(__webpack_require__.s = 194);
91
91
  /******/ })
92
92
  /************************************************************************/
93
93
  /******/ ([
@@ -164,7 +164,7 @@ var VizBehavior;
164
164
  "use strict";
165
165
 
166
166
 
167
- var _defineProperty = __webpack_require__(8);
167
+ var _defineProperty = __webpack_require__(7);
168
168
 
169
169
  var __rest = this && this.__rest || function (s, e) {
170
170
  var t = {};
@@ -186,7 +186,7 @@ exports.generatePrecisionValues = exports.getInitialPreset = exports.isDynamicOp
186
186
 
187
187
  var lodash_1 = __webpack_require__(2);
188
188
 
189
- var schemaUtils_1 = __webpack_require__(14);
189
+ var schemaUtils_1 = __webpack_require__(15);
190
190
 
191
191
  var VizBehavior_1 = __webpack_require__(5);
192
192
 
@@ -350,12 +350,18 @@ exports.generatePrecisionValues = generatePrecisionValues;
350
350
 
351
351
  /***/ }),
352
352
  /* 7 */
353
+ /***/ (function(module, exports) {
354
+
355
+ module.exports = require("@babel/runtime/helpers/defineProperty");
356
+
357
+ /***/ }),
358
+ /* 8 */
353
359
  /***/ (function(module, exports, __webpack_require__) {
354
360
 
355
361
  "use strict";
356
362
 
357
363
 
358
- var _typeof = __webpack_require__(20);
364
+ var _typeof = __webpack_require__(21);
359
365
 
360
366
  Object.defineProperty(exports, "__esModule", {
361
367
  value: true
@@ -476,12 +482,6 @@ var findClosestMatchFromDefaultList = function findClosestMatchFromDefaultList(s
476
482
 
477
483
  exports.findClosestMatchFromDefaultList = findClosestMatchFromDefaultList;
478
484
 
479
- /***/ }),
480
- /* 8 */
481
- /***/ (function(module, exports) {
482
-
483
- module.exports = require("@babel/runtime/helpers/defineProperty");
484
-
485
485
  /***/ }),
486
486
  /* 9 */
487
487
  /***/ (function(module, exports) {
@@ -498,10 +498,16 @@ module.exports = require("@babel/runtime/helpers/classCallCheck");
498
498
  /* 11 */
499
499
  /***/ (function(module, exports) {
500
500
 
501
- module.exports = require("@splunk/visualizations-shared/colorUtils");
501
+ module.exports = require("@splunk/themes/variables");
502
502
 
503
503
  /***/ }),
504
504
  /* 12 */
505
+ /***/ (function(module, exports) {
506
+
507
+ module.exports = require("@splunk/visualizations-shared/colorUtils");
508
+
509
+ /***/ }),
510
+ /* 13 */
505
511
  /***/ (function(module, exports, __webpack_require__) {
506
512
 
507
513
  "use strict";
@@ -515,11 +521,11 @@ var React = __webpack_require__(1);
515
521
 
516
522
  var styled_components_1 = __webpack_require__(4);
517
523
 
518
- var SizeAwareWrapper_1 = __webpack_require__(16);
524
+ var SizeAwareWrapper_1 = __webpack_require__(17);
519
525
 
520
- var style_1 = __webpack_require__(13);
526
+ var style_1 = __webpack_require__(14);
521
527
 
522
- var colorUtils_1 = __webpack_require__(11);
528
+ var colorUtils_1 = __webpack_require__(12);
523
529
 
524
530
  var Item = styled_components_1.default.div.attrs(function (_ref) {
525
531
  var width = _ref.width;
@@ -576,7 +582,7 @@ var withFixedSizeContainer = function withFixedSizeContainer(Viz) {
576
582
 
577
583
  return React.createElement(FixSizeItem, {
578
584
  "data-test": "fix-size-item",
579
- "data-splunk-visualization-version": "24.3.5 - 8d7f16f22",
585
+ "data-splunk-visualization-version": "24.5.1 - edc4c958c",
580
586
  width: width,
581
587
  height: height,
582
588
  backgroundColor: backgroundColor
@@ -597,48 +603,177 @@ var withFixedSizeContainer = function withFixedSizeContainer(Viz) {
597
603
  exports.default = withFixedSizeContainer;
598
604
 
599
605
  /***/ }),
600
- /* 13 */
606
+ /* 14 */
601
607
  /***/ (function(module, exports) {
602
608
 
603
609
  module.exports = require("@splunk/visualizations-shared/style");
604
610
 
605
611
  /***/ }),
606
- /* 14 */
612
+ /* 15 */
607
613
  /***/ (function(module, exports) {
608
614
 
609
615
  module.exports = require("@splunk/visualizations-shared/schemaUtils");
610
616
 
611
617
  /***/ }),
612
- /* 15 */
618
+ /* 16 */
613
619
  /***/ (function(module, exports) {
614
620
 
615
621
  module.exports = require("@babel/runtime/helpers/createClass");
616
622
 
617
623
  /***/ }),
618
- /* 16 */
624
+ /* 17 */
619
625
  /***/ (function(module, exports) {
620
626
 
621
627
  module.exports = require("@splunk/visualizations-shared/SizeAwareWrapper");
622
628
 
623
629
  /***/ }),
624
- /* 17 */,
625
630
  /* 18 */,
626
- /* 19 */,
627
- /* 20 */
631
+ /* 19 */
632
+ /***/ (function(module, exports) {
633
+
634
+ module.exports = require("@splunk/visualization-context/TimezoneContext");
635
+
636
+ /***/ }),
637
+ /* 20 */,
638
+ /* 21 */
628
639
  /***/ (function(module, exports) {
629
640
 
630
641
  module.exports = require("@babel/runtime/helpers/typeof");
631
642
 
632
643
  /***/ }),
633
- /* 21 */,
634
644
  /* 22 */,
635
- /* 23 */
645
+ /* 23 */,
646
+ /* 24 */
647
+ /***/ (function(module, exports, __webpack_require__) {
648
+
649
+ "use strict";
650
+
651
+
652
+ Object.defineProperty(exports, "__esModule", {
653
+ value: true
654
+ });
655
+ exports.pickFieldFromJSONSchema = void 0;
656
+
657
+ var lodash_1 = __webpack_require__(2);
658
+
659
+ var pickFieldFromJSONSchema = function pickFieldFromJSONSchema(optionsSchema) {
660
+ var fieldName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';
661
+ return Object.keys(optionsSchema).reduce(function (accum, k) {
662
+ if (lodash_1.has(optionsSchema[k], fieldName)) {
663
+ accum[k] = optionsSchema[k][fieldName];
664
+ } else if (lodash_1.get(optionsSchema, [k, 'type']) === 'object' && lodash_1.has(optionsSchema[k], 'properties')) {
665
+ var nestedSchema = exports.pickFieldFromJSONSchema(optionsSchema[k].properties, fieldName);
666
+
667
+ if (!lodash_1.isEmpty(nestedSchema)) {
668
+ accum[k] = nestedSchema;
669
+ }
670
+ }
671
+
672
+ return accum;
673
+ }, {});
674
+ };
675
+
676
+ exports.pickFieldFromJSONSchema = pickFieldFromJSONSchema;
677
+
678
+ /***/ }),
679
+ /* 25 */
680
+ /***/ (function(module, exports, __webpack_require__) {
681
+
682
+ "use strict";
683
+
684
+
685
+ Object.defineProperty(exports, "__esModule", {
686
+ value: true
687
+ });
688
+ exports.shouldShowIconPlaceholder = void 0;
689
+
690
+ var React = __webpack_require__(1);
691
+
692
+ var T = __webpack_require__(0);
693
+
694
+ var lodash_1 = __webpack_require__(2);
695
+
696
+ var i18n_1 = __webpack_require__(3);
697
+
698
+ var Message_1 = __webpack_require__(9);
699
+
700
+ var FixedSizeContainer_1 = __webpack_require__(13);
701
+ /**
702
+ * @method shouldShowIconPlaceholder
703
+ * @param {object} dataSources
704
+ * @param {boolean} loading
705
+ * @returns {boolean}
706
+ */
707
+
708
+
709
+ var shouldShowIconPlaceholder = function shouldShowIconPlaceholder(dataSources) {
710
+ var loading = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
711
+ var data = lodash_1.get(dataSources, 'primary.data.columns[0]', undefined);
712
+ var noData = data === undefined;
713
+ var fields = lodash_1.get(dataSources, 'primary.data.fields[0]', undefined);
714
+ var noFields = fields === undefined;
715
+ return loading || noData || noFields;
716
+ };
717
+
718
+ exports.shouldShowIconPlaceholder = shouldShowIconPlaceholder;
719
+ var propTypes = {
720
+ icon: T.func,
721
+ width: T.oneOfType([T.string, T.number]),
722
+ height: T.oneOfType([T.string, T.number]),
723
+ // eslint-disable-next-line react/no-unused-prop-types
724
+ backgroundColor: T.string,
725
+ iconColor: T.string
726
+ };
727
+ /**
728
+ * @method IconPlaceholder
729
+ * @param {IconPlaceholderProps} props
730
+ * @returns {React.ReactElement}
731
+ */
732
+
733
+ var IconPlaceholder = function IconPlaceholder(props) {
734
+ var width = props.width,
735
+ height = props.height,
736
+ icon = props.icon,
737
+ iconColor = props.iconColor;
738
+
739
+ if (icon) {
740
+ return React.createElement(icon, {
741
+ style: {
742
+ left: '50%',
743
+ top: '50%',
744
+ color: iconColor,
745
+ opacity: 0.15,
746
+ position: 'absolute',
747
+ transform: 'translate(-50%, -50%)'
748
+ },
749
+ width: '50%',
750
+ height: '50%'
751
+ });
752
+ }
753
+
754
+ return React.createElement(Message_1.default, {
755
+ width: width,
756
+ height: height,
757
+ level: "warning",
758
+ message: i18n_1._('No DataSource Connected')
759
+ });
760
+ };
761
+
762
+ IconPlaceholder.propTypes = propTypes;
763
+ IconPlaceholder.defaultProps = {
764
+ width: '100%',
765
+ height: 250
766
+ };
767
+ exports.default = FixedSizeContainer_1.default(IconPlaceholder);
768
+
769
+ /***/ }),
770
+ /* 26 */
636
771
  /***/ (function(module, exports, __webpack_require__) {
637
772
 
638
773
  "use strict";
639
774
 
640
775
 
641
- var _defineProperty = __webpack_require__(8);
776
+ var _defineProperty = __webpack_require__(7);
642
777
 
643
778
  Object.defineProperty(exports, "__esModule", {
644
779
  value: true
@@ -649,7 +784,7 @@ var T = __webpack_require__(0);
649
784
 
650
785
  var lodash_1 = __webpack_require__(2);
651
786
 
652
- var DataSource_1 = __webpack_require__(34);
787
+ var DataSource_1 = __webpack_require__(36);
653
788
 
654
789
  exports.SortParamsPropTypes = T.shape({
655
790
  currentSortKey: T.string,
@@ -702,7 +837,7 @@ var getSortingParams = function getSortingParams(_ref) {
702
837
  exports.getSortingParams = getSortingParams;
703
838
 
704
839
  /***/ }),
705
- /* 24 */
840
+ /* 27 */
706
841
  /***/ (function(module, exports, __webpack_require__) {
707
842
 
708
843
  "use strict";
@@ -766,7 +901,7 @@ var getPaginationParams = function getPaginationParams(_ref) {
766
901
  exports.getPaginationParams = getPaginationParams;
767
902
 
768
903
  /***/ }),
769
- /* 25 */
904
+ /* 28 */
770
905
  /***/ (function(module, exports, __webpack_require__) {
771
906
 
772
907
  "use strict";
@@ -775,31 +910,26 @@ exports.getPaginationParams = getPaginationParams;
775
910
  Object.defineProperty(exports, "__esModule", {
776
911
  value: true
777
912
  });
778
- exports.pickFieldFromJSONSchema = void 0;
779
-
780
- var lodash_1 = __webpack_require__(2);
781
-
782
- var pickFieldFromJSONSchema = function pickFieldFromJSONSchema(optionsSchema) {
783
- var fieldName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';
784
- return Object.keys(optionsSchema).reduce(function (accum, k) {
785
- if (lodash_1.has(optionsSchema[k], fieldName)) {
786
- accum[k] = optionsSchema[k][fieldName];
787
- } else if (lodash_1.get(optionsSchema, [k, 'type']) === 'object' && lodash_1.has(optionsSchema[k], 'properties')) {
788
- var nestedSchema = exports.pickFieldFromJSONSchema(optionsSchema[k].properties, fieldName);
789
-
790
- if (!lodash_1.isEmpty(nestedSchema)) {
791
- accum[k] = nestedSchema;
792
- }
793
- }
794
-
795
- return accum;
796
- }, {});
797
- };
913
+ exports.VizCategory = void 0;
914
+ var VizCategory;
798
915
 
799
- exports.pickFieldFromJSONSchema = pickFieldFromJSONSchema;
916
+ (function (VizCategory) {
917
+ VizCategory["SINGLE_VALUE"] = "Single Value";
918
+ VizCategory["TRENDS"] = "Trends";
919
+ VizCategory["COMPARISONS"] = "Comparisons";
920
+ VizCategory["TABLE"] = "Table";
921
+ VizCategory["GAUGE"] = "Gauge";
922
+ VizCategory["DISTRIBUTIONS"] = "Distributions";
923
+ VizCategory["CHOROPLETH"] = "Choropleth Maps";
924
+ VizCategory["SHAPES"] = "Shapes";
925
+ VizCategory["MISC"] = "misc";
926
+ VizCategory["FLOW"] = "Flow";
927
+ VizCategory["CORRELATION"] = "Correlation";
928
+ VizCategory["SPATIAL"] = "Spatial";
929
+ })(VizCategory = exports.VizCategory || (exports.VizCategory = {}));
800
930
 
801
931
  /***/ }),
802
- /* 26 */
932
+ /* 29 */
803
933
  /***/ (function(module, exports, __webpack_require__) {
804
934
 
805
935
  "use strict";
@@ -808,154 +938,42 @@ exports.pickFieldFromJSONSchema = pickFieldFromJSONSchema;
808
938
  Object.defineProperty(exports, "__esModule", {
809
939
  value: true
810
940
  });
811
- exports.shouldShowIconPlaceholder = void 0;
812
941
 
813
942
  var React = __webpack_require__(1);
814
943
 
815
- var T = __webpack_require__(0);
816
-
817
944
  var lodash_1 = __webpack_require__(2);
818
945
 
819
- var i18n_1 = __webpack_require__(3);
946
+ var getSettingsFromThemedProps_1 = __webpack_require__(30);
820
947
 
821
- var Message_1 = __webpack_require__(9);
948
+ var Options_1 = __webpack_require__(31);
822
949
 
823
- var FixedSizeContainer_1 = __webpack_require__(12);
824
- /**
825
- * @method shouldShowIconPlaceholder
826
- * @param {object} dataSources
827
- * @param {boolean} loading
828
- * @returns {boolean}
829
- */
950
+ var SanitizeProps_1 = __webpack_require__(32);
830
951
 
952
+ var TimezoneContext_1 = __webpack_require__(19);
831
953
 
832
- var shouldShowIconPlaceholder = function shouldShowIconPlaceholder(dataSources) {
833
- var loading = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
834
- var data = lodash_1.get(dataSources, 'primary.data.columns[0]', undefined);
835
- var noData = data === undefined;
836
- var fields = lodash_1.get(dataSources, 'primary.data.fields[0]', undefined);
837
- var noFields = fields === undefined;
838
- return loading || noData || noFields;
839
- };
954
+ var moment_1 = __webpack_require__(33);
840
955
 
841
- exports.shouldShowIconPlaceholder = shouldShowIconPlaceholder;
842
- var propTypes = {
843
- icon: T.func,
844
- width: T.oneOfType([T.string, T.number]),
845
- height: T.oneOfType([T.string, T.number]),
846
- // eslint-disable-next-line react/no-unused-prop-types
847
- backgroundColor: T.string
848
- };
849
- /**
850
- * @method IconPlaceholder
851
- * @param {IconPlaceholderProps} props
852
- * @returns {React.ReactElement}
853
- */
956
+ var styled_components_1 = __webpack_require__(4);
854
957
 
855
- var IconPlaceholder = function IconPlaceholder(props) {
856
- var width = props.width,
857
- height = props.height,
858
- icon = props.icon;
958
+ var SplunkVisualization_1 = __webpack_require__(34);
859
959
 
860
- if (icon) {
861
- return React.createElement(icon, {
862
- style: {
863
- left: '50%',
864
- top: '50%',
865
- color: 'grey',
866
- position: 'absolute',
867
- transform: 'translate(-50%, -50%)'
868
- },
869
- width: '50%',
870
- height: '50%'
871
- });
872
- }
960
+ var VizBehavior_1 = __webpack_require__(5);
873
961
 
874
- return React.createElement(Message_1.default, {
875
- width: width,
876
- height: height,
877
- level: "warning",
878
- message: i18n_1._('No DataSource Connected')
879
- });
880
- };
962
+ var getSorting_1 = __webpack_require__(26);
881
963
 
882
- IconPlaceholder.propTypes = propTypes;
883
- IconPlaceholder.defaultProps = {
884
- width: '100%',
885
- height: 250
886
- };
887
- exports.default = FixedSizeContainer_1.default(IconPlaceholder);
964
+ var getPagination_1 = __webpack_require__(27);
888
965
 
889
- /***/ }),
890
- /* 27 */
891
- /***/ (function(module, exports, __webpack_require__) {
966
+ var useDeepMemo_1 = __webpack_require__(37);
892
967
 
893
- "use strict";
894
-
895
-
896
- Object.defineProperty(exports, "__esModule", {
897
- value: true
898
- });
899
- exports.VizCategory = void 0;
900
- var VizCategory;
901
-
902
- (function (VizCategory) {
903
- VizCategory["SINGLE_VALUE"] = "Single Value";
904
- VizCategory["TRENDS"] = "Trends";
905
- VizCategory["COMPARISONS"] = "Comparisons";
906
- VizCategory["TABLE"] = "Table";
907
- VizCategory["GAUGE"] = "Gauge";
908
- VizCategory["DISTRIBUTIONS"] = "Distributions";
909
- VizCategory["CHOROPLETH"] = "Choropleth Maps";
910
- VizCategory["SHAPES"] = "Shapes";
911
- VizCategory["MISC"] = "misc";
912
- VizCategory["FLOW"] = "Flow";
913
- VizCategory["CORRELATION"] = "Correlation";
914
- VizCategory["SPATIAL"] = "Spatial";
915
- })(VizCategory = exports.VizCategory || (exports.VizCategory = {}));
916
-
917
- /***/ }),
918
- /* 28 */
919
- /***/ (function(module, exports, __webpack_require__) {
920
-
921
- "use strict";
922
-
923
-
924
- Object.defineProperty(exports, "__esModule", {
925
- value: true
926
- });
927
-
928
- var React = __webpack_require__(1);
929
-
930
- var lodash_1 = __webpack_require__(2);
931
-
932
- var getSettingsFromThemedProps_1 = __webpack_require__(29);
933
-
934
- var Options_1 = __webpack_require__(30);
935
-
936
- var SanitizeProps_1 = __webpack_require__(31);
937
-
938
- var styled_components_1 = __webpack_require__(4);
939
-
940
- var SplunkVisualization_1 = __webpack_require__(32);
941
-
942
- var VizBehavior_1 = __webpack_require__(5);
943
-
944
- var getSorting_1 = __webpack_require__(23);
945
-
946
- var getPagination_1 = __webpack_require__(24);
968
+ var JSONSchemaUtils_1 = __webpack_require__(24);
947
969
 
948
- var useDeepMemo_1 = __webpack_require__(35);
970
+ var MissingPropsMessage_1 = __webpack_require__(38);
949
971
 
950
- var JSONSchemaUtils_1 = __webpack_require__(25);
972
+ var withEditModeCover_1 = __webpack_require__(39);
951
973
 
952
- var MissingPropsMessage_1 = __webpack_require__(36);
974
+ var withPlaceholder_1 = __webpack_require__(40);
953
975
 
954
- var withEditModeCover_1 = __webpack_require__(37);
955
-
956
- var withPlaceholder_1 = __webpack_require__(38);
957
-
958
- var hocUtils_1 = __webpack_require__(7);
976
+ var hocUtils_1 = __webpack_require__(8);
959
977
  /**
960
978
  * hoc that wraps a pure react visualization in a Dashboard visualization
961
979
  * @param {DashboardVizOpts} opts
@@ -988,6 +1006,23 @@ var withDashboardViz = function withDashboardViz(opts) {
988
1006
  theme = props.theme,
989
1007
  onRequestParamsChange = props.onRequestParamsChange;
990
1008
 
1009
+ var _React$useContext = React.useContext(TimezoneContext_1.default),
1010
+ serializedTimezone = _React$useContext.serializedTimezone;
1011
+
1012
+ if (serializedTimezone) {
1013
+ /*
1014
+ @splunk/moment currently does not allow us to customize the timezone on a per visualization basis.
1015
+ This ensures that if a timezone was provided via TimezoneContext @splunk/moment time formatting
1016
+ will use it.
1017
+ @TODO(pwied):
1018
+ - remove when we moved away from @splunk/moment
1019
+ - provide timezone context to dynamic option evaluation phase
1020
+ */
1021
+ if (!moment_1.default.getDefaultSplunkTimezone()) {
1022
+ moment_1.default.setDefaultSplunkTimezone(serializedTimezone);
1023
+ }
1024
+ }
1025
+
991
1026
  var themeFunc = function themeFunc(themeVar) {
992
1027
  var _a, _b;
993
1028
 
@@ -1016,7 +1051,7 @@ var withDashboardViz = function withDashboardViz(opts) {
1016
1051
  console.error("unexpected error evaluating options: + ".concat(e.message));
1017
1052
  return {};
1018
1053
  }
1019
- }, [currentThemeFamily, currentThemeColorScheme, currentThemeDensity, options, context, dataSources]); // useEffect hook needs to be initialized before any early returns
1054
+ }, [currentThemeFamily, currentThemeColorScheme, currentThemeDensity, options, context, dataSources, serializedTimezone]); // useEffect hook needs to be initialized before any early returns
1020
1055
  // this is in accordance with the order of hook calls being the same on each render https://reactjs.org/docs/hooks-rules.html#explanation
1021
1056
 
1022
1057
  React.useEffect(function () {
@@ -1139,25 +1174,31 @@ var withDashboardViz = function withDashboardViz(opts) {
1139
1174
  exports.default = withDashboardViz;
1140
1175
 
1141
1176
  /***/ }),
1142
- /* 29 */
1177
+ /* 30 */
1143
1178
  /***/ (function(module, exports) {
1144
1179
 
1145
1180
  module.exports = require("@splunk/themes/getSettingsFromThemedProps");
1146
1181
 
1147
1182
  /***/ }),
1148
- /* 30 */
1183
+ /* 31 */
1149
1184
  /***/ (function(module, exports) {
1150
1185
 
1151
1186
  module.exports = require("@splunk/visualization-encoding/Options");
1152
1187
 
1153
1188
  /***/ }),
1154
- /* 31 */
1189
+ /* 32 */
1155
1190
  /***/ (function(module, exports) {
1156
1191
 
1157
1192
  module.exports = require("@splunk/visualizations-shared/SanitizeProps");
1158
1193
 
1159
1194
  /***/ }),
1160
- /* 32 */
1195
+ /* 33 */
1196
+ /***/ (function(module, exports) {
1197
+
1198
+ module.exports = require("@splunk/moment");
1199
+
1200
+ /***/ }),
1201
+ /* 34 */
1161
1202
  /***/ (function(module, exports, __webpack_require__) {
1162
1203
 
1163
1204
  "use strict";
@@ -1175,7 +1216,7 @@ var T = __webpack_require__(0);
1175
1216
 
1176
1217
  var lodash_1 = __webpack_require__(2);
1177
1218
 
1178
- var VizActionHandler_1 = __webpack_require__(33); // this is identical to the initial height and width we use in BaseVisualization in dashboard-visualizations
1219
+ var VizActionHandler_1 = __webpack_require__(35); // this is identical to the initial height and width we use in BaseVisualization in dashboard-visualizations
1179
1220
 
1180
1221
 
1181
1222
  exports.INITIAL_WIDTH = 250;
@@ -1308,7 +1349,7 @@ SplunkVisualization.defaultProps = {
1308
1349
  exports.default = SplunkVisualization;
1309
1350
 
1310
1351
  /***/ }),
1311
- /* 33 */
1352
+ /* 35 */
1312
1353
  /***/ (function(module, exports, __webpack_require__) {
1313
1354
 
1314
1355
  "use strict";
@@ -1316,7 +1357,7 @@ exports.default = SplunkVisualization;
1316
1357
 
1317
1358
  var _classCallCheck = __webpack_require__(10);
1318
1359
 
1319
- var _createClass = __webpack_require__(15);
1360
+ var _createClass = __webpack_require__(16);
1320
1361
 
1321
1362
  Object.defineProperty(exports, "__esModule", {
1322
1363
  value: true
@@ -1345,7 +1386,7 @@ var DefaultVizActionHandler = /*#__PURE__*/function () {
1345
1386
  exports.DefaultVizActionHandler = DefaultVizActionHandler;
1346
1387
 
1347
1388
  /***/ }),
1348
- /* 34 */
1389
+ /* 36 */
1349
1390
  /***/ (function(module, exports, __webpack_require__) {
1350
1391
 
1351
1392
  "use strict";
@@ -1358,7 +1399,7 @@ exports.validSortDirs = void 0;
1358
1399
  exports.validSortDirs = ['asc', 'desc', 'none'];
1359
1400
 
1360
1401
  /***/ }),
1361
- /* 35 */
1402
+ /* 37 */
1362
1403
  /***/ (function(module, exports, __webpack_require__) {
1363
1404
 
1364
1405
  "use strict";
@@ -1403,7 +1444,7 @@ var useDeepMemo = function useDeepMemo(fn, dependencies) {
1403
1444
  exports.useDeepMemo = useDeepMemo;
1404
1445
 
1405
1446
  /***/ }),
1406
- /* 36 */
1447
+ /* 38 */
1407
1448
  /***/ (function(module, exports, __webpack_require__) {
1408
1449
 
1409
1450
  "use strict";
@@ -1422,7 +1463,7 @@ var i18n_1 = __webpack_require__(3);
1422
1463
 
1423
1464
  var Message_1 = __webpack_require__(9);
1424
1465
 
1425
- var FixedSizeContainer_1 = __webpack_require__(12);
1466
+ var FixedSizeContainer_1 = __webpack_require__(13);
1426
1467
  /**
1427
1468
  * @method isMissing
1428
1469
  * @param {any} v
@@ -1483,7 +1524,7 @@ exports.MissingPropsMessage.defaultProps = {
1483
1524
  exports.default = FixedSizeContainer_1.default(exports.MissingPropsMessage);
1484
1525
 
1485
1526
  /***/ }),
1486
- /* 37 */
1527
+ /* 39 */
1487
1528
  /***/ (function(module, exports, __webpack_require__) {
1488
1529
 
1489
1530
  "use strict";
@@ -1497,14 +1538,14 @@ var React = __webpack_require__(1);
1497
1538
 
1498
1539
  var styled_components_1 = __webpack_require__(4);
1499
1540
 
1500
- var hocUtils_1 = __webpack_require__(7);
1541
+ var hocUtils_1 = __webpack_require__(8);
1501
1542
 
1502
1543
  var Cover = styled_components_1.default.div.withConfig({
1503
1544
  displayName: "withEditModeCover__Cover",
1504
1545
  componentId: "sc-1gsbnxb-0"
1505
1546
  })(["position:absolute;left:0;right:0;top:0;bottom:0;"]);
1506
1547
  var Blocker = styled_components_1.default.div.attrs({
1507
- 'data-splunk-visualization-version': "24.3.5 - 8d7f16f22"
1548
+ 'data-splunk-visualization-version': "24.5.1 - edc4c958c"
1508
1549
  }).withConfig({
1509
1550
  displayName: "withEditModeCover__Blocker",
1510
1551
  componentId: "sc-1gsbnxb-1"
@@ -1535,7 +1576,7 @@ var withEditModeCover = function withEditModeCover(Visualization, disableEditMod
1535
1576
  exports.default = withEditModeCover;
1536
1577
 
1537
1578
  /***/ }),
1538
- /* 38 */
1579
+ /* 40 */
1539
1580
  /***/ (function(module, exports, __webpack_require__) {
1540
1581
 
1541
1582
  "use strict";
@@ -1547,13 +1588,15 @@ Object.defineProperty(exports, "__esModule", {
1547
1588
 
1548
1589
  var React = __webpack_require__(1);
1549
1590
 
1550
- var colorUtils_1 = __webpack_require__(11);
1591
+ var colorUtils_1 = __webpack_require__(12);
1592
+
1593
+ var variables_1 = __webpack_require__(11);
1551
1594
 
1552
- var IconPlaceholder_1 = __webpack_require__(26);
1595
+ var IconPlaceholder_1 = __webpack_require__(25);
1553
1596
 
1554
1597
  var VizBehavior_1 = __webpack_require__(5);
1555
1598
 
1556
- var hocUtils_1 = __webpack_require__(7);
1599
+ var hocUtils_1 = __webpack_require__(8);
1557
1600
 
1558
1601
  var withPlaceholder = function withPlaceholder(Visualization) {
1559
1602
  var useIconPlaceholder = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : IconPlaceholder_1.shouldShowIconPlaceholder;
@@ -1561,7 +1604,7 @@ var withPlaceholder = function withPlaceholder(Visualization) {
1561
1604
  var themes = config.themes;
1562
1605
 
1563
1606
  var Wrapper = function Wrapper(props) {
1564
- var _a;
1607
+ var _a, _b;
1565
1608
 
1566
1609
  var dataSources = props.dataSources,
1567
1610
  loading = props.loading,
@@ -1570,14 +1613,17 @@ var withPlaceholder = function withPlaceholder(Visualization) {
1570
1613
  width = props.width;
1571
1614
  var showPlaceholder = useIconPlaceholder(dataSources, loading, options);
1572
1615
  var bgColorFromTheme = colorUtils_1.isColor(options === null || options === void 0 ? void 0 : options.backgroundColor) ? options === null || options === void 0 ? void 0 : options.backgroundColor : (_a = themes === null || themes === void 0 ? void 0 : themes.defaultBackgroundColor) === null || _a === void 0 ? void 0 : _a.call(themes, props);
1616
+ var icon = (_b = config.placeholderIcon) !== null && _b !== void 0 ? _b : config.icon;
1617
+ var iconColor = variables_1.default.contentColorActive(props);
1573
1618
 
1574
1619
  if (config.supports.includes(VizBehavior_1.VizBehavior.PLACEHOLDER) && showPlaceholder) {
1575
1620
  return React.createElement(IconPlaceholder_1.default, {
1576
1621
  "data-test": "icon-placeholder",
1577
- icon: config.icon,
1622
+ icon: icon,
1578
1623
  width: width,
1579
1624
  height: height,
1580
- backgroundColor: bgColorFromTheme
1625
+ backgroundColor: bgColorFromTheme,
1626
+ iconColor: iconColor
1581
1627
  });
1582
1628
  }
1583
1629
 
@@ -1594,39 +1640,42 @@ var withPlaceholder = function withPlaceholder(Visualization) {
1594
1640
  exports.default = withPlaceholder;
1595
1641
 
1596
1642
  /***/ }),
1597
- /* 39 */
1643
+ /* 41 */
1598
1644
  /***/ (function(module, exports) {
1599
1645
 
1600
1646
  module.exports = require("@babel/runtime/helpers/toConsumableArray");
1601
1647
 
1602
1648
  /***/ }),
1603
- /* 40 */,
1604
- /* 41 */
1649
+ /* 42 */,
1650
+ /* 43 */
1605
1651
  /***/ (function(module, exports) {
1606
1652
 
1607
1653
  module.exports = require("@splunk/visualization-color-palettes");
1608
1654
 
1609
1655
  /***/ }),
1610
- /* 42 */
1656
+ /* 44 */
1657
+ /***/ (function(module, exports) {
1658
+
1659
+ module.exports = require("@splunk/visualization-icons/placeholders");
1660
+
1661
+ /***/ }),
1662
+ /* 45 */
1611
1663
  /***/ (function(module, exports) {
1612
1664
 
1613
1665
  module.exports = require("@splunk/visualization-icons");
1614
1666
 
1615
1667
  /***/ }),
1616
- /* 43 */,
1617
- /* 44 */,
1618
- /* 45 */,
1619
1668
  /* 46 */,
1620
1669
  /* 47 */,
1621
1670
  /* 48 */,
1622
- /* 49 */
1671
+ /* 49 */,
1672
+ /* 50 */,
1673
+ /* 51 */
1623
1674
  /***/ (function(module, exports) {
1624
1675
 
1625
1676
  module.exports = require("@babel/runtime/helpers/slicedToArray");
1626
1677
 
1627
1678
  /***/ }),
1628
- /* 50 */,
1629
- /* 51 */,
1630
1679
  /* 52 */,
1631
1680
  /* 53 */,
1632
1681
  /* 54 */,
@@ -1640,24 +1689,24 @@ module.exports = require("@babel/runtime/helpers/slicedToArray");
1640
1689
  /* 62 */,
1641
1690
  /* 63 */,
1642
1691
  /* 64 */,
1643
- /* 65 */,
1644
- /* 66 */,
1645
- /* 67 */,
1646
- /* 68 */,
1647
- /* 69 */
1692
+ /* 65 */
1648
1693
  /***/ (function(module, exports) {
1649
1694
 
1650
- module.exports = require("d3-scale");
1695
+ module.exports = require("@splunk/themes");
1651
1696
 
1652
1697
  /***/ }),
1653
- /* 70 */
1698
+ /* 66 */,
1699
+ /* 67 */,
1700
+ /* 68 */,
1701
+ /* 69 */,
1702
+ /* 70 */,
1703
+ /* 71 */,
1704
+ /* 72 */
1654
1705
  /***/ (function(module, exports) {
1655
1706
 
1656
- module.exports = require("@splunk/themes");
1707
+ module.exports = require("d3-scale");
1657
1708
 
1658
1709
  /***/ }),
1659
- /* 71 */,
1660
- /* 72 */,
1661
1710
  /* 73 */,
1662
1711
  /* 74 */,
1663
1712
  /* 75 */,
@@ -1685,1269 +1734,1442 @@ module.exports = require("@splunk/themes");
1685
1734
  /* 97 */,
1686
1735
  /* 98 */,
1687
1736
  /* 99 */,
1688
- /* 100 */
1689
- /***/ (function(module, exports) {
1690
-
1691
- module.exports = require("@splunk/react-ui/Popover");
1692
-
1693
- /***/ }),
1737
+ /* 100 */,
1694
1738
  /* 101 */,
1695
1739
  /* 102 */,
1696
1740
  /* 103 */,
1697
- /* 104 */,
1698
- /* 105 */,
1699
- /* 106 */,
1700
- /* 107 */,
1701
- /* 108 */,
1702
- /* 109 */,
1703
- /* 110 */,
1704
- /* 111 */,
1705
- /* 112 */,
1706
- /* 113 */,
1707
- /* 114 */,
1708
- /* 115 */,
1709
- /* 116 */,
1710
- /* 117 */,
1711
- /* 118 */,
1712
- /* 119 */,
1713
- /* 120 */,
1714
- /* 121 */,
1715
- /* 122 */,
1716
- /* 123 */
1741
+ /* 104 */
1717
1742
  /***/ (function(module, exports) {
1718
1743
 
1719
- module.exports = require("maplibre-gl");
1744
+ module.exports = require("@splunk/visualization-encoding/utils/dsl");
1720
1745
 
1721
1746
  /***/ }),
1722
- /* 124 */,
1723
- /* 125 */,
1724
- /* 126 */,
1725
- /* 127 */,
1726
- /* 128 */,
1727
- /* 129 */,
1728
- /* 130 */,
1729
- /* 131 */,
1730
- /* 132 */,
1731
- /* 133 */,
1732
- /* 134 */,
1733
- /* 135 */,
1734
- /* 136 */,
1735
- /* 137 */,
1736
- /* 138 */,
1737
- /* 139 */,
1738
- /* 140 */,
1739
- /* 141 */,
1740
- /* 142 */,
1741
- /* 143 */,
1742
- /* 144 */,
1743
- /* 145 */,
1744
- /* 146 */,
1745
- /* 147 */,
1746
- /* 148 */,
1747
- /* 149 */,
1748
- /* 150 */,
1749
- /* 151 */,
1750
- /* 152 */,
1751
- /* 153 */,
1752
- /* 154 */,
1753
- /* 155 */,
1754
- /* 156 */,
1755
- /* 157 */,
1756
- /* 158 */,
1757
- /* 159 */,
1758
- /* 160 */,
1759
- /* 161 */,
1760
- /* 162 */,
1761
- /* 163 */,
1762
- /* 164 */,
1763
- /* 165 */,
1764
- /* 166 */,
1765
- /* 167 */,
1766
- /* 168 */,
1767
- /* 169 */,
1768
- /* 170 */,
1769
- /* 171 */,
1770
- /* 172 */,
1771
- /* 173 */,
1772
- /* 174 */,
1773
- /* 175 */,
1774
- /* 176 */,
1775
- /* 177 */,
1776
- /* 178 */,
1777
- /* 179 */,
1778
- /* 180 */,
1779
- /* 181 */,
1780
- /* 182 */,
1781
- /* 183 */,
1782
- /* 184 */,
1783
- /* 185 */,
1784
- /* 186 */,
1785
- /* 187 */,
1786
- /* 188 */,
1787
- /* 189 */
1747
+ /* 105 */
1788
1748
  /***/ (function(module, exports, __webpack_require__) {
1789
1749
 
1790
1750
  "use strict";
1791
1751
 
1792
1752
 
1793
- var __rest = this && this.__rest || function (s, e) {
1794
- var t = {};
1795
-
1796
- for (var p in s) {
1797
- if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
1798
- }
1753
+ var _slicedToArray = __webpack_require__(51);
1799
1754
 
1800
- if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
1801
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
1802
- }
1803
- return t;
1804
- };
1755
+ var _toConsumableArray = __webpack_require__(41);
1805
1756
 
1806
1757
  Object.defineProperty(exports, "__esModule", {
1807
1758
  value: true
1808
1759
  });
1809
- exports.PureMap = exports.config = exports.themes = exports.computeVizProps = void 0;
1810
- /* eslint-disable no-sequences */
1811
-
1812
- var React = __webpack_require__(1);
1760
+ exports.getGlobalLayerBoundaries = exports.isValidLatLon = exports.bakeBubbleData = exports.sanitizeValues = exports.transposeArray = exports.matchBubbleSize = exports.getStaticColors = exports.getZoomLevelFromGeobin = exports.getZoomConstraintsFromTileConfig = exports.getMapStyle = exports.getTilePreset = 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;
1813
1761
 
1814
- var colorUtils_1 = __webpack_require__(11);
1762
+ var lodash_1 = __webpack_require__(2);
1815
1763
 
1816
- var types_1 = __webpack_require__(190);
1764
+ var d3_scale_1 = __webpack_require__(72);
1817
1765
 
1818
- var dsl_1 = __webpack_require__(191);
1766
+ var colorUtils_1 = __webpack_require__(12);
1819
1767
 
1820
- var JSONSchemaUtils_1 = __webpack_require__(25);
1768
+ var visualization_color_palettes_1 = __webpack_require__(43);
1821
1769
 
1822
- var hocUtils_1 = __webpack_require__(7);
1770
+ exports.MAX_LATITUDE = 90;
1771
+ exports.MIN_LATITUDE = -90;
1772
+ exports.MAX_LONGITUDE = 180;
1773
+ exports.MIN_LONGITUDE = -180;
1774
+ exports.DEFAULT_RESULT_LIMIT = 1000;
1775
+ exports.DEFAULT_CLUSTER_COLOR = '#909090';
1776
+ exports.DEFAULT_SERIES_COLORS = visualization_color_palettes_1.VIZ_CATEGORICAL; // MapLibre requires a map style specification number which is always 8
1823
1777
 
1824
- var PureMap_1 = __webpack_require__(192);
1778
+ exports.MAP_STYLE_VERSION_NUMBER = 8; // currently using one [min, max] value set for bubbles across all zoom levels
1779
+ // TODO: design choices on [min, max] bubble size for different zoom levels
1825
1780
 
1826
- exports.PureMap = PureMap_1.default;
1781
+ exports.MIN_BUBBLE_RADIUS = 4;
1782
+ exports.MAX_BUBBLE_RADIUS = 50;
1783
+ /**
1784
+ * Construct a tile preset {key: config} by combining the default + custom tile configs
1785
+ * Also returns the default tile config for each theme - light/dark
1786
+ * @param {MapContextInterface} args
1787
+ * @param {BaseTileConfig[]} args.defaultTileConfig
1788
+ * @param {BaseTileConfig[]} args.customTileConfig
1789
+ * @returns {Object} tile preset
1790
+ */
1827
1791
 
1828
- var config_1 = __webpack_require__(200);
1792
+ var getTilePreset = function getTilePreset(_ref) {
1793
+ var _ref$defaultTileConfi = _ref.defaultTileConfig,
1794
+ defaultTileConfig = _ref$defaultTileConfi === void 0 ? [] : _ref$defaultTileConfi,
1795
+ _ref$customTileConfig = _ref.customTileConfig,
1796
+ customTileConfig = _ref$customTileConfig === void 0 ? [] : _ref$customTileConfig;
1829
1797
 
1830
- exports.config = config_1.default;
1798
+ var _a, _b;
1831
1799
 
1832
- var withDashboardViz_1 = __webpack_require__(28);
1800
+ var tilePreset = {};
1801
+ var defaultTileLight = {};
1802
+ var defaultTileDark = {};
1803
+ var tileConfigs = [].concat(defaultTileConfig).concat(customTileConfig);
1804
+ lodash_1.forEach(tileConfigs, function (tileConfig) {
1805
+ var key = tileConfig === null || tileConfig === void 0 ? void 0 : tileConfig.key;
1806
+ var updatedConfig = Object.assign(Object.assign({
1807
+ theme: 'all'
1808
+ }, tileConfig), {
1809
+ version: exports.MAP_STYLE_VERSION_NUMBER
1810
+ });
1811
+ tilePreset[key] = updatedConfig;
1812
+ });
1833
1813
 
1834
- var computeVizProps = function computeVizProps(_ref) {
1835
- var themeFunc = _ref.themeFunc,
1836
- theme = _ref.theme,
1837
- layers = _ref.layers,
1838
- dataSources = _ref.dataSources;
1839
- var themeColorVariables = ['controlBackgroundColor', 'controlForegroundColor'];
1840
- var themeColors = {};
1841
- themeColorVariables.forEach(function (variable) {
1842
- themeColors[variable] = themeFunc(variable);
1843
- }); // Markers use different icons, Bubbles has different styles for light and dark theme
1844
- // this prop is passed for that
1814
+ if (defaultTileConfig.length > 0) {
1815
+ defaultTileLight = (_a = defaultTileConfig.find(function (config) {
1816
+ return config.theme === 'light';
1817
+ })) !== null && _a !== void 0 ? _a : defaultTileConfig.find(function (config) {
1818
+ return config.theme === undefined;
1819
+ });
1820
+ defaultTileDark = (_b = defaultTileConfig.find(function (config) {
1821
+ return config.theme === 'dark';
1822
+ })) !== null && _b !== void 0 ? _b : defaultTileConfig.find(function (config) {
1823
+ return config.theme === undefined;
1824
+ });
1825
+ }
1845
1826
 
1846
- var themeColorScheme = (theme === null || theme === void 0 ? void 0 : theme.splunkThemeV1) ? theme === null || theme === void 0 ? void 0 : theme.splunkThemeV1.colorScheme : 'dark';
1847
- layers.forEach(function (l) {
1848
- var _a, _b, _c, _d; // add key `geobin` to the layer object if the data is returned from geostats commands
1849
- // to distinguish geostats commands from table commands
1827
+ return {
1828
+ tilePreset: tilePreset,
1829
+ defaultTileLight: defaultTileLight,
1830
+ defaultTileDark: defaultTileDark
1831
+ };
1832
+ };
1850
1833
 
1834
+ exports.getTilePreset = getTilePreset;
1835
+ /**
1836
+ * Check if baseLayerTileServer is in tilePreset and config matches current theme, if yes, return.
1837
+ * If no, construct a mapStyle with baseLayerTilerServer and baseLayerTileServerType
1838
+ * Else return default tile config based on current theme
1839
+ * @param {Object} args
1840
+ * @param {BaseTileConfig[]} args.tilePreset
1841
+ * @param {String} args.baseLayerTilerServer
1842
+ * @param {String} args.baseLayerTileServerType
1843
+ * @param {String} args.colorScheme
1844
+ * @param {BaseTileConfig} args.defaultTileDark
1845
+ * @param {BaseTileConfig} args.defaultTileLight
1846
+ * @returns {BaseTileConfig} mapStyle
1847
+ */
1851
1848
 
1852
- var dataSourceData = (_b = (_a = dataSources === null || dataSources === void 0 ? void 0 : dataSources.primary) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : {};
1853
- var geobinIdx = ((_c = dataSourceData.fields) !== null && _c !== void 0 ? _c : []).map(function (field) {
1854
- return typeof field === 'string' ? field : field.name;
1855
- }).indexOf('geobin');
1856
- var layer = l;
1849
+ var getMapStyle = function getMapStyle(_ref2) {
1850
+ var _ref2$baseLayerTileSe = _ref2.baseLayerTileServer,
1851
+ baseLayerTileServer = _ref2$baseLayerTileSe === void 0 ? '' : _ref2$baseLayerTileSe,
1852
+ _ref2$baseLayerTileSe2 = _ref2.baseLayerTileServerType,
1853
+ baseLayerTileServerType = _ref2$baseLayerTileSe2 === void 0 ? '' : _ref2$baseLayerTileSe2,
1854
+ _ref2$tilePreset = _ref2.tilePreset,
1855
+ tilePreset = _ref2$tilePreset === void 0 ? {} : _ref2$tilePreset,
1856
+ _ref2$colorScheme = _ref2.colorScheme,
1857
+ colorScheme = _ref2$colorScheme === void 0 ? 'light' : _ref2$colorScheme,
1858
+ _ref2$defaultTileLigh = _ref2.defaultTileLight,
1859
+ defaultTileLight = _ref2$defaultTileLigh === void 0 ? {} : _ref2$defaultTileLigh,
1860
+ _ref2$defaultTileDark = _ref2.defaultTileDark,
1861
+ defaultTileDark = _ref2$defaultTileDark === void 0 ? {} : _ref2$defaultTileDark;
1857
1862
 
1858
- if (geobinIdx > -1) {
1859
- layer.geobin = dataSourceData.columns[geobinIdx];
1860
- }
1863
+ if (baseLayerTileServer && tilePreset[baseLayerTileServer] && (tilePreset[baseLayerTileServer].theme === colorScheme || tilePreset[baseLayerTileServer].theme === 'all')) {
1864
+ return tilePreset[baseLayerTileServer];
1865
+ }
1861
1866
 
1862
- layer.bubbleSizeFields = ((_d = dataSourceData.fields) !== null && _d !== void 0 ? _d : []).map(function (field) {
1863
- return typeof field === 'string' ? field : field.name;
1864
- }).filter(function (field, index) {
1865
- var _a, _b;
1867
+ if (baseLayerTileServer && baseLayerTileServerType) {
1868
+ var tiles = [];
1869
+ /**
1870
+ * Tile Server URLs (eg: http://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png) can specify the variable {s} which refers to a subdomain
1871
+ * Subdomains are used to help with browser parallel requests per domain limitation. These subdomains are typically single letters 'a', 'b' and 'c'
1872
+ * Refer to https://leafletjs.com/SlavaUkraini/reference.html#tilelayer and https://wiki.openstreetmap.org/wiki/Tile_servers
1873
+ */
1874
+
1875
+ if (baseLayerTileServer.match(/^(https?):\/\/{(s|S)}\../)) {
1876
+ /**
1877
+ * sXML (Leaflet) allows users to define their own tile server URLs + list of available subdomains
1878
+ * In order to preserve this behavior during conversion to splunk.map,
1879
+ * if the variable {s} or {S} is detected, replace it with 'a', 'b' and 'c' - default values for subdomains
1880
+ * TODO: in the future, add an additional prop - baseLayerTileServerSubdomains: ['x', 'y', 'z'], default being ['a', 'b', 'c']
1881
+ */
1882
+ tiles = [baseLayerTileServer.replace(/{(s|S)}/, 'a'), baseLayerTileServer.replace(/{(s|S)}/, 'b'), baseLayerTileServer.replace(/{(s|S)}/, 'c')];
1883
+ } else {
1884
+ tiles = [baseLayerTileServer];
1885
+ } // TODO: remove hardcoded style when we allow users to pass in layer style through Viz options
1866
1886
 
1867
- return !['latitude', 'longitude', 'geobin'].includes(field) && types_1.inferDataTypeFromData((_b = (_a = dataSourceData.columns) === null || _a === void 0 ? void 0 : _a[index]) !== null && _b !== void 0 ? _b : []) === 'number';
1868
- }); // Sanitize colors within layers
1869
1887
 
1870
- layer.seriesColors = Array.isArray(layer.seriesColors) ? colorUtils_1.sanitizeArrayOfColors(layer.seriesColors) : undefined;
1871
- layer.dataColors = Array.isArray(layer.dataColors) ? colorUtils_1.sanitizeArrayOfColors(layer.dataColors) : undefined;
1872
- });
1873
- return Object.assign(Object.assign(Object.assign({}, themeColors), {
1874
- themeColorScheme: themeColorScheme
1875
- }), layers);
1888
+ var mapStyle = {
1889
+ version: exports.MAP_STYLE_VERSION_NUMBER,
1890
+ sources: {
1891
+ 'base-tiles': {
1892
+ type: baseLayerTileServerType,
1893
+ tiles: tiles,
1894
+ tileSize: 256
1895
+ }
1896
+ },
1897
+ layers: [{
1898
+ id: 'base-layer',
1899
+ type: 'raster',
1900
+ source: 'base-tiles',
1901
+ minzoom: 0,
1902
+ maxzoom: 10
1903
+ }]
1904
+ };
1905
+ return mapStyle;
1906
+ } // if tile server is not present in the preset AND we can't construct a mapStyle, fall back on defaults
1907
+
1908
+
1909
+ return colorScheme === 'light' ? defaultTileLight : defaultTileDark;
1876
1910
  };
1877
1911
 
1878
- exports.computeVizProps = computeVizProps; // HOC for stripping the internal fields for Maps
1912
+ exports.getMapStyle = getMapStyle;
1879
1913
 
1880
- var withoutInternalFields = function withoutInternalFields(Viz) {
1881
- // eslint-disable-next-line react/display-name
1882
- var VizWithoutInternalFields = function VizWithoutInternalFields(_a) {
1883
- var dataSources = _a.dataSources,
1884
- otherProps = __rest(_a, ["dataSources"]);
1914
+ var getZoomConstraintsFromTileConfig = function getZoomConstraintsFromTileConfig(tileConfig) {
1915
+ var sources = tileConfig.sources,
1916
+ layers = tileConfig.layers; // check sources for minzoom maxzoom first
1885
1917
 
1886
- if (!dataSources || !dataSources.primary || !dataSources.primary.data) {
1887
- return React.createElement(Viz, Object.assign({}, otherProps));
1918
+ var sourceKeys = Object.keys(sources);
1919
+
1920
+ for (var i = 0; i < sourceKeys.length; i += 1) {
1921
+ var _sources$sourceKeys$i = sources[sourceKeys[i]],
1922
+ minzoom = _sources$sourceKeys$i.minzoom,
1923
+ maxzoom = _sources$sourceKeys$i.maxzoom;
1924
+
1925
+ if (lodash_1.isNumber(minzoom) && lodash_1.isNumber(maxzoom)) {
1926
+ return {
1927
+ minZoom: minzoom,
1928
+ maxZoom: maxzoom
1929
+ };
1888
1930
  }
1931
+ } // then check layers
1889
1932
 
1890
- var primary = dataSources.primary;
1891
- var _primary$data = primary.data,
1892
- columns = _primary$data.columns,
1893
- fields = _primary$data.fields;
1894
- var newColumns = [];
1895
- var newFields = [];
1896
1933
 
1897
- if (fields && columns && fields.length === columns.length) {
1898
- // computed sorted index for removal
1899
- var indicesToRemove = new Set(fields.reduce(function (arr, e, i) {
1900
- return (typeof e === 'string' ? e.startsWith('_') : e.name.toString().startsWith('_')) && arr.push(i), arr;
1901
- }, []));
1902
- newFields = fields.filter(function (d, i) {
1903
- return !indicesToRemove.has(i);
1904
- });
1905
- newColumns = columns.filter(function (d, i) {
1906
- return !indicesToRemove.has(i);
1907
- });
1934
+ for (var _i = 0; _i < layers.length; _i += 1) {
1935
+ var _layers$_i = layers[_i],
1936
+ _minzoom = _layers$_i.minzoom,
1937
+ _maxzoom = _layers$_i.maxzoom;
1938
+
1939
+ if (lodash_1.isNumber(_minzoom) && lodash_1.isNumber(_maxzoom)) {
1940
+ return {
1941
+ minZoom: _minzoom,
1942
+ maxZoom: _maxzoom
1943
+ };
1908
1944
  }
1945
+ } // Maplibre default - would reset previous min/maxZoom
1909
1946
 
1910
- var modifiedDatasources = Object.assign(Object.assign({}, dataSources), {
1911
- primary: Object.assign(Object.assign({}, primary), {
1912
- data: Object.assign(Object.assign({}, primary.data), {
1913
- columns: newColumns,
1914
- fields: newFields
1915
- })
1916
- })
1947
+
1948
+ return {
1949
+ minZoom: 0,
1950
+ maxZoom: 22
1951
+ };
1952
+ };
1953
+
1954
+ exports.getZoomConstraintsFromTileConfig = getZoomConstraintsFromTileConfig;
1955
+
1956
+ var getZoomLevelFromGeobin = function getZoomLevelFromGeobin(geobinStr) {
1957
+ var _a;
1958
+
1959
+ if (!geobinStr) {
1960
+ return null;
1961
+ } // geostats cmds return geobin with zoom level 0-18, 0-99 in the geobinPattern covers the range
1962
+
1963
+
1964
+ var geobinPattern = /bin_id_zl_([0-9]{0,2})?_y_/g;
1965
+ var match = geobinPattern.exec(geobinStr);
1966
+ return (_a = (match === null || match === void 0 ? void 0 : match.length) && parseInt(match[1], 10)) !== null && _a !== void 0 ? _a : null;
1967
+ };
1968
+
1969
+ exports.getZoomLevelFromGeobin = getZoomLevelFromGeobin; // Bubble colors - static
1970
+
1971
+ var getStaticColors = function getStaticColors(colorCount, colorArray) {
1972
+ if (colorCount < 0 || !colorCount) {
1973
+ return [exports.DEFAULT_CLUSTER_COLOR];
1974
+ }
1975
+
1976
+ if (!colorArray || !colorArray.length) {
1977
+ return _toConsumableArray(Array(colorCount).keys()).map(function (i) {
1978
+ return exports.DEFAULT_SERIES_COLORS[i];
1917
1979
  });
1918
- return React.createElement(Viz, Object.assign({
1919
- dataSources: modifiedDatasources
1920
- }, otherProps));
1980
+ } // loop through colorArray to pick the first $colorCount colors
1981
+ // start from begining again if colorCount > colorArray.length
1982
+
1983
+
1984
+ return _toConsumableArray(Array(colorCount).keys()).map(function (i) {
1985
+ return colorUtils_1.isColor(colorArray[i % colorArray.length]) ? colorArray[i % colorArray.length] : exports.DEFAULT_CLUSTER_COLOR;
1986
+ });
1987
+ };
1988
+
1989
+ exports.getStaticColors = getStaticColors; // Bubble size
1990
+
1991
+ var matchBubbleSize = function matchBubbleSize(dataRange, data) {
1992
+ var size = d3_scale_1.scalePow().exponent(0.2).domain(dataRange).range([exports.MIN_BUBBLE_RADIUS, exports.MAX_BUBBLE_RADIUS])(data);
1993
+
1994
+ if (size > exports.MAX_BUBBLE_RADIUS) {
1995
+ return exports.MAX_BUBBLE_RADIUS;
1996
+ }
1997
+
1998
+ if (size < exports.MIN_BUBBLE_RADIUS) {
1999
+ return exports.MIN_BUBBLE_RADIUS;
2000
+ }
2001
+
2002
+ return size;
2003
+ };
2004
+
2005
+ exports.matchBubbleSize = matchBubbleSize;
2006
+
2007
+ var transposeArray = function transposeArray(array) {
2008
+ if (!array || !array.length || !array[0] || !array[0].length) {
2009
+ return [];
2010
+ }
2011
+
2012
+ return array[0].map(function (_, i) {
2013
+ return array.map(function (row) {
2014
+ return row[i];
2015
+ });
2016
+ });
2017
+ };
2018
+
2019
+ exports.transposeArray = transposeArray; // sanitize values: update all null, undefined, or negative values to 0
2020
+
2021
+ var sanitizeValues = function sanitizeValues(values) {
2022
+ // null / undefined
2023
+ if (!values) {
2024
+ return 0;
2025
+ } // number
2026
+
2027
+
2028
+ if (!Array.isArray(values)) {
2029
+ return values > 0 ? values : 0;
2030
+ } // array
2031
+
2032
+
2033
+ return values.map(function (arr) {
2034
+ return exports.sanitizeValues(arr);
2035
+ });
2036
+ };
2037
+
2038
+ exports.sanitizeValues = sanitizeValues;
2039
+
2040
+ var bakeBubbleData = function bakeBubbleData(layer) {
2041
+ var _a;
2042
+
2043
+ 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) {
2044
+ return null;
2045
+ } // if bubbleSize is passed as an array of single number array (data series)
2046
+ // e.g. [value0, value1, ...]
2047
+ // format each value as an array to unify data operations for data series and frames
2048
+
2049
+
2050
+ var sanitizedBubbleSize = exports.sanitizeValues(layer.bubbleSize);
2051
+ var transposedBubbleSize;
2052
+ var transposedSanitizedBubbleSize;
2053
+ var isPie = false; // format array if bubbleSize is passed as an array of array (data frame)
2054
+
2055
+ if (Array.isArray(layer.bubbleSize[0])) {
2056
+ // one-time array transpose,
2057
+ // e.g. from [column0data, column0data] (multi series)
2058
+ // to [[column0datum0, column1datum0], [column0datum1, column1data1], ...]
2059
+ // or e.g. from [column0data] (single series)
2060
+ // to [[column0data]]
2061
+ // for easy access of values at each geo location,
2062
+ // and min max pie size computation
2063
+ transposedBubbleSize = exports.transposeArray(layer.bubbleSize);
2064
+ transposedSanitizedBubbleSize = exports.transposeArray(sanitizedBubbleSize); // if multiple series in the dataframe, set isPie to true
2065
+
2066
+ if (layer.bubbleSize.length > 1) {
2067
+ isPie = true;
2068
+ }
2069
+ } else {
2070
+ transposedBubbleSize = layer.bubbleSize.map(function (n) {
2071
+ return [n];
2072
+ });
2073
+ transposedSanitizedBubbleSize = sanitizedBubbleSize.map(function (n) {
2074
+ return [n];
2075
+ });
2076
+ }
2077
+
2078
+ if (!transposedBubbleSize || !transposedBubbleSize.length) {
2079
+ return null;
2080
+ }
2081
+
2082
+ var data = layer.latitude.map(function (lat, i) {
2083
+ return {
2084
+ zoom: exports.getZoomLevelFromGeobin(layer.geobin[i]),
2085
+ values: transposedBubbleSize[i],
2086
+ sanitizedValues: transposedSanitizedBubbleSize[i],
2087
+ coordinates: [layer.longitude[i], lat],
2088
+ metadata: layer.metadata ? layer.metadata[i] : {}
2089
+ };
2090
+ }).filter(function (d) {
2091
+ return Boolean(d.values);
2092
+ }); // compute the min/max value to encode min/max pie or bubble size
2093
+
2094
+ var min = lodash_1.sum(transposedSanitizedBubbleSize[0]);
2095
+ var max = lodash_1.sum(transposedSanitizedBubbleSize[1]);
2096
+ transposedSanitizedBubbleSize.forEach(function (row) {
2097
+ var bubbleSize = lodash_1.sum(row);
2098
+ max = bubbleSize > max ? bubbleSize : max;
2099
+ min = bubbleSize < min ? bubbleSize : min;
2100
+ });
2101
+ return {
2102
+ data: data,
2103
+ dataRange: [min, max],
2104
+ isPie: isPie,
2105
+ resultLimit: layer.resultLimit,
2106
+ bubbleSizeFields: layer.bubbleSizeFields
1921
2107
  };
2108
+ };
1922
2109
 
1923
- VizWithoutInternalFields.propTypes = Viz.propTypes;
1924
- VizWithoutInternalFields.defaultProps = Viz.defaultProps;
1925
- VizWithoutInternalFields.config = Viz.config;
1926
- return VizWithoutInternalFields;
1927
- }; // HOC for updating all null values in data columns to zeros
1928
- // excluding 'latitude', 'longitude' and 'geobin'
2110
+ exports.bakeBubbleData = bakeBubbleData;
1929
2111
 
2112
+ var isValidLatLon = function isValidLatLon(latlon) {
2113
+ if (!latlon || !Array.isArray(latlon) || latlon.length !== 2) {
2114
+ return false;
2115
+ }
1930
2116
 
1931
- var withNullToZeros = function withNullToZeros(Viz) {
1932
- // eslint-disable-next-line react/display-name
1933
- var VizWithColumnsNullToZeros = function VizWithColumnsNullToZeros(_a) {
1934
- var dataSources = _a.dataSources,
1935
- options = _a.options,
1936
- otherProps = __rest(_a, ["dataSources", "options"]);
2117
+ var _latlon = _slicedToArray(latlon, 2),
2118
+ lat = _latlon[0],
2119
+ lon = _latlon[1];
2120
+
2121
+ if (typeof lat !== 'number' || !(lat >= exports.MIN_LATITUDE && lat <= exports.MAX_LATITUDE)) {
2122
+ return false;
2123
+ }
2124
+
2125
+ if (typeof lon !== 'number' || !(lon >= exports.MIN_LONGITUDE && lon <= exports.MAX_LONGITUDE)) {
2126
+ return false;
2127
+ }
1937
2128
 
1938
- if (!dataSources || !dataSources.primary || !dataSources.primary.data) {
1939
- return React.createElement(Viz, Object.assign({}, otherProps));
1940
- }
2129
+ return true;
2130
+ };
1941
2131
 
1942
- var primary = dataSources.primary;
1943
- var _primary$data2 = primary.data,
1944
- columns = _primary$data2.columns,
1945
- fields = _primary$data2.fields;
1946
- var newColumns = columns;
1947
- var mergedOptions = hocUtils_1.deepMergeWithArrayPrimitiveOverrides({}, options, JSONSchemaUtils_1.pickFieldFromJSONSchema(config_1.default.optionsSchema, 'default'));
2132
+ exports.isValidLatLon = isValidLatLon; // Returns the min and max LongLat pairs to determine the layer boundaries to fit all markers/bubbles
1948
2133
 
1949
- if (mergedOptions.layers && mergedOptions.layers.length && mergedOptions.layers[0].type === 'bubble') {
1950
- var latitudeField = dsl_1.getFieldsFromDSL(mergedOptions.layers[0].latitude, dataSources)[0] || '';
1951
- var longitudeField = dsl_1.getFieldsFromDSL(mergedOptions.layers[0].longitude, dataSources)[0] || '';
1952
- var excludedFields = [latitudeField, longitudeField, 'geobin'];
1953
- var indicesToEvaluate = new Set(fields.reduce(function (arr, e, i) {
1954
- var field = typeof e === 'string' ? e : e.name.toString();
2134
+ var getGlobalLayerBoundaries = function getGlobalLayerBoundaries(layers) {
2135
+ if (!layers || !Array.isArray(layers) || !layers.length) {
2136
+ return null;
2137
+ }
1955
2138
 
1956
- if (!excludedFields.includes(field)) {
1957
- arr.push(i);
1958
- }
2139
+ var LONGITUDE = 'longitude';
2140
+ var LATITUDE = 'latitude';
1959
2141
 
1960
- return arr;
1961
- }, []));
1962
- newColumns = columns.map(function (column, i) {
1963
- if (indicesToEvaluate.has(i)) {
1964
- return column.map(function (value) {
1965
- return !value ? 0 : value;
1966
- });
1967
- }
2142
+ var getMin = function getMin(field) {
2143
+ if (!layers.every(function (layer) {
2144
+ return layer[field];
2145
+ })) {
2146
+ return field === LONGITUDE ? exports.MIN_LONGITUDE : exports.MIN_LATITUDE;
2147
+ }
1968
2148
 
1969
- return column;
1970
- });
2149
+ return layers.reduce(function (prevVal, layer) {
2150
+ var _a;
2151
+
2152
+ return lodash_1.min([prevVal].concat(_toConsumableArray(((_a = lodash_1.get(layer, field)) !== null && _a !== void 0 ? _a : []).slice(0, layer.type === 'marker' && layer.resultLimit ? layer.resultLimit : exports.DEFAULT_RESULT_LIMIT))));
2153
+ }, field === LONGITUDE ? exports.MAX_LONGITUDE : exports.MAX_LATITUDE);
2154
+ };
2155
+
2156
+ var getMax = function getMax(field) {
2157
+ if (!layers.every(function (layer) {
2158
+ return layer[field];
2159
+ })) {
2160
+ return field === LONGITUDE ? exports.MAX_LONGITUDE : exports.MAX_LATITUDE;
1971
2161
  }
1972
2162
 
1973
- var modifiedDatasources = Object.assign(Object.assign({}, dataSources), {
1974
- primary: Object.assign(Object.assign({}, primary), {
1975
- data: Object.assign(Object.assign({}, primary.data), {
1976
- columns: newColumns
1977
- })
1978
- })
1979
- });
1980
- return React.createElement(Viz, Object.assign({
1981
- dataSources: modifiedDatasources,
1982
- options: options
1983
- }, otherProps));
2163
+ return layers.reduce(function (prevVal, layer) {
2164
+ var _a;
2165
+
2166
+ return lodash_1.max([prevVal].concat(_toConsumableArray(((_a = lodash_1.get(layer, field)) !== null && _a !== void 0 ? _a : []).slice(0, layer.type === 'marker' && layer.resultLimit ? layer.resultLimit : exports.DEFAULT_RESULT_LIMIT))));
2167
+ }, field === LONGITUDE ? exports.MIN_LONGITUDE : exports.MIN_LATITUDE);
1984
2168
  };
1985
2169
 
1986
- VizWithColumnsNullToZeros.propTypes = Viz.propTypes;
1987
- VizWithColumnsNullToZeros.defaultProps = Viz.defaultProps;
1988
- VizWithColumnsNullToZeros.config = Viz.config;
1989
- return VizWithColumnsNullToZeros;
2170
+ return [[getMin(LONGITUDE), getMin(LATITUDE)], [getMax(LONGITUDE), getMax(LATITUDE)]];
1990
2171
  };
1991
2172
 
1992
- var Map = withoutInternalFields(withNullToZeros(withDashboardViz_1.default({
1993
- ReactViz: PureMap_1.default,
1994
- vizConfig: config_1.default,
1995
- computeVizProps: exports.computeVizProps,
1996
- disableEditModeCover: true,
1997
- useIconPlaceholder: function useIconPlaceholder() {
1998
- return false;
1999
- }
2000
- })));
2001
- var themes = config_1.default.themes;
2002
- exports.themes = themes;
2003
- exports.default = Map;
2173
+ exports.getGlobalLayerBoundaries = getGlobalLayerBoundaries;
2004
2174
 
2005
2175
  /***/ }),
2006
- /* 190 */
2176
+ /* 106 */
2007
2177
  /***/ (function(module, exports) {
2008
2178
 
2009
- module.exports = require("@splunk/visualization-encoding/utils/types");
2179
+ module.exports = require("@splunk/react-ui/Popover");
2010
2180
 
2011
2181
  /***/ }),
2012
- /* 191 */
2182
+ /* 107 */,
2183
+ /* 108 */,
2184
+ /* 109 */,
2185
+ /* 110 */,
2186
+ /* 111 */,
2187
+ /* 112 */,
2188
+ /* 113 */,
2189
+ /* 114 */,
2190
+ /* 115 */,
2191
+ /* 116 */,
2192
+ /* 117 */,
2193
+ /* 118 */,
2194
+ /* 119 */,
2195
+ /* 120 */,
2196
+ /* 121 */,
2197
+ /* 122 */,
2198
+ /* 123 */,
2199
+ /* 124 */,
2200
+ /* 125 */,
2201
+ /* 126 */,
2202
+ /* 127 */,
2203
+ /* 128 */
2013
2204
  /***/ (function(module, exports) {
2014
2205
 
2015
- module.exports = require("@splunk/visualization-encoding/utils/dsl");
2206
+ module.exports = require("maplibre-gl");
2016
2207
 
2017
2208
  /***/ }),
2018
- /* 192 */
2209
+ /* 129 */
2019
2210
  /***/ (function(module, exports, __webpack_require__) {
2020
2211
 
2021
2212
  "use strict";
2022
2213
 
2023
2214
 
2024
- var _slicedToArray = __webpack_require__(49);
2215
+ var _slicedToArray = __webpack_require__(51);
2216
+
2217
+ var __rest = this && this.__rest || function (s, e) {
2218
+ var t = {};
2219
+
2220
+ for (var p in s) {
2221
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
2222
+ }
2223
+
2224
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
2225
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
2226
+ }
2227
+ return t;
2228
+ };
2025
2229
 
2026
2230
  Object.defineProperty(exports, "__esModule", {
2027
2231
  value: true
2028
2232
  });
2029
- exports.isLatLng = exports.formatColor = exports.DEFAULT_ZOOM = exports.DEFAULT_SHOW_SCALE = exports.DEFAULT_SCALE_UNIT = exports.DEFAULT_CONTROL_FOREGROUND_COLOR = exports.DEFAULT_CONTROL_BACKGROUND_COLOR = exports.DEFAULT_CENTER = void 0;
2030
2233
 
2031
- var React = __webpack_require__(1);
2234
+ var maplibre_gl_1 = __webpack_require__(128);
2032
2235
 
2033
- var lodash_1 = __webpack_require__(2);
2236
+ var React = __webpack_require__(1);
2034
2237
 
2035
- var react_1 = __webpack_require__(1);
2238
+ var Tooltip_1 = __webpack_require__(202);
2036
2239
 
2037
- var T = __webpack_require__(0);
2240
+ var MarkerWrapper = function MarkerWrapper(_a) {
2241
+ var longitude = _a.longitude,
2242
+ latitude = _a.latitude,
2243
+ _a$additionalFields = _a.additionalFields,
2244
+ additionalFields = _a$additionalFields === void 0 ? [] : _a$additionalFields,
2245
+ map = _a.map,
2246
+ children = _a.children,
2247
+ otherProps = __rest(_a, ["longitude", "latitude", "additionalFields", "map", "children"]);
2038
2248
 
2039
- var chroma = __webpack_require__(193);
2249
+ var container = React.useRef();
2250
+ var marker = React.useRef();
2040
2251
 
2041
- var maplibre_gl_1 = __webpack_require__(123);
2252
+ var _React$useState = React.useState(false),
2253
+ _React$useState2 = _slicedToArray(_React$useState, 2),
2254
+ isTooltipOpen = _React$useState2[0],
2255
+ setTooltipOpenStatus = _React$useState2[1];
2256
+
2257
+ var openTooltip = React.useCallback(function () {
2258
+ return setTooltipOpenStatus(true);
2259
+ }, []);
2260
+ var closeTooltip = React.useCallback(function () {
2261
+ return setTooltipOpenStatus(false);
2262
+ }, []);
2263
+ var cleanupMarker = React.useCallback(function () {
2264
+ if (marker.current) {
2265
+ marker.current.remove();
2266
+ marker.current = undefined;
2267
+ }
2268
+ }, []);
2269
+ React.useEffect(function () {
2270
+ try {
2271
+ if (marker.current) {
2272
+ marker.current.setLngLat([longitude, latitude]);
2273
+ } else {
2274
+ marker.current = new maplibre_gl_1.Marker(container.current);
2275
+ marker.current.setLngLat([longitude, latitude]);
2276
+ marker.current.addTo(map.current);
2277
+ }
2278
+ } catch (error) {
2279
+ console.error(error);
2280
+ cleanupMarker();
2281
+ }
2282
+ }, [latitude, longitude, map]);
2283
+ React.useEffect(function () {
2284
+ return cleanupMarker;
2285
+ }, []);
2286
+ return React.createElement("div", null, React.createElement("div", Object.assign({
2287
+ ref: container,
2288
+ "data-test": "map-marker",
2289
+ onMouseOver: openTooltip,
2290
+ onMouseLeave: closeTooltip,
2291
+ onFocus: openTooltip,
2292
+ onBlur: closeTooltip
2293
+ }, otherProps), children), React.createElement(Tooltip_1.default, {
2294
+ open: isTooltipOpen,
2295
+ anchor: container.current,
2296
+ latitude: latitude,
2297
+ longitude: longitude,
2298
+ additionalFields: additionalFields
2299
+ }));
2300
+ };
2042
2301
 
2043
- var MapContext_1 = __webpack_require__(194);
2302
+ exports.default = MarkerWrapper;
2044
2303
 
2045
- var PureMapContainer_1 = __webpack_require__(195);
2304
+ /***/ }),
2305
+ /* 130 */,
2306
+ /* 131 */,
2307
+ /* 132 */,
2308
+ /* 133 */,
2309
+ /* 134 */,
2310
+ /* 135 */,
2311
+ /* 136 */,
2312
+ /* 137 */,
2313
+ /* 138 */,
2314
+ /* 139 */,
2315
+ /* 140 */,
2316
+ /* 141 */,
2317
+ /* 142 */,
2318
+ /* 143 */,
2319
+ /* 144 */,
2320
+ /* 145 */,
2321
+ /* 146 */,
2322
+ /* 147 */,
2323
+ /* 148 */,
2324
+ /* 149 */,
2325
+ /* 150 */,
2326
+ /* 151 */,
2327
+ /* 152 */,
2328
+ /* 153 */,
2329
+ /* 154 */,
2330
+ /* 155 */,
2331
+ /* 156 */,
2332
+ /* 157 */,
2333
+ /* 158 */,
2334
+ /* 159 */,
2335
+ /* 160 */,
2336
+ /* 161 */,
2337
+ /* 162 */,
2338
+ /* 163 */,
2339
+ /* 164 */,
2340
+ /* 165 */,
2341
+ /* 166 */,
2342
+ /* 167 */,
2343
+ /* 168 */,
2344
+ /* 169 */,
2345
+ /* 170 */,
2346
+ /* 171 */,
2347
+ /* 172 */,
2348
+ /* 173 */,
2349
+ /* 174 */,
2350
+ /* 175 */,
2351
+ /* 176 */,
2352
+ /* 177 */,
2353
+ /* 178 */,
2354
+ /* 179 */,
2355
+ /* 180 */,
2356
+ /* 181 */,
2357
+ /* 182 */,
2358
+ /* 183 */,
2359
+ /* 184 */,
2360
+ /* 185 */,
2361
+ /* 186 */,
2362
+ /* 187 */,
2363
+ /* 188 */,
2364
+ /* 189 */,
2365
+ /* 190 */,
2366
+ /* 191 */,
2367
+ /* 192 */,
2368
+ /* 193 */,
2369
+ /* 194 */
2370
+ /***/ (function(module, exports, __webpack_require__) {
2046
2371
 
2047
- __webpack_require__(196);
2372
+ "use strict";
2048
2373
 
2049
- var MapUtils_1 = __webpack_require__(197);
2050
2374
 
2051
- var Tooltip_1 = __webpack_require__(199);
2375
+ var __rest = this && this.__rest || function (s, e) {
2376
+ var t = {};
2052
2377
 
2053
- exports.DEFAULT_CENTER = [0, 0];
2054
- exports.DEFAULT_CONTROL_BACKGROUND_COLOR = '#2b3033';
2055
- exports.DEFAULT_CONTROL_FOREGROUND_COLOR = '#B5B5B5';
2056
- exports.DEFAULT_SCALE_UNIT = 'imperial';
2057
- exports.DEFAULT_SHOW_SCALE = true;
2058
- exports.DEFAULT_ZOOM = 0; // convert rgb/rgba/hex color to encoded color & opacity for SVG strings
2378
+ for (var p in s) {
2379
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
2380
+ }
2059
2381
 
2060
- var formatColor = function formatColor(color) {
2061
- var chromaColor = chroma(color);
2062
- return {
2063
- color: chroma(chromaColor.rgb()).hex().replace('#', '%23'),
2064
- opacity: chromaColor.alpha()
2065
- };
2382
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
2383
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
2384
+ }
2385
+ return t;
2066
2386
  };
2067
2387
 
2068
- exports.formatColor = formatColor;
2069
- PureMapContainer_1.default.displayName = 'PureMapContainer';
2388
+ Object.defineProperty(exports, "__esModule", {
2389
+ value: true
2390
+ });
2391
+ exports.PureMap = exports.config = exports.themes = exports.computeVizProps = exports.convertToArrOfObjects = void 0;
2392
+ /* eslint-disable no-sequences */
2070
2393
 
2071
- var PureMap = function PureMap(props) {
2072
- var width = props.width,
2073
- height = props.height,
2074
- backgroundColor = props.backgroundColor,
2075
- baseLayerTileServer = props.baseLayerTileServer,
2076
- baseLayerTileServerType = props.baseLayerTileServerType,
2077
- center = props.center,
2078
- controlBackgroundColor = props.controlBackgroundColor,
2079
- controlForegroundColor = props.controlForegroundColor,
2080
- layers = props.layers,
2081
- scaleUnit = props.scaleUnit,
2082
- showScale = props.showScale,
2083
- themeColorScheme = props.themeColorScheme,
2084
- zoom = props.zoom,
2085
- onMapLoad = props.onMapLoad;
2394
+ var React = __webpack_require__(1);
2086
2395
 
2087
- var _react_1$useContext = react_1.useContext(MapContext_1.default),
2088
- defaultTileConfig = _react_1$useContext.defaultTileConfig,
2089
- customTileConfig = _react_1$useContext.customTileConfig;
2396
+ var colorUtils_1 = __webpack_require__(12);
2090
2397
 
2091
- var basemapContainer = react_1.useRef(null);
2092
- var map = react_1.useRef(null);
2093
- var scaleControl = react_1.useRef(null);
2094
- var zoomControl = react_1.useRef(null);
2398
+ var dsl_1 = __webpack_require__(104);
2095
2399
 
2096
- var _react_1$useMemo = react_1.useMemo(function () {
2097
- return MapUtils_1.getTilePreset({
2098
- defaultTileConfig: defaultTileConfig,
2099
- customTileConfig: customTileConfig
2100
- });
2101
- }, [defaultTileConfig, customTileConfig]),
2102
- tilePreset = _react_1$useMemo.tilePreset,
2103
- defaultTileLight = _react_1$useMemo.defaultTileLight,
2104
- defaultTileDark = _react_1$useMemo.defaultTileDark;
2400
+ var JSONSchemaUtils_1 = __webpack_require__(24);
2105
2401
 
2106
- var _React$useState = React.useState({}),
2107
- _React$useState2 = _slicedToArray(_React$useState, 2),
2108
- tooltipProps = _React$useState2[0],
2109
- setTooltipProps = _React$useState2[1];
2402
+ var hocUtils_1 = __webpack_require__(8);
2110
2403
 
2111
- var lngLatCenter = react_1.useMemo(function () {
2112
- return [center[1], center[0]];
2113
- }, [center]);
2114
- var initializeMap = react_1.useCallback(function (mapStyle) {
2115
- map.current = new maplibre_gl_1.Map(Object.assign({
2116
- container: basemapContainer.current,
2117
- style: mapStyle,
2118
- center: lngLatCenter,
2119
- zoom: zoom
2120
- }, MapUtils_1.getZoomConstraintsFromTileConfig(mapStyle))); // Fired immediately after all necessary resources have been downloaded
2121
- // and the first visually complete rendering of the map has occurred.
2404
+ var PureMap_1 = __webpack_require__(195);
2405
+
2406
+ exports.PureMap = PureMap_1.default;
2407
+
2408
+ var config_1 = __webpack_require__(204);
2409
+
2410
+ exports.config = config_1.default;
2411
+
2412
+ var withDashboardViz_1 = __webpack_require__(29); // util fn extracted from PureParallelCoordinates that transforms data structure to array of objects
2413
+ // TODO: pull this fn into common utils and utilize this fn in ParallelCoordinates
2414
+
2415
+
2416
+ var convertToArrOfObjects = function convertToArrOfObjects(columns, fields) {
2417
+ if (!columns || !columns[0].length) return [];
2418
+ var data = [];
2419
+
2420
+ var _loop = function _loop(i) {
2421
+ var newObj = {};
2422
+ fields.forEach(function (field, index) {
2423
+ var fieldName = typeof field === 'string' ? field : field.name;
2424
+
2425
+ if (columns[index][i] === '') {
2426
+ newObj[fieldName] = null;
2427
+ } else {
2428
+ newObj[fieldName] = columns[index][i];
2429
+ }
2430
+ });
2431
+ data.push(newObj);
2432
+ };
2122
2433
 
2123
- map.current.on('load', function () {
2124
- onMapLoad();
2125
- }); // zoom
2434
+ for (var i = 0; i < columns[0].length; i += 1) {
2435
+ _loop(i);
2436
+ }
2126
2437
 
2127
- zoomControl.current = new maplibre_gl_1.NavigationControl({
2128
- showCompass: false
2129
- });
2130
- map.current.addControl(zoomControl.current, 'top-left');
2131
- }, [lngLatCenter, zoom]);
2132
- var initializeScale = react_1.useCallback(function () {
2133
- scaleControl.current = new maplibre_gl_1.ScaleControl({
2134
- maxWidth: 70,
2135
- unit: scaleUnit
2136
- });
2137
- map.current.addControl(scaleControl.current);
2138
- }, [scaleUnit]);
2139
- var updateScale = react_1.useCallback(function () {
2140
- var _a;
2438
+ return data;
2439
+ };
2141
2440
 
2142
- if (showScale) {
2143
- (_a = scaleControl === null || scaleControl === void 0 ? void 0 : scaleControl.current) === null || _a === void 0 ? void 0 : _a.setUnit(scaleUnit);
2144
- }
2145
- }, [scaleUnit, showScale]);
2146
- react_1.useEffect(function () {
2147
- if (map.current) {
2148
- map.current.resize();
2149
- }
2150
- }, [width, height]);
2151
- react_1.useEffect(function () {
2152
- // do not render when defaultTileConfig, customTileConfig and tileset are not configured
2153
- if (Object.keys(tilePreset).length === 0 && (!baseLayerTileServer || !baseLayerTileServerType)) {
2154
- // eslint-disable-next-line no-console
2155
- console.warn('Map Tile Server configuration is missing or invalid. Please provide a valid configuration');
2156
- return;
2157
- }
2441
+ exports.convertToArrOfObjects = convertToArrOfObjects;
2158
2442
 
2159
- var mapStyle = MapUtils_1.getMapStyle({
2160
- baseLayerTileServer: baseLayerTileServer,
2161
- baseLayerTileServerType: baseLayerTileServerType,
2162
- tilePreset: tilePreset,
2163
- colorScheme: themeColorScheme,
2164
- defaultTileLight: defaultTileLight,
2165
- defaultTileDark: defaultTileDark
2166
- });
2167
- mapStyle.version = MapUtils_1.MAP_STYLE_VERSION_NUMBER; // If the map has already been initialized, we update the styles
2443
+ var computeVizProps = function computeVizProps(props) {
2444
+ var _a, _b;
2168
2445
 
2169
- if (map.current) {
2170
- // Refer to https://maplibre.org/maplibre-gl-js-docs/api/map/#setstyle-example for options.diff (default is true)
2171
- map.current.setStyle(lodash_1.omit(mapStyle, ['theme', 'name', 'key']));
2446
+ var themeFunc = props.themeFunc,
2447
+ theme = props.theme,
2448
+ layers = props.layers,
2449
+ dataSources = props.dataSources,
2450
+ onOptionsChange = props.onOptionsChange;
2451
+ var themeColorVariables = ['controlBackgroundColor', 'controlForegroundColor'];
2452
+ var themeColors = {};
2453
+ themeColorVariables.forEach(function (variable) {
2454
+ themeColors[variable] = themeFunc(variable);
2455
+ }); // Markers use different icons, Bubbles has different styles for light and dark theme
2456
+ // this prop is passed for that
2172
2457
 
2173
- var _MapUtils_1$getZoomCo = MapUtils_1.getZoomConstraintsFromTileConfig(mapStyle),
2174
- minZoom = _MapUtils_1$getZoomCo.minZoom,
2175
- maxZoom = _MapUtils_1$getZoomCo.maxZoom;
2458
+ var themeColorScheme = (theme === null || theme === void 0 ? void 0 : theme.splunkThemeV1) ? theme === null || theme === void 0 ? void 0 : theme.splunkThemeV1.colorScheme : 'dark';
2459
+ var dataSourceData = (_b = (_a = dataSources === null || dataSources === void 0 ? void 0 : dataSources.primary) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : {}; // transforms data structure into array of objects to allow for indexing metadata at layer level
2460
+ // TODO: explore any potential changes when multiple layers are supported
2176
2461
 
2177
- map.current.setMinZoom(minZoom);
2178
- map.current.setMaxZoom(maxZoom);
2179
- updateScale();
2180
- } else {
2181
- // initialize the map only once with a constructed style from user configured options
2182
- // or default configs from the map context
2183
- initializeMap(lodash_1.omit(mapStyle, ['theme', 'name', 'key']));
2184
- initializeScale();
2185
- return;
2186
- } // eslint-disable-next-line consistent-return
2462
+ var transformedData = exports.convertToArrOfObjects(dataSourceData.columns, dataSourceData.fields);
2463
+ layers.forEach(function (l) {
2464
+ var _a; // add key `geobin` to the layer object if the data is returned from geostats commands
2465
+ // to distinguish geostats commands from table commands
2187
2466
 
2188
2467
 
2189
- return function () {
2190
- // free resources
2191
- map === null || map === void 0 ? void 0 : map.current.remove();
2192
- map.current = undefined;
2193
- };
2194
- }, [tilePreset, initializeMap, initializeScale, updateScale, defaultTileLight, defaultTileDark, baseLayerTileServer, baseLayerTileServerType, themeColorScheme]);
2195
- react_1.useEffect(function () {
2196
- if (map.current) {
2197
- map.current.flyTo({
2198
- center: lngLatCenter,
2199
- zoom: zoom
2200
- });
2201
- }
2202
- }, [lngLatCenter, zoom]);
2203
- react_1.useEffect(function () {
2204
- var cleanupLayer = function cleanupLayer() {};
2468
+ var geobinIdx = ((_a = dataSourceData.fields) !== null && _a !== void 0 ? _a : []).map(function (field) {
2469
+ return typeof field === 'string' ? field : field.name;
2470
+ }).indexOf('geobin');
2471
+ var layer = l;
2205
2472
 
2206
- var markers = [];
2207
- var bubbles = [];
2473
+ if (geobinIdx > -1) {
2474
+ layer.geobin = dataSourceData.columns[geobinIdx];
2475
+ } // Sanitize colors within layers
2208
2476
 
2209
- if (map.current && layers && layers.length && map.current.isStyleLoaded) {
2210
- try {
2211
- if (layers[0].type === 'marker' && !('geobin' in layers[0])) {
2212
- // support for only single layer
2213
- var markerLayer = layers[0];
2214
- markerLayer.seriesColors = markerLayer.seriesColors ? markerLayer.seriesColors : MapUtils_1.DEFAULT_SERIES_COLORS;
2215
-
2216
- cleanupLayer = function cleanupLayer() {
2217
- if (markers) {
2218
- markers.forEach(function (marker) {
2219
- return marker === null || marker === void 0 ? void 0 : marker.remove();
2220
- });
2221
- markers = [];
2222
- }
2223
- };
2224
2477
 
2225
- if (markerLayer) {
2226
- // Remove any existing markers
2227
- cleanupLayer();
2228
- var renderedMarkerLayer = MapUtils_1.renderMarkerLayer(markerLayer, themeColorScheme, map, setTooltipProps);
2229
- markers = renderedMarkerLayer && renderedMarkerLayer.markers;
2230
- }
2231
- }
2478
+ layer.seriesColors = Array.isArray(layer.seriesColors) ? colorUtils_1.sanitizeArrayOfColors(layer.seriesColors) : undefined;
2479
+ layer.dataColors = Array.isArray(layer.dataColors) ? colorUtils_1.sanitizeArrayOfColors(layer.dataColors) : undefined;
2480
+ layer.metadata = transformedData;
2481
+ });
2482
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, themeColors), {
2483
+ themeColorScheme: themeColorScheme
2484
+ }), layers), {
2485
+ onOptionsChange: onOptionsChange
2486
+ });
2487
+ };
2232
2488
 
2233
- if (layers[0].type === 'bubble') {
2234
- // support for only single layer
2235
- var bubbleLayer = layers[0];
2236
- bubbleLayer.seriesColors = bubbleLayer.seriesColors ? bubbleLayer.seriesColors : MapUtils_1.DEFAULT_SERIES_COLORS; // update bubbles on events
2237
-
2238
- cleanupLayer = function cleanupLayer() {
2239
- if (bubbles && bubbles.length) {
2240
- bubbles.forEach(function (bubble) {
2241
- return bubble.remove();
2242
- });
2243
- bubbles = [];
2244
- }
2245
- }; // render bubbles with data returned from geostats cmds
2489
+ exports.computeVizProps = computeVizProps;
2490
+
2491
+ var withTooltipFields = function withTooltipFields(Viz) {
2492
+ var VizWithTooltipFields = function VizWithTooltipFields(_a) {
2493
+ var _b, _c, _d, _e;
2494
+
2495
+ var dataSources = _a.dataSources,
2496
+ options = _a.options,
2497
+ otherProps = __rest(_a, ["dataSources", "options"]);
2246
2498
 
2499
+ if (!dataSources || !dataSources.primary || !dataSources.primary.data) {
2500
+ return React.createElement(Viz, Object.assign({}, otherProps, {
2501
+ options: options
2502
+ }));
2503
+ }
2247
2504
 
2248
- if (bubbleLayer.geobin && bubbleLayer.bubbleSize) {
2249
- bubbleLayer.seriesColors = bubbleLayer.seriesColors ? bubbleLayer.seriesColors : MapUtils_1.DEFAULT_SERIES_COLORS;
2250
- var data = MapUtils_1.bakeBubbleData(bubbleLayer);
2251
- var staticColors = MapUtils_1.getStaticColors(bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors);
2505
+ var mergedOptions = hocUtils_1.deepMergeWithArrayPrimitiveOverrides({}, options, JSONSchemaUtils_1.pickFieldFromJSONSchema(config_1.default.optionsSchema, 'default'));
2252
2506
 
2253
- if (data && staticColors && staticColors.length) {
2254
- cleanupLayer(); // render bubbles when layers options get update
2507
+ if ((_b = mergedOptions.layers) === null || _b === void 0 ? void 0 : _b[0]) {
2508
+ if (((_d = (_c = mergedOptions.layers) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.type) === 'bubble') {
2509
+ mergedOptions.layers[0].bubbleSizeFields = dsl_1.getFieldsFromDSL((_e = mergedOptions.layers[0].bubbleSize) !== null && _e !== void 0 ? _e : mergedOptions.layers[0].bubbleSize, dataSources);
2510
+ }
2255
2511
 
2256
- bubbles = MapUtils_1.updateBubbles(data, zoom, staticColors, bubbleLayer.dataColors, themeColorScheme, map, setTooltipProps); // render bubbles on zoom
2512
+ var fields = dataSources.primary.data.fields;
2257
2513
 
2258
- map.current.on('zoomend', function () {
2259
- cleanupLayer();
2260
- bubbles = MapUtils_1.updateBubbles(data, map.current.getZoom(), staticColors, bubbleLayer.dataColors, themeColorScheme, map, setTooltipProps);
2261
- });
2262
- }
2263
- }
2264
- }
2265
- } catch (err) {
2266
- console.error(err);
2514
+ if (Array.isArray(mergedOptions.layers[0].additionalTooltipFields) && Array.isArray(fields) && fields.length) {
2515
+ var _mergedOptions$layers = mergedOptions.layers[0].bubbleSizeFields,
2516
+ bubbleSizeFields = _mergedOptions$layers === void 0 ? [] : _mergedOptions$layers;
2517
+ mergedOptions.layers[0].additionalTooltipFields = mergedOptions.layers[0].additionalTooltipFields.filter(function (field) {
2518
+ return (typeof fields[0] === 'string' ? fields.includes(field) : fields.map(function (f) {
2519
+ return f.name;
2520
+ }).includes(field)) && !bubbleSizeFields.includes(field);
2521
+ });
2267
2522
  }
2268
2523
  }
2269
2524
 
2270
- return function () {
2271
- cleanupLayer();
2272
- };
2273
- }, [layers, width, height, zoom, themeColorScheme]);
2274
- var baseMapLayer = React.createElement(React.Fragment, null, React.createElement(PureMapContainer_1.default, {
2275
- className: "puremap",
2276
- width: width,
2277
- height: height,
2278
- backgroundColor: backgroundColor,
2279
- controlBackgroundColor: controlBackgroundColor,
2280
- controlForegroundColor: controlForegroundColor,
2281
- controlIconColorEncoded: exports.formatColor(controlForegroundColor),
2282
- ref: basemapContainer,
2283
- showScale: showScale
2284
- }), React.createElement(Tooltip_1.default, Object.assign({}, tooltipProps)));
2285
- return baseMapLayer;
2286
- };
2525
+ return React.createElement(Viz, Object.assign({
2526
+ dataSources: dataSources,
2527
+ options: mergedOptions
2528
+ }, otherProps));
2529
+ };
2287
2530
 
2288
- var isLatLng = function isLatLng(props, propName, componentName) {
2289
- if (props[propName][0] >= -180 && props[propName][0] <= 180 && props[propName][1] >= -90 && props[propName][1] <= 90) {
2290
- throw new Error("".concat(componentName, " ").concat(propName, " may have reversed [lat, lon] ranges."));
2291
- }
2531
+ VizWithTooltipFields.propTypes = Viz.propTypes;
2532
+ VizWithTooltipFields.defaultProps = Viz.defaultProps;
2533
+ VizWithTooltipFields.config = Viz.config;
2534
+ return VizWithTooltipFields;
2535
+ }; // HOC for stripping the internal fields for Maps
2292
2536
 
2293
- if (props[propName][0] < -90 || props[propName][0] > 90 || props[propName][1] < -180 || props[propName][1] > 180) {
2294
- throw new Error("".concat(componentName, " ").concat(propName, " incorrect [lat, lon] ranges."));
2295
- }
2296
2537
 
2297
- return null;
2298
- };
2538
+ var withoutInternalFields = function withoutInternalFields(Viz) {
2539
+ // eslint-disable-next-line react/display-name
2540
+ var VizWithoutInternalFields = function VizWithoutInternalFields(_a) {
2541
+ var dataSources = _a.dataSources,
2542
+ otherProps = __rest(_a, ["dataSources"]);
2299
2543
 
2300
- exports.isLatLng = isLatLng;
2301
- PureMap.propTypes = {
2302
- // eslint-disable-next-line react/no-unused-prop-types
2303
- mode: T.string,
2304
- width: T.oneOfType([T.string, T.number]),
2305
- height: T.oneOfType([T.string, T.number]),
2306
- backgroundColor: T.string,
2307
- baseLayerTileServer: T.string,
2308
- baseLayerTileServerType: T.string,
2309
- center: exports.isLatLng,
2310
- controlBackgroundColor: T.string,
2311
- controlForegroundColor: T.string,
2312
- layers: T.arrayOf(T.shape({
2313
- type: T.string,
2314
- latitude: T.arrayOf(T.number),
2315
- longitude: T.arrayOf(T.number),
2316
- label: T.string,
2317
- showInLegend: T.bool,
2318
- dataColors: T.oneOfType([T.string, T.arrayOf(T.string)]),
2319
- seriesColors: T.arrayOf(T.string),
2320
- tooltipFields: T.arrayOf(T.string),
2321
- resultLimit: T.number
2322
- })),
2323
- scaleUnit: T.string,
2324
- showScale: T.bool,
2325
- themeColorScheme: T.string,
2326
- zoom: T.number,
2327
- onMapLoad: T.func
2328
- };
2329
- PureMap.defaultProps = {
2330
- mode: 'view',
2331
- width: 800,
2332
- height: 500,
2333
- backgroundColor: '#0b0c0e',
2334
- center: exports.DEFAULT_CENTER,
2335
- controlBackgroundColor: exports.DEFAULT_CONTROL_BACKGROUND_COLOR,
2336
- controlForegroundColor: exports.DEFAULT_CONTROL_FOREGROUND_COLOR,
2337
- scaleUnit: exports.DEFAULT_SCALE_UNIT,
2338
- showScale: exports.DEFAULT_SHOW_SCALE,
2339
- layers: [],
2340
- themeColorScheme: 'dark',
2341
- zoom: exports.DEFAULT_ZOOM,
2342
- onMapLoad: lodash_1.noop
2343
- };
2344
- exports.default = PureMap;
2544
+ if (!dataSources || !dataSources.primary || !dataSources.primary.data) {
2545
+ return React.createElement(Viz, Object.assign({}, otherProps));
2546
+ }
2345
2547
 
2346
- /***/ }),
2347
- /* 193 */
2348
- /***/ (function(module, exports) {
2548
+ var primary = dataSources.primary;
2549
+ var _primary$data = primary.data,
2550
+ columns = _primary$data.columns,
2551
+ fields = _primary$data.fields;
2552
+ var newColumns = [];
2553
+ var newFields = [];
2349
2554
 
2350
- module.exports = require("chroma-js");
2555
+ if (fields && columns && fields.length === columns.length) {
2556
+ // computed sorted index for removal
2557
+ var indicesToRemove = new Set(fields.reduce(function (arr, e, i) {
2558
+ return (typeof e === 'string' ? e.startsWith('_') : e.name.toString().startsWith('_')) && arr.push(i), arr;
2559
+ }, []));
2560
+ newFields = fields.filter(function (d, i) {
2561
+ return !indicesToRemove.has(i);
2562
+ });
2563
+ newColumns = columns.filter(function (d, i) {
2564
+ return !indicesToRemove.has(i);
2565
+ });
2566
+ }
2351
2567
 
2352
- /***/ }),
2353
- /* 194 */
2354
- /***/ (function(module, exports) {
2568
+ var modifiedDatasources = Object.assign(Object.assign({}, dataSources), {
2569
+ primary: Object.assign(Object.assign({}, primary), {
2570
+ data: Object.assign(Object.assign({}, primary.data), {
2571
+ columns: newColumns,
2572
+ fields: newFields
2573
+ })
2574
+ })
2575
+ });
2576
+ return React.createElement(Viz, Object.assign({
2577
+ dataSources: modifiedDatasources
2578
+ }, otherProps));
2579
+ };
2355
2580
 
2356
- module.exports = require("@splunk/visualization-context/MapContext");
2581
+ VizWithoutInternalFields.propTypes = Viz.propTypes;
2582
+ VizWithoutInternalFields.defaultProps = Viz.defaultProps;
2583
+ VizWithoutInternalFields.config = Viz.config;
2584
+ return VizWithoutInternalFields;
2585
+ }; // HOC for updating all null values in data columns to zeros
2586
+ // excluding 'latitude', 'longitude' and 'geobin'
2357
2587
 
2358
- /***/ }),
2359
- /* 195 */
2360
- /***/ (function(module, exports, __webpack_require__) {
2361
2588
 
2362
- "use strict";
2589
+ var withNullToZeros = function withNullToZeros(Viz) {
2590
+ // eslint-disable-next-line react/display-name
2591
+ var VizWithColumnsNullToZeros = function VizWithColumnsNullToZeros(_a) {
2592
+ var _b, _c;
2363
2593
 
2594
+ var dataSources = _a.dataSources,
2595
+ options = _a.options,
2596
+ otherProps = __rest(_a, ["dataSources", "options"]);
2364
2597
 
2365
- Object.defineProperty(exports, "__esModule", {
2366
- value: true
2367
- });
2598
+ if (!dataSources || !dataSources.primary || !dataSources.primary.data) {
2599
+ return React.createElement(Viz, Object.assign({}, otherProps));
2600
+ }
2368
2601
 
2369
- var styled_components_1 = __webpack_require__(4);
2602
+ var primary = dataSources.primary;
2603
+ var _primary$data2 = primary.data,
2604
+ columns = _primary$data2.columns,
2605
+ fields = _primary$data2.fields;
2606
+ var newColumns = columns;
2607
+ var mergedOptions = hocUtils_1.deepMergeWithArrayPrimitiveOverrides({}, options, JSONSchemaUtils_1.pickFieldFromJSONSchema(config_1.default.optionsSchema, 'default'));
2608
+
2609
+ if (((_c = (_b = mergedOptions.layers) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.type) === 'bubble') {
2610
+ var latitudeField = dsl_1.getFieldsFromDSL(mergedOptions.layers[0].latitude, dataSources)[0] || '';
2611
+ var longitudeField = dsl_1.getFieldsFromDSL(mergedOptions.layers[0].longitude, dataSources)[0] || '';
2612
+ var excludedFields = [latitudeField, longitudeField, 'geobin'];
2613
+ var indicesToEvaluate = new Set(fields.reduce(function (arr, e, i) {
2614
+ var field = typeof e === 'string' ? e : e.name.toString();
2615
+
2616
+ if (!excludedFields.includes(field)) {
2617
+ arr.push(i);
2618
+ }
2370
2619
 
2371
- var lodash_1 = __webpack_require__(2);
2620
+ return arr;
2621
+ }, []));
2622
+ newColumns = columns.map(function (column, i) {
2623
+ if (indicesToEvaluate.has(i)) {
2624
+ return column.map(function (value) {
2625
+ return !value ? 0 : value;
2626
+ });
2627
+ }
2372
2628
 
2373
- var style_1 = __webpack_require__(13);
2629
+ return column;
2630
+ });
2631
+ }
2374
2632
 
2375
- var PureMapContainer = styled_components_1.default.div.withConfig({
2376
- displayName: "PureMapContainer",
2377
- componentId: "sc-1gjwxfv-0"
2378
- })(["overflow:hidden;position:relative;z-index:0;background-color:", ";", ";.custom-marker{width:22px;height:28px;cursor:pointer;}.custom-bubble{cursor:pointer;}.maplibregl-ctrl-top-left{position:absolute;top:12px;left:16px;.maplibregl-ctrl-group{width:40px !important;height:87px !important;border-radius:4px;margin:8px 0px;background-color:", ";box-shadow:0px 26px 103px rgba(0,0,0,0.64),0px 11px 18px rgba(0,0,0,0.32),0px 3px 6px rgba(0,0,0,0.3);& button{width:40px;height:43px;border-top:0;}.mapboxgl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url('data:image/svg+xml;charset=UTF-8,<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 1C9 0.447715 8.55229 0 8 0C7.44772 0 7 0.447715 7 1V7H1C0.447715 7 0 7.44772 0 8C0 8.55229 0.447715 9 1 9H7V15C7 15.5523 7.44772 16 8 16C8.55229 16 9 15.5523 9 15V9H15C15.5523 9 16 8.55229 16 8C16 7.44772 15.5523 7 15 7H9V1Z\" fill=\"", "\" fill-opacity=\"", "\" /></svg>');}.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url('data:image/svg+xml;charset=UTF-8,<svg width=\"14\" height=\"3\" viewBox=\"0 0 14 3\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 1.99707C0 1.44479 0.447715 0.99707 1 0.99707H13C13.5523 0.99707 14 1.44479 14 1.99707C14 2.54936 13.5523 2.99707 13 2.99707H1C0.447715 2.99707 0 2.54936 0 1.99707Z\" fill=\"", "\" fill-opacity=\"", "\" /></svg>');}}}.maplibregl-ctrl-bottom-left{display:", ";position:absolute;z-index:0;bottom:16px;left:12px;width:86px;height:29px;border-radius:4px;margin:0;background-color:", ";box-shadow:0px 26px 103px rgba(0,0,0,0.13),0px 11px 18px rgba(0,0,0,0.06),0px 3px 6px rgba(0,0,0,0.06);.maplibregl-ctrl-scale{background-color:", ";color:", ";border:2px solid ", ";border-top:0;border-left:0;border-right:0;padding:0;margin:6px 8px 8px 8px;line-height:13px;letter-spacing:0.02em;font-family:sans-serif;font-size:10px;}}"], function (props) {
2379
- return props.backgroundColor;
2380
- }, function (props) {
2381
- return style_1.toDimension(lodash_1.pick(props, ['width', 'height']));
2382
- }, function (props) {
2383
- return props.controlBackgroundColor;
2384
- }, function (props) {
2385
- return props.controlIconColorEncoded.color;
2386
- }, function (props) {
2387
- return props.controlIconColorEncoded.opacity;
2388
- }, function (props) {
2389
- return props.controlIconColorEncoded.color;
2390
- }, function (props) {
2391
- return props.controlIconColorEncoded.opacity;
2392
- }, function (props) {
2393
- return props.showScale ? 'inline' : 'none';
2394
- }, function (props) {
2395
- return props.controlBackgroundColor;
2396
- }, function (props) {
2397
- return props.controlBackgroundColor;
2398
- }, function (props) {
2399
- return props.controlForegroundColor;
2400
- }, function (props) {
2401
- return props.controlForegroundColor;
2402
- });
2403
- exports.default = PureMapContainer;
2633
+ var modifiedDatasources = Object.assign(Object.assign({}, dataSources), {
2634
+ primary: Object.assign(Object.assign({}, primary), {
2635
+ data: Object.assign(Object.assign({}, primary.data), {
2636
+ columns: newColumns
2637
+ })
2638
+ })
2639
+ });
2640
+ return React.createElement(Viz, Object.assign({
2641
+ dataSources: modifiedDatasources,
2642
+ options: options
2643
+ }, otherProps));
2644
+ };
2404
2645
 
2405
- /***/ }),
2406
- /* 196 */
2407
- /***/ (function(module, exports) {
2646
+ VizWithColumnsNullToZeros.propTypes = Viz.propTypes;
2647
+ VizWithColumnsNullToZeros.defaultProps = Viz.defaultProps;
2648
+ VizWithColumnsNullToZeros.config = Viz.config;
2649
+ return VizWithColumnsNullToZeros;
2650
+ };
2408
2651
 
2409
- module.exports = require("maplibre-gl/dist/maplibre-gl.css");
2652
+ var Map = withoutInternalFields(withTooltipFields(withNullToZeros(withDashboardViz_1.default({
2653
+ ReactViz: PureMap_1.default,
2654
+ vizConfig: config_1.default,
2655
+ computeVizProps: exports.computeVizProps,
2656
+ disableEditModeCover: true,
2657
+ useIconPlaceholder: function useIconPlaceholder() {
2658
+ return false;
2659
+ }
2660
+ }))));
2661
+ var themes = config_1.default.themes;
2662
+ exports.themes = themes;
2663
+ exports.default = Map;
2410
2664
 
2411
2665
  /***/ }),
2412
- /* 197 */
2666
+ /* 195 */
2413
2667
  /***/ (function(module, exports, __webpack_require__) {
2414
2668
 
2415
2669
  "use strict";
2416
2670
 
2417
2671
 
2418
- var _slicedToArray = __webpack_require__(49);
2419
-
2420
- var _toConsumableArray = __webpack_require__(39);
2672
+ var _slicedToArray = __webpack_require__(51);
2421
2673
 
2422
2674
  Object.defineProperty(exports, "__esModule", {
2423
2675
  value: true
2424
2676
  });
2425
- exports.pieSegment = exports.createPieChart = exports.updateBubbles = exports.bakeBubbleData = exports.sanitizeValues = exports.transposeArray = exports.matchSize = exports.getStaticColors = exports.getZoomLevelFromGeobin = exports.getZoomConstraintsFromTileConfig = exports.getMapStyle = exports.getTilePreset = exports.renderMarkerLayer = exports.getMarkerSVGBackgroundImg = 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 = void 0;
2677
+ exports.isLatLng = exports.formatColor = exports.DEFAULT_ZOOM = exports.DEFAULT_SHOW_SCALE = exports.DEFAULT_SCALE_UNIT = exports.DEFAULT_CONTROL_FOREGROUND_COLOR = exports.DEFAULT_CONTROL_BACKGROUND_COLOR = exports.DEFAULT_CENTER = void 0;
2426
2678
 
2427
- var maplibre_gl_1 = __webpack_require__(123);
2679
+ var React = __webpack_require__(1);
2428
2680
 
2429
2681
  var lodash_1 = __webpack_require__(2);
2430
2682
 
2431
- var d3_scale_1 = __webpack_require__(69);
2432
-
2433
- var colorUtils_1 = __webpack_require__(11);
2434
-
2435
- var visualization_color_palettes_1 = __webpack_require__(41);
2436
-
2437
- var MarkerIcons_1 = __webpack_require__(198);
2438
-
2439
- exports.DEFAULT_RESULT_LIMIT = 1000;
2440
- exports.DEFAULT_CLUSTER_COLOR = '#909090';
2441
- exports.DEFAULT_SERIES_COLORS = visualization_color_palettes_1.VIZ_CATEGORICAL; // MapLibre requires a map style specification number which is always 8
2442
-
2443
- exports.MAP_STYLE_VERSION_NUMBER = 8; // currently using one [min, max] value set for bubbles across all zoom levels
2444
- // TODO: design choices on [min, max] bubble size for different zoom levels
2683
+ var react_1 = __webpack_require__(1);
2445
2684
 
2446
- exports.MIN_BUBBLE_RADIUS = 4;
2447
- exports.MAX_BUBBLE_RADIUS = 50; // Returns marker background img with the requiref fillColor based on the theme
2685
+ var T = __webpack_require__(0);
2448
2686
 
2449
- var getMarkerSVGBackgroundImg = function getMarkerSVGBackgroundImg(color, theme) {
2450
- var fillColor = color.replace('#', '%23');
2451
- return theme === 'light' ? MarkerIcons_1.defaultMarkerLightTheme(fillColor) : MarkerIcons_1.defaultMarkerDarkTheme(fillColor);
2452
- };
2687
+ var chroma = __webpack_require__(196);
2453
2688
 
2454
- exports.getMarkerSVGBackgroundImg = getMarkerSVGBackgroundImg; // Given a map instance and marker layer inputs, this method adds marker layers
2455
- // Note :- Separated this as a util function for better testability
2689
+ var maplibre_gl_1 = __webpack_require__(128);
2456
2690
 
2457
- var renderMarkerLayer = function renderMarkerLayer(markerLayer, themeColorScheme, map, setTooltipProps) {
2458
- if (!markerLayer || !map || !map.current || !Array.isArray(markerLayer.latitude) || !Array.isArray(markerLayer.longitude)) {
2459
- return null;
2460
- }
2691
+ var MapContext_1 = __webpack_require__(197);
2461
2692
 
2462
- var lat = markerLayer.latitude;
2463
- var lon = markerLayer.longitude;
2464
- var isStaticColor = !markerLayer.dataColors;
2465
- var limit = Math.min(lat.length, lon.length, markerLayer.resultLimit ? markerLayer.resultLimit : exports.DEFAULT_RESULT_LIMIT);
2466
- var markers = [];
2467
- var colors = [];
2693
+ var PureMapContainer_1 = __webpack_require__(198);
2468
2694
 
2469
- var _loop = function _loop(i) {
2470
- var staticColor = markerLayer.seriesColors && colorUtils_1.isColor(markerLayer.seriesColors[0]) ? markerLayer.seriesColors[0] : exports.DEFAULT_CLUSTER_COLOR;
2471
- var dynamicColor = markerLayer.dataColors && colorUtils_1.isColor(markerLayer.dataColors[i]) ? markerLayer.dataColors[i] : exports.DEFAULT_CLUSTER_COLOR;
2472
- var color = isStaticColor ? staticColor : dynamicColor;
2473
- colors.push(color); // create a HTML element for each marker
2474
-
2475
- var el = document.createElement('div');
2476
- el.className = 'custom-marker';
2477
- el.style.backgroundImage = "url('data:image/svg+xml;charset=UTF-8,".concat(exports.getMarkerSVGBackgroundImg(color, themeColorScheme), "')");
2478
- el.addEventListener('mouseover', function () {
2479
- setTooltipProps({
2480
- anchor: el,
2481
- longitude: lon[i],
2482
- latitude: lat[i]
2483
- });
2484
- });
2485
- el.addEventListener('mouseleave', function () {
2486
- setTooltipProps({
2487
- longitude: lon[i],
2488
- latitude: lat[i]
2489
- });
2490
- }); // make a marker for each [lon,lat] and add to the map
2695
+ var MapUtils_1 = __webpack_require__(105);
2491
2696
 
2492
- markers.push(new maplibre_gl_1.Marker(el).setLngLat([lon[i], lat[i]]).addTo(map.current));
2493
- };
2697
+ var ClusterLayer_1 = __webpack_require__(200);
2494
2698
 
2495
- for (var i = 0; i < limit; i += 1) {
2496
- _loop(i);
2497
- }
2699
+ exports.DEFAULT_CENTER = [0, 0];
2700
+ exports.DEFAULT_CONTROL_BACKGROUND_COLOR = '#2b3033';
2701
+ exports.DEFAULT_CONTROL_FOREGROUND_COLOR = '#B5B5B5';
2702
+ exports.DEFAULT_SCALE_UNIT = 'imperial';
2703
+ exports.DEFAULT_SHOW_SCALE = true;
2704
+ exports.DEFAULT_ZOOM = 0; // convert rgb/rgba/hex color to encoded color & opacity for SVG strings
2498
2705
 
2706
+ var formatColor = function formatColor(color) {
2707
+ var chromaColor = chroma(color);
2499
2708
  return {
2500
- markers: markers,
2501
- colors: colors
2709
+ color: chroma(chromaColor.rgb()).hex().replace('#', '%23'),
2710
+ opacity: chromaColor.alpha()
2502
2711
  };
2503
2712
  };
2504
2713
 
2505
- exports.renderMarkerLayer = renderMarkerLayer;
2506
- /**
2507
- * Construct a tile preset {key: config} by combining the default + custom tile configs
2508
- * Also returns the default tile config for each theme - light/dark
2509
- * @param {MapContextInterface} args
2510
- * @param {BaseTileConfig[]} args.defaultTileConfig
2511
- * @param {BaseTileConfig[]} args.customTileConfig
2512
- * @returns {Object} tile preset
2513
- */
2714
+ exports.formatColor = formatColor;
2715
+ PureMapContainer_1.default.displayName = 'PureMapContainer';
2514
2716
 
2515
- var getTilePreset = function getTilePreset(_ref) {
2516
- var _ref$defaultTileConfi = _ref.defaultTileConfig,
2517
- defaultTileConfig = _ref$defaultTileConfi === void 0 ? [] : _ref$defaultTileConfi,
2518
- _ref$customTileConfig = _ref.customTileConfig,
2519
- customTileConfig = _ref$customTileConfig === void 0 ? [] : _ref$customTileConfig;
2717
+ var PureMap = function PureMap(props) {
2718
+ var width = props.width,
2719
+ height = props.height,
2720
+ backgroundColor = props.backgroundColor,
2721
+ baseLayerTileServer = props.baseLayerTileServer,
2722
+ baseLayerTileServerType = props.baseLayerTileServerType,
2723
+ center = props.center,
2724
+ controlBackgroundColor = props.controlBackgroundColor,
2725
+ controlForegroundColor = props.controlForegroundColor,
2726
+ _props$layers = props.layers,
2727
+ layers = _props$layers === void 0 ? [] : _props$layers,
2728
+ scaleUnit = props.scaleUnit,
2729
+ showScale = props.showScale,
2730
+ themeColorScheme = props.themeColorScheme,
2731
+ zoom = props.zoom,
2732
+ onMapLoad = props.onMapLoad,
2733
+ onMapClick = props.onMapClick,
2734
+ onOptionsChange = props.onOptionsChange;
2520
2735
 
2521
- var _a, _b;
2736
+ var _react_1$useContext = react_1.useContext(MapContext_1.default),
2737
+ defaultTileConfig = _react_1$useContext.defaultTileConfig,
2738
+ customTileConfig = _react_1$useContext.customTileConfig;
2522
2739
 
2523
- var tilePreset = {};
2524
- var defaultTileLight = {};
2525
- var defaultTileDark = {};
2526
- var tileConfigs = [].concat(defaultTileConfig).concat(customTileConfig);
2527
- lodash_1.forEach(tileConfigs, function (tileConfig) {
2528
- var key = tileConfig === null || tileConfig === void 0 ? void 0 : tileConfig.key;
2529
- var updatedConfig = Object.assign(Object.assign({
2530
- theme: 'all'
2531
- }, tileConfig), {
2532
- version: exports.MAP_STYLE_VERSION_NUMBER
2533
- });
2534
- tilePreset[key] = updatedConfig;
2535
- });
2740
+ var basemapContainer = react_1.useRef(null);
2741
+ var map = react_1.useRef(null);
2742
+ var scaleControl = react_1.useRef(null);
2743
+ var zoomControl = react_1.useRef(null);
2536
2744
 
2537
- if (defaultTileConfig.length > 0) {
2538
- defaultTileLight = (_a = defaultTileConfig.find(function (config) {
2539
- return config.theme === 'light';
2540
- })) !== null && _a !== void 0 ? _a : defaultTileConfig.find(function (config) {
2541
- return config.theme === undefined;
2542
- });
2543
- defaultTileDark = (_b = defaultTileConfig.find(function (config) {
2544
- return config.theme === 'dark';
2545
- })) !== null && _b !== void 0 ? _b : defaultTileConfig.find(function (config) {
2546
- return config.theme === undefined;
2745
+ var _react_1$useMemo = react_1.useMemo(function () {
2746
+ return MapUtils_1.getTilePreset({
2747
+ defaultTileConfig: defaultTileConfig,
2748
+ customTileConfig: customTileConfig
2547
2749
  });
2548
- }
2549
-
2550
- return {
2551
- tilePreset: tilePreset,
2552
- defaultTileLight: defaultTileLight,
2553
- defaultTileDark: defaultTileDark
2554
- };
2555
- };
2556
-
2557
- exports.getTilePreset = getTilePreset;
2558
- /**
2559
- * Check if baseLayerTileServer is in tilePreset and config matches current theme, if yes, return.
2560
- * If no, construct a mapStyle with baseLayerTilerServer and baseLayerTileServerType
2561
- * Else return default tile config based on current theme
2562
- * @param {Object} args
2563
- * @param {BaseTileConfig[]} args.tilePreset
2564
- * @param {String} args.baseLayerTilerServer
2565
- * @param {String} args.baseLayerTileServerType
2566
- * @param {String} args.colorScheme
2567
- * @param {BaseTileConfig} args.defaultTileDark
2568
- * @param {BaseTileConfig} args.defaultTileLight
2569
- * @returns {BaseTileConfig} mapStyle
2570
- */
2571
-
2572
- var getMapStyle = function getMapStyle(_ref2) {
2573
- var _ref2$baseLayerTileSe = _ref2.baseLayerTileServer,
2574
- baseLayerTileServer = _ref2$baseLayerTileSe === void 0 ? '' : _ref2$baseLayerTileSe,
2575
- _ref2$baseLayerTileSe2 = _ref2.baseLayerTileServerType,
2576
- baseLayerTileServerType = _ref2$baseLayerTileSe2 === void 0 ? '' : _ref2$baseLayerTileSe2,
2577
- _ref2$tilePreset = _ref2.tilePreset,
2578
- tilePreset = _ref2$tilePreset === void 0 ? {} : _ref2$tilePreset,
2579
- _ref2$colorScheme = _ref2.colorScheme,
2580
- colorScheme = _ref2$colorScheme === void 0 ? 'light' : _ref2$colorScheme,
2581
- _ref2$defaultTileLigh = _ref2.defaultTileLight,
2582
- defaultTileLight = _ref2$defaultTileLigh === void 0 ? {} : _ref2$defaultTileLigh,
2583
- _ref2$defaultTileDark = _ref2.defaultTileDark,
2584
- defaultTileDark = _ref2$defaultTileDark === void 0 ? {} : _ref2$defaultTileDark;
2585
-
2586
- if (baseLayerTileServer && tilePreset[baseLayerTileServer] && (tilePreset[baseLayerTileServer].theme === colorScheme || tilePreset[baseLayerTileServer].theme === 'all')) {
2587
- return tilePreset[baseLayerTileServer];
2588
- }
2589
-
2590
- if (baseLayerTileServer && baseLayerTileServerType) {
2591
- var tiles = [];
2592
- /**
2593
- * Tile Server URLs (eg: http://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png) can specify the variable {s} which refers to a subdomain
2594
- * Subdomains are used to help with browser parallel requests per domain limitation. These subdomains are typically single letters 'a', 'b' and 'c'
2595
- * Refer to https://leafletjs.com/SlavaUkraini/reference.html#tilelayer and https://wiki.openstreetmap.org/wiki/Tile_servers
2596
- */
2750
+ }, [defaultTileConfig, customTileConfig]),
2751
+ tilePreset = _react_1$useMemo.tilePreset,
2752
+ defaultTileLight = _react_1$useMemo.defaultTileLight,
2753
+ defaultTileDark = _react_1$useMemo.defaultTileDark;
2597
2754
 
2598
- if (baseLayerTileServer.match(/^(https?):\/\/{(s|S)}\../)) {
2599
- /**
2600
- * sXML (Leaflet) allows users to define their own tile server URLs + list of available subdomains
2601
- * In order to preserve this behavior during conversion to splunk.map,
2602
- * if the variable {s} or {S} is detected, replace it with 'a', 'b' and 'c' - default values for subdomains
2603
- * TODO: in the future, add an additional prop - baseLayerTileServerSubdomains: ['x', 'y', 'z'], default being ['a', 'b', 'c']
2604
- */
2605
- tiles = [baseLayerTileServer.replace(/{(s|S)}/, 'a'), baseLayerTileServer.replace(/{(s|S)}/, 'b'), baseLayerTileServer.replace(/{(s|S)}/, 'c')];
2606
- } else {
2607
- tiles = [baseLayerTileServer];
2608
- } // TODO: remove hardcoded style when we allow users to pass in layer style through Viz options
2755
+ var _React$useState = React.useState(zoom !== null && zoom !== void 0 ? zoom : exports.DEFAULT_ZOOM),
2756
+ _React$useState2 = _slicedToArray(_React$useState, 2),
2757
+ currentZoomLevel = _React$useState2[0],
2758
+ setCurrentZoomLevel = _React$useState2[1];
2609
2759
 
2760
+ var _React$useState3 = React.useState(false),
2761
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
2762
+ isMapLoaded = _React$useState4[0],
2763
+ setMapIsLoaded = _React$useState4[1]; // Assign default center when no center is defined
2610
2764
 
2611
- var mapStyle = {
2612
- version: exports.MAP_STYLE_VERSION_NUMBER,
2613
- sources: {
2614
- 'base-tiles': {
2615
- type: baseLayerTileServerType,
2616
- tiles: tiles,
2617
- tileSize: 256
2618
- }
2619
- },
2620
- layers: [{
2621
- id: 'base-layer',
2622
- type: 'raster',
2623
- source: 'base-tiles',
2624
- minzoom: 0,
2625
- maxzoom: 10
2626
- }]
2765
+
2766
+ var lngLatCenter = react_1.useMemo(function () {
2767
+ if (!MapUtils_1.isValidLatLon(center)) {
2768
+ return exports.DEFAULT_CENTER;
2769
+ }
2770
+
2771
+ return [center[1], center[0]];
2772
+ }, [center]); // Assign default zoom when no zoom is defined
2773
+
2774
+ var zoomLevel = react_1.useMemo(function () {
2775
+ if (zoom === undefined) {
2776
+ return exports.DEFAULT_ZOOM;
2777
+ }
2778
+
2779
+ return zoom;
2780
+ }, [zoom]);
2781
+ var initializeMap = react_1.useCallback(function (mapStyle) {
2782
+ var fitMapToContent = function fitMapToContent() {
2783
+ var lngLatBounds = MapUtils_1.getGlobalLayerBoundaries([layers[0]]);
2784
+ map.current.fitBounds(lngLatBounds, {
2785
+ padding: MapUtils_1.MAX_BUBBLE_RADIUS + 5,
2786
+ animate: false
2787
+ });
2627
2788
  };
2628
- return mapStyle;
2629
- } // if tile server is not present in the preset AND we can't construct a mapStyle, fall back on defaults
2630
2789
 
2790
+ map.current = new maplibre_gl_1.Map(Object.assign({
2791
+ container: basemapContainer.current,
2792
+ preserveDrawingBuffer: true,
2793
+ style: mapStyle,
2794
+ center: lngLatCenter,
2795
+ zoom: zoomLevel
2796
+ }, MapUtils_1.getZoomConstraintsFromTileConfig(mapStyle))); // Fired immediately after all necessary resources have been downloaded
2797
+ // and the first visually complete rendering of the map has occurred.
2631
2798
 
2632
- return colorScheme === 'light' ? defaultTileLight : defaultTileDark;
2633
- };
2799
+ map.current.on('load', function () {
2800
+ if (layers.length > 0 && center === undefined && zoom === undefined) {
2801
+ fitMapToContent();
2802
+ }
2634
2803
 
2635
- exports.getMapStyle = getMapStyle;
2804
+ setMapIsLoaded(true); // TODO :- Temp timeout added for onMapLoad event to avoid flaky screenshots caused by
2805
+ // https://maplibre.org/maplibre-gl-js-docs/api/map/#map#fitbounds. Need alternate approach to handle the same.
2636
2806
 
2637
- var getZoomConstraintsFromTileConfig = function getZoomConstraintsFromTileConfig(tileConfig) {
2638
- var sources = tileConfig.sources,
2639
- layers = tileConfig.layers; // check sources for minzoom maxzoom first
2807
+ setTimeout(function () {
2808
+ return onMapLoad();
2809
+ }, 500);
2810
+ });
2811
+ map.current.on('zoomend', function () {
2812
+ setCurrentZoomLevel(map.current.getZoom());
2813
+ }); // drag
2814
+
2815
+ map.current.on('dragend', function () {
2816
+ var newCenter = map.current.getCenter();
2817
+ onOptionsChange({
2818
+ center: [newCenter.lat, newCenter.lng]
2819
+ });
2820
+ }); // zoom
2640
2821
 
2641
- var sourceKeys = Object.keys(sources);
2822
+ map.current.on('zoomend', function () {
2823
+ onOptionsChange({
2824
+ zoom: map.current.getZoom()
2825
+ });
2826
+ }); // zoom
2642
2827
 
2643
- for (var i = 0; i < sourceKeys.length; i += 1) {
2644
- var _sources$sourceKeys$i = sources[sourceKeys[i]],
2645
- minzoom = _sources$sourceKeys$i.minzoom,
2646
- maxzoom = _sources$sourceKeys$i.maxzoom;
2828
+ zoomControl.current = new maplibre_gl_1.NavigationControl({
2829
+ showCompass: false
2830
+ });
2831
+ map.current.addControl(zoomControl.current, 'top-left');
2832
+ }, [lngLatCenter, zoomLevel, layers.length]);
2833
+ var initializeScale = react_1.useCallback(function () {
2834
+ scaleControl.current = new maplibre_gl_1.ScaleControl({
2835
+ maxWidth: 70,
2836
+ unit: scaleUnit
2837
+ });
2838
+ map.current.addControl(scaleControl.current);
2839
+ }, [scaleUnit]);
2840
+ var updateScale = react_1.useCallback(function () {
2841
+ var _a;
2647
2842
 
2648
- if (lodash_1.isNumber(minzoom) && lodash_1.isNumber(maxzoom)) {
2649
- return {
2650
- minZoom: minzoom,
2651
- maxZoom: maxzoom
2652
- };
2843
+ if (showScale) {
2844
+ (_a = scaleControl === null || scaleControl === void 0 ? void 0 : scaleControl.current) === null || _a === void 0 ? void 0 : _a.setUnit(scaleUnit);
2845
+ }
2846
+ }, [scaleUnit, showScale]);
2847
+ react_1.useEffect(function () {
2848
+ if (map.current) {
2849
+ map.current.resize();
2850
+ }
2851
+ }, [width, height]);
2852
+ react_1.useEffect(function () {
2853
+ // do not render when defaultTileConfig, customTileConfig and tileset are not configured
2854
+ if (Object.keys(tilePreset).length === 0 && (!baseLayerTileServer || !baseLayerTileServerType)) {
2855
+ // eslint-disable-next-line no-console
2856
+ console.warn('Map Tile Server configuration is missing or invalid. Please provide a valid configuration');
2857
+ return;
2653
2858
  }
2654
- } // then check layers
2655
2859
 
2860
+ var mapStyle = MapUtils_1.getMapStyle({
2861
+ baseLayerTileServer: baseLayerTileServer,
2862
+ baseLayerTileServerType: baseLayerTileServerType,
2863
+ tilePreset: tilePreset,
2864
+ colorScheme: themeColorScheme,
2865
+ defaultTileLight: defaultTileLight,
2866
+ defaultTileDark: defaultTileDark
2867
+ });
2868
+ mapStyle.version = MapUtils_1.MAP_STYLE_VERSION_NUMBER; // If the map has already been initialized, we update the styles
2656
2869
 
2657
- for (var _i = 0; _i < layers.length; _i += 1) {
2658
- var _layers$_i = layers[_i],
2659
- _minzoom = _layers$_i.minzoom,
2660
- _maxzoom = _layers$_i.maxzoom;
2870
+ if (map.current) {
2871
+ // Refer to https://maplibre.org/maplibre-gl-js-docs/api/map/#setstyle-example for options.diff (default is true)
2872
+ map.current.setStyle(lodash_1.omit(mapStyle, ['theme', 'name', 'key']));
2661
2873
 
2662
- if (lodash_1.isNumber(_minzoom) && lodash_1.isNumber(_maxzoom)) {
2663
- return {
2664
- minZoom: _minzoom,
2665
- maxZoom: _maxzoom
2666
- };
2874
+ var _MapUtils_1$getZoomCo = MapUtils_1.getZoomConstraintsFromTileConfig(mapStyle),
2875
+ minZoom = _MapUtils_1$getZoomCo.minZoom,
2876
+ maxZoom = _MapUtils_1$getZoomCo.maxZoom;
2877
+
2878
+ map.current.setMinZoom(minZoom);
2879
+ map.current.setMaxZoom(maxZoom);
2880
+ updateScale();
2881
+ } else {
2882
+ // initialize the map only once with a constructed style from user configured options
2883
+ // or default configs from the map context
2884
+ initializeMap(lodash_1.omit(mapStyle, ['theme', 'name', 'key']));
2885
+ initializeScale();
2667
2886
  }
2668
- } // Maplibre default - would reset previous min/maxZoom
2887
+ }, [tilePreset, initializeMap, initializeScale, updateScale, defaultTileLight, defaultTileDark, baseLayerTileServer, baseLayerTileServerType, themeColorScheme]);
2888
+ react_1.useEffect(function () {
2889
+ if (map.current) {
2890
+ map.current.flyTo({
2891
+ center: lngLatCenter,
2892
+ zoom: zoomLevel
2893
+ });
2894
+ }
2895
+ }, [lngLatCenter, zoom]);
2896
+ react_1.useEffect(function () {
2897
+ return function () {
2898
+ if (map.current) {
2899
+ map.current.remove();
2900
+ }
2901
+ };
2902
+ }, []);
2669
2903
 
2904
+ var _layers = _slicedToArray(layers, 1),
2905
+ clusterLayer = _layers[0];
2670
2906
 
2671
- return {
2672
- minZoom: 0,
2673
- maxZoom: 22
2674
- };
2907
+ return React.createElement(React.Fragment, null, React.createElement(PureMapContainer_1.default, {
2908
+ className: "puremap",
2909
+ width: width,
2910
+ height: height,
2911
+ backgroundColor: backgroundColor,
2912
+ controlBackgroundColor: controlBackgroundColor,
2913
+ controlForegroundColor: controlForegroundColor,
2914
+ controlIconColorEncoded: exports.formatColor(controlForegroundColor),
2915
+ ref: basemapContainer,
2916
+ showScale: showScale
2917
+ }, isMapLoaded && clusterLayer && React.createElement(ClusterLayer_1.default, {
2918
+ clusterLayer: clusterLayer,
2919
+ themeColorScheme: themeColorScheme,
2920
+ map: map,
2921
+ zoom: currentZoomLevel,
2922
+ onMapClick: onMapClick
2923
+ })));
2675
2924
  };
2676
2925
 
2677
- exports.getZoomConstraintsFromTileConfig = getZoomConstraintsFromTileConfig;
2926
+ var isLatLng = function isLatLng(props, propName, componentName) {
2927
+ if (!props[propName]) {
2928
+ return null;
2929
+ }
2678
2930
 
2679
- var getZoomLevelFromGeobin = function getZoomLevelFromGeobin(geobinStr) {
2680
- var _a;
2931
+ var latAbs = Math.abs(props[propName][0]);
2932
+ var lonAbs = Math.abs(props[propName][1]);
2933
+ var latlon = props[propName];
2681
2934
 
2682
- if (!geobinStr) {
2683
- return null;
2684
- } // geostats cmds return geobin with zoom level 0-18, 0-99 in the geobinPattern covers the range
2935
+ if (latAbs > MapUtils_1.MAX_LATITUDE && lonAbs <= MapUtils_1.MAX_LATITUDE) {
2936
+ throw new Error("".concat(componentName, " ").concat(propName, " may have reversed [lat, lon] ranges."));
2937
+ }
2685
2938
 
2939
+ if (!MapUtils_1.isValidLatLon(latlon)) {
2940
+ throw new Error("".concat(componentName, " ").concat(propName, " incorrect [lat, lon] ranges."));
2941
+ }
2686
2942
 
2687
- var geobinPattern = /bin_id_zl_([0-9]{0,2})?_y_/g;
2688
- var match = geobinPattern.exec(geobinStr);
2689
- return (_a = (match === null || match === void 0 ? void 0 : match.length) && parseInt(match[1], 10)) !== null && _a !== void 0 ? _a : null;
2943
+ return null;
2690
2944
  };
2691
2945
 
2692
- exports.getZoomLevelFromGeobin = getZoomLevelFromGeobin; // Bubble colors - static
2946
+ exports.isLatLng = isLatLng;
2947
+ PureMap.propTypes = {
2948
+ // eslint-disable-next-line react/no-unused-prop-types
2949
+ mode: T.string,
2950
+ width: T.oneOfType([T.string, T.number]),
2951
+ height: T.oneOfType([T.string, T.number]),
2952
+ backgroundColor: T.string,
2953
+ baseLayerTileServer: T.string,
2954
+ baseLayerTileServerType: T.string,
2955
+ center: exports.isLatLng,
2956
+ controlBackgroundColor: T.string,
2957
+ controlForegroundColor: T.string,
2958
+ layers: T.arrayOf(T.shape({
2959
+ type: T.string,
2960
+ latitude: T.arrayOf(T.number),
2961
+ longitude: T.arrayOf(T.number),
2962
+ label: T.string,
2963
+ showInLegend: T.bool,
2964
+ dataColors: T.oneOfType([T.string, T.arrayOf(T.string)]),
2965
+ seriesColors: T.arrayOf(T.string),
2966
+ additionalTooltipFields: T.arrayOf(T.string),
2967
+ resultLimit: T.number
2968
+ })),
2969
+ scaleUnit: T.string,
2970
+ showScale: T.bool,
2971
+ themeColorScheme: T.string,
2972
+ zoom: T.number,
2973
+ onMapLoad: T.func,
2974
+ onMapClick: T.func,
2975
+ onOptionsChange: T.func
2976
+ };
2977
+ PureMap.defaultProps = {
2978
+ mode: 'view',
2979
+ width: 800,
2980
+ height: 500,
2981
+ backgroundColor: '#0b0c0e',
2982
+ controlBackgroundColor: exports.DEFAULT_CONTROL_BACKGROUND_COLOR,
2983
+ controlForegroundColor: exports.DEFAULT_CONTROL_FOREGROUND_COLOR,
2984
+ scaleUnit: exports.DEFAULT_SCALE_UNIT,
2985
+ showScale: exports.DEFAULT_SHOW_SCALE,
2986
+ layers: [],
2987
+ themeColorScheme: 'dark',
2988
+ onMapLoad: lodash_1.noop,
2989
+ onMapClick: lodash_1.noop,
2990
+ onOptionsChange: lodash_1.noop
2991
+ };
2992
+ exports.default = PureMap;
2693
2993
 
2694
- var getStaticColors = function getStaticColors(colorCount, colorArray) {
2695
- if (colorCount < 0 || !colorCount) {
2696
- return [exports.DEFAULT_CLUSTER_COLOR];
2697
- }
2994
+ /***/ }),
2995
+ /* 196 */
2996
+ /***/ (function(module, exports) {
2698
2997
 
2699
- if (!colorArray || !colorArray.length) {
2700
- return _toConsumableArray(Array(colorCount).keys()).map(function (i) {
2701
- return exports.DEFAULT_SERIES_COLORS[i];
2702
- });
2703
- } // loop through colorArray to pick the first $colorCount colors
2704
- // start from begining again if colorCount > colorArray.length
2998
+ module.exports = require("chroma-js");
2705
2999
 
3000
+ /***/ }),
3001
+ /* 197 */
3002
+ /***/ (function(module, exports) {
2706
3003
 
2707
- return _toConsumableArray(Array(colorCount).keys()).map(function (i) {
2708
- return colorUtils_1.isColor(colorArray[i % colorArray.length]) ? colorArray[i % colorArray.length] : exports.DEFAULT_CLUSTER_COLOR;
2709
- });
2710
- };
3004
+ module.exports = require("@splunk/visualization-context/MapContext");
2711
3005
 
2712
- exports.getStaticColors = getStaticColors; // Bubble size
3006
+ /***/ }),
3007
+ /* 198 */
3008
+ /***/ (function(module, exports, __webpack_require__) {
2713
3009
 
2714
- var matchSize = function matchSize(dataRange, data) {
2715
- var size = d3_scale_1.scalePow().exponent(0.2).domain(dataRange).range([exports.MIN_BUBBLE_RADIUS, exports.MAX_BUBBLE_RADIUS])(data);
3010
+ "use strict";
2716
3011
 
2717
- if (size > exports.MAX_BUBBLE_RADIUS) {
2718
- return exports.MAX_BUBBLE_RADIUS;
2719
- }
2720
3012
 
2721
- if (size < exports.MIN_BUBBLE_RADIUS) {
2722
- return exports.MIN_BUBBLE_RADIUS;
2723
- }
3013
+ Object.defineProperty(exports, "__esModule", {
3014
+ value: true
3015
+ });
2724
3016
 
2725
- return size;
2726
- };
3017
+ var styled_components_1 = __webpack_require__(4);
2727
3018
 
2728
- exports.matchSize = matchSize;
3019
+ var lodash_1 = __webpack_require__(2);
2729
3020
 
2730
- var transposeArray = function transposeArray(array) {
2731
- if (!array || !array.length || !array[0] || !array[0].length) {
2732
- return [];
2733
- }
3021
+ var style_1 = __webpack_require__(14);
2734
3022
 
2735
- return array[0].map(function (_, i) {
2736
- return array.map(function (row) {
2737
- return row[i];
2738
- });
2739
- });
2740
- };
3023
+ var maplibre_gl_css_1 = __webpack_require__(199);
2741
3024
 
2742
- exports.transposeArray = transposeArray; // sanitize values: update all null, undefined, or negative values to 0
3025
+ var PureMapContainer = styled_components_1.default.div.withConfig({
3026
+ displayName: "PureMapContainer",
3027
+ componentId: "sc-1gjwxfv-0"
3028
+ })(["", " overflow:hidden;position:relative;z-index:0;background-color:", ";", ";.maplibregl-ctrl-top-left{position:absolute;top:12px;left:16px;.maplibregl-ctrl-group{width:40px !important;height:87px !important;border-radius:4px;margin:8px 0px;background-color:", ";box-shadow:0px 26px 103px rgba(0,0,0,0.64),0px 11px 18px rgba(0,0,0,0.32),0px 3px 6px rgba(0,0,0,0.3);& button{width:40px;height:43px;border-top:0;}.mapboxgl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url('data:image/svg+xml;charset=UTF-8,<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 1C9 0.447715 8.55229 0 8 0C7.44772 0 7 0.447715 7 1V7H1C0.447715 7 0 7.44772 0 8C0 8.55229 0.447715 9 1 9H7V15C7 15.5523 7.44772 16 8 16C8.55229 16 9 15.5523 9 15V9H15C15.5523 9 16 8.55229 16 8C16 7.44772 15.5523 7 15 7H9V1Z\" fill=\"", "\" fill-opacity=\"", "\" /></svg>');}.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url('data:image/svg+xml;charset=UTF-8,<svg width=\"14\" height=\"3\" viewBox=\"0 0 14 3\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 1.99707C0 1.44479 0.447715 0.99707 1 0.99707H13C13.5523 0.99707 14 1.44479 14 1.99707C14 2.54936 13.5523 2.99707 13 2.99707H1C0.447715 2.99707 0 2.54936 0 1.99707Z\" fill=\"", "\" fill-opacity=\"", "\" /></svg>');}}}.maplibregl-ctrl-bottom-left{display:", ";position:absolute;z-index:0;bottom:16px;left:12px;width:86px;height:29px;border-radius:4px;margin:0;background-color:", ";box-shadow:0px 26px 103px rgba(0,0,0,0.13),0px 11px 18px rgba(0,0,0,0.06),0px 3px 6px rgba(0,0,0,0.06);.maplibregl-ctrl-scale{background-color:", ";color:", ";border:2px solid ", ";border-top:0;border-left:0;border-right:0;padding:0;margin:6px 8px 8px 8px;line-height:13px;letter-spacing:0.02em;font-family:sans-serif;font-size:10px;}}"], maplibre_gl_css_1.default, function (props) {
3029
+ return props.backgroundColor;
3030
+ }, function (props) {
3031
+ return style_1.toDimension(lodash_1.pick(props, ['width', 'height']));
3032
+ }, function (props) {
3033
+ return props.controlBackgroundColor;
3034
+ }, function (props) {
3035
+ return props.controlIconColorEncoded.color;
3036
+ }, function (props) {
3037
+ return props.controlIconColorEncoded.opacity;
3038
+ }, function (props) {
3039
+ return props.controlIconColorEncoded.color;
3040
+ }, function (props) {
3041
+ return props.controlIconColorEncoded.opacity;
3042
+ }, function (props) {
3043
+ return props.showScale ? 'inline' : 'none';
3044
+ }, function (props) {
3045
+ return props.controlBackgroundColor;
3046
+ }, function (props) {
3047
+ return props.controlBackgroundColor;
3048
+ }, function (props) {
3049
+ return props.controlForegroundColor;
3050
+ }, function (props) {
3051
+ return props.controlForegroundColor;
3052
+ });
3053
+ exports.default = PureMapContainer;
2743
3054
 
2744
- var sanitizeValues = function sanitizeValues(values) {
2745
- // null / undefined
2746
- if (!values) {
2747
- return 0;
2748
- } // number
3055
+ /***/ }),
3056
+ /* 199 */
3057
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
2749
3058
 
3059
+ "use strict";
3060
+ __webpack_require__.r(__webpack_exports__);
3061
+ /* harmony default export */ __webpack_exports__["default"] = (".mapboxgl-map,.maplibregl-map{font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mapboxgl-canvas,.maplibregl-canvas{position:absolute;left:0;top:0}.mapboxgl-map:-webkit-full-screen,.maplibregl-map:-webkit-full-screen{width:100%;height:100%}.mapboxgl-canvas-container.mapboxgl-interactive,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass,.maplibregl-canvas-container.maplibregl-interactive,.maplibregl-ctrl-group button.maplibregl-ctrl-compass{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.mapboxgl-canvas-container.mapboxgl-interactive.mapboxgl-track-pointer,.maplibregl-canvas-container.maplibregl-interactive.maplibregl-track-pointer{cursor:pointer}.mapboxgl-canvas-container.mapboxgl-interactive:active,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass:active,.maplibregl-canvas-container.maplibregl-interactive:active,.maplibregl-ctrl-group button.maplibregl-ctrl-compass:active{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate .mapboxgl-canvas,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas{touch-action:pan-x pan-y}.mapboxgl-canvas-container.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-drag-pan .mapboxgl-canvas,.maplibregl-canvas-container.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:pinch-zoom}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan .mapboxgl-canvas,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:none}.mapboxgl-ctrl-bottom-left,.mapboxgl-ctrl-bottom-right,.mapboxgl-ctrl-top-left,.mapboxgl-ctrl-top-right,.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right,.maplibregl-ctrl-top-left,.maplibregl-ctrl-top-right{position:absolute;pointer-events:none;z-index:2}.mapboxgl-ctrl-top-left,.maplibregl-ctrl-top-left{top:0;left:0}.mapboxgl-ctrl-top-right,.maplibregl-ctrl-top-right{top:0;right:0}.mapboxgl-ctrl-bottom-left,.maplibregl-ctrl-bottom-left{bottom:0;left:0}.mapboxgl-ctrl-bottom-right,.maplibregl-ctrl-bottom-right{right:0;bottom:0}.mapboxgl-ctrl,.maplibregl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.mapboxgl-ctrl-top-left .mapboxgl-ctrl,.maplibregl-ctrl-top-left .maplibregl-ctrl{margin:10px 0 0 10px;float:left}.mapboxgl-ctrl-top-right .mapboxgl-ctrl,.maplibregl-ctrl-top-right .maplibregl-ctrl{margin:10px 10px 0 0;float:right}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl,.maplibregl-ctrl-bottom-left .maplibregl-ctrl{margin:0 0 10px 10px;float:left}.mapboxgl-ctrl-bottom-right .mapboxgl-ctrl,.maplibregl-ctrl-bottom-right .maplibregl-ctrl{margin:0 10px 10px 0;float:right}.mapboxgl-ctrl-group,.maplibregl-ctrl-group{border-radius:4px;background:#fff}.mapboxgl-ctrl-group:not(:empty),.maplibregl-ctrl-group:not(:empty){-moz-box-shadow:0 0 2px rgba(0,0,0,.1);-webkit-box-shadow:0 0 2px rgba(0,0,0,.1);box-shadow:0 0 0 2px rgba(0,0,0,.1)}@media (-ms-high-contrast:active){.mapboxgl-ctrl-group:not(:empty),.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.mapboxgl-ctrl-group button,.maplibregl-ctrl-group button{width:29px;height:29px;display:block;padding:0;outline:none;border:0;box-sizing:border-box;background-color:transparent;cursor:pointer}.mapboxgl-ctrl-group button+button,.maplibregl-ctrl-group button+button{border-top:1px solid #ddd}.mapboxgl-ctrl button .mapboxgl-ctrl-icon,.maplibregl-ctrl button .maplibregl-ctrl-icon{display:block;width:100%;height:100%;background-repeat:no-repeat;background-position:50%}@media (-ms-high-contrast:active){.mapboxgl-ctrl-icon,.maplibregl-ctrl-icon{background-color:transparent}.mapboxgl-ctrl-group button+button,.maplibregl-ctrl-group button+button{border-top:1px solid ButtonText}}.mapboxgl-ctrl button::-moz-focus-inner,.maplibregl-ctrl button::-moz-focus-inner{border:0;padding:0}.mapboxgl-ctrl-attrib-button:focus,.mapboxgl-ctrl-group button:focus,.maplibregl-ctrl-attrib-button:focus,.maplibregl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl button:disabled,.maplibregl-ctrl button:disabled{cursor:not-allowed}.mapboxgl-ctrl button:disabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button:disabled .maplibregl-ctrl-icon{opacity:.25}.mapboxgl-ctrl button:not(:disabled):hover,.maplibregl-ctrl button:not(:disabled):hover{background-color:rgba(0,0,0,.05)}.mapboxgl-ctrl-group button:focus:focus-visible,.maplibregl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl-group button:focus:not(:focus-visible),.maplibregl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.mapboxgl-ctrl-group button:focus:first-child,.maplibregl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.mapboxgl-ctrl-group button:focus:last-child,.maplibregl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.mapboxgl-ctrl-group button:focus:only-child,.maplibregl-ctrl-group button:focus:only-child{border-radius:inherit}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E\")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E\")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E\")}}.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E\")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E\")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E\")}}.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath d='M10.5 16l4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E\")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath d='M10.5 16l4 8 4-8h-8z' fill='%23999'/%3E%3C/svg%3E\")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath d='M10.5 16l4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E\")}}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23aaa'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='M14 5l1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-waiting .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-waiting .maplibregl-ctrl-icon{-webkit-animation:maplibregl-spin 2s linear infinite;-moz-animation:maplibregl-spin 2s infinite linear;-o-animation:maplibregl-spin 2s infinite linear;-ms-animation:maplibregl-spin 2s infinite linear;animation:maplibregl-spin 2s linear infinite}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23999'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='M14 5l1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3C/svg%3E\")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E\")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23666'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='M14 5l1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E\")}}@-webkit-keyframes maplibregl-spin{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@-moz-keyframes maplibregl-spin{0%{-moz-transform:rotate(0deg)}to{-moz-transform:rotate(1turn)}}@-o-keyframes maplibregl-spin{0%{-o-transform:rotate(0deg)}to{-o-transform:rotate(1turn)}}@-ms-keyframes maplibregl-spin{0%{-ms-transform:rotate(0deg)}to{-ms-transform:rotate(1turn)}}@keyframes maplibregl-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}a.mapboxgl-ctrl-logo,a.maplibregl-ctrl-logo{width:88px;height:23px;margin:0 0 -4px -4px;display:block;background-repeat:no-repeat;cursor:pointer;overflow:hidden;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42l-.726 3.663a1.255 1.255 0 01-1.232 1.011h-1.827a1.255 1.255 0 01-1.229-1.509l2.501-12.095a1.255 1.255 0 011.23-1.001h.197a1.255 1.255 0 011.12.685l3.19 6.273 3.125-6.263a1.255 1.255 0 011.123-.695h.181a1.255 1.255 0 011.227.991l1.443 6.71a5.11 5.11 0 01.314-.787l.009-.016a4.623 4.623 0 011.777-1.887c.782-.46 1.668-.667 2.611-.667a4.548 4.548 0 011.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 011.212.925 1.255 1.255 0 011.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4.314.319.566.676.763 1.064V4.701a1.255 1.255 0 011.255-1.255h1.86A1.255 1.255 0 0154.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.416 2.416 0 01-.682-1.71c0-.665.267-1.253.735-1.7a2.448 2.448 0 011.722-.674 2.43 2.43 0 011.705.675c.211.2.381.43.504.683V4.7a1.255 1.255 0 011.255-1.255h1.744A1.255 1.255 0 0165.812 4.7v3.335a4.76 4.76 0 011.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 011.67 1.743v-.98a1.255 1.255 0 011.256-1.256h1.777c.233 0 .451.064.639.174a3.407 3.407 0 011.567-.372c.346 0 .861.02 1.285.232a1.255 1.255 0 01.689 1.004 4.73 4.73 0 01.853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528 0 .343-.02.694-.056 1.051a1.255 1.255 0 01-.947 1.09l.408.952a1.255 1.255 0 01-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.815 5.815 0 01-.548-2.512c0-.286.017-.567.053-.843a1.255 1.255 0 01-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 01-1.256 1.256h-1.777a1.255 1.255 0 01-1.256-1.256V15.69l-.032.057a4.778 4.778 0 01-1.86 1.833 5.04 5.04 0 01-2.484.634 4.47 4.47 0 01-1.935-.424 1.252 1.252 0 01-.764.258h-1.71a1.255 1.255 0 01-1.256-1.255V7.687a2.402 2.402 0 01-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 01-1.256 1.255h-1.843a1.25 1.25 0 01-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 01-1.256-1.255v-1.251l-.061.117a4.703 4.703 0 01-1.782 1.884 4.767 4.767 0 01-2.485.67 5.6 5.6 0 01-1.485-.188l.009 2.764a1.255 1.255 0 01-1.255 1.259h-1.729a1.255 1.255 0 01-1.255-1.255v-3.537a1.255 1.255 0 01-1.167.793h-1.679a1.25 1.25 0 01-.77-.263 4.47 4.47 0 01-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a4.983 4.983 0 01-1.081-.836 1.255 1.255 0 01-1.254 1.312h-1.81a1.255 1.255 0 01-1.228-.99l-.782-3.625-2.044 3.939a1.255 1.255 0 01-1.115.676h-.098a1.255 1.255 0 01-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15c.329-.237.574-.499.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267c-.088-.22-.264-.438-.526-.658l-.032-.028a3.16 3.16 0 00-.668-.428l-.27-.12a3.293 3.293 0 00-1.235-.23c-.757 0-1.415.163-1.974.493a3.36 3.36 0 00-1.3 1.382c-.297.593-.444 1.284-.444 2.074 0 .8.17 1.503.51 2.107a3.795 3.795 0 001.382 1.381 3.883 3.883 0 001.893.477c.53 0 1.015-.11 1.455-.33zm-2.789-5.38c-.384.45-.575 1.038-.575 1.762 0 .735.186 1.332.559 1.794.384.45.933.675 1.645.675a2.25 2.25 0 00.934-.19 2.17 2.17 0 00.468-.29l.178-.161a2.163 2.163 0 00.397-.561c.163-.333.244-.717.244-1.15v-.115c0-.472-.098-.894-.296-1.267l-.043-.077a2.211 2.211 0 00-.633-.709l-.13-.086-.047-.028a2.099 2.099 0 00-1.073-.285c-.702 0-1.244.231-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.958.958 0 00-.353-.389.851.851 0 00-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.626 2.626 0 00.331.423c.213.22.464.402.755.548l.173.074c.433.17.93.255 1.49.255.68 0 1.295-.165 1.844-.493a3.447 3.447 0 001.316-1.4c.329-.603.493-1.299.493-2.089 0-1.273-.33-2.243-.988-2.913-.658-.68-1.52-1.02-2.584-1.02-.598 0-1.124.115-1.575.347a2.807 2.807 0 00-.415.262l-.199.166a3.35 3.35 0 00-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138c.137.193.297.36.48.5l.155.11.053.034c.34.197.713.297 1.119.297.714 0 1.262-.225 1.645-.675.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.29 0-.569.053-.835.16a2.366 2.366 0 00-.284.136 1.99 1.99 0 00-.363.254 2.237 2.237 0 00-.46.569l-.082.162a2.56 2.56 0 00-.213 1.072v.115c0 .471.098.894.296 1.267l.135.211zm.964-.818a1.11 1.11 0 00.367.385.937.937 0 00.476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a.995.995 0 00-.503.135l-.012.007a.859.859 0 00-.335.343c-.073.133-.132.324-.132.614v.115a1.43 1.43 0 00.14.66zm15.7-6.222c.232-.23.346-.516.346-.856a1.053 1.053 0 00-.345-.79 1.175 1.175 0 00-.84-.329c-.34 0-.625.11-.855.33a1.053 1.053 0 00-.346.79c0 .34.115.625.346.855.23.23.516.346.856.346.34 0 .62-.115.839-.346zm4.337 9.314l.033-1.332c.128.269.324.518.59.747l.098.081a3.727 3.727 0 00.316.224l.223.122a3.21 3.21 0 001.44.322 3.785 3.785 0 001.875-.477 3.52 3.52 0 001.382-1.366c.352-.593.526-1.29.526-2.09 0-.79-.147-1.48-.444-2.073a3.235 3.235 0 00-1.283-1.399c-.549-.34-1.195-.51-1.942-.51a3.476 3.476 0 00-1.527.344l-.086.043-.165.09a3.412 3.412 0 00-.33.214c-.288.21-.507.446-.656.707a1.893 1.893 0 00-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.482 2.482 0 00.566.7c.078.065.159.125.245.18l.144.08a2.105 2.105 0 00.975.232c.713 0 1.262-.225 1.645-.675.384-.46.576-1.053.576-1.778 0-.734-.192-1.327-.576-1.777-.373-.46-.921-.692-1.645-.692a2.18 2.18 0 00-1.015.235c-.147.075-.285.17-.415.282l-.15.142a2.086 2.086 0 00-.42.594c-.149.32-.223.685-.223 1.1v.115c0 .47.097.89.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.868.868 0 00-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.13 1.13 0 00.367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013c.23-.087.472-.134.724-.14l.069-.002c.329 0 .542.033.642.099l.247-1.794c-.13-.066-.37-.099-.717-.099a2.3 2.3 0 00-.545.063 2.086 2.086 0 00-.411.148 2.18 2.18 0 00-.4.249 2.482 2.482 0 00-.485.499 2.659 2.659 0 00-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884c0-.364.053-.678.159-.943a1.49 1.49 0 01.466-.636 2.52 2.52 0 01.399-.253 2.19 2.19 0 01.224-.099zm9.784 2.656l.05-.922c0-1.162-.285-2.062-.856-2.698-.559-.647-1.42-.97-2.584-.97-.746 0-1.415.163-2.007.493a3.462 3.462 0 00-1.4 1.382c-.329.604-.493 1.306-.493 2.106 0 .714.143 1.371.428 1.975.285.593.73 1.07 1.332 1.432.604.351 1.355.526 2.255.526.649 0 1.204-.062 1.668-.185l.044-.012.135-.04c.409-.122.736-.263.984-.421l-.542-1.267c-.2.108-.415.199-.642.274l-.297.087c-.34.088-.773.131-1.3.131-.636 0-1.135-.147-1.497-.444a1.573 1.573 0 01-.192-.193c-.244-.294-.415-.705-.512-1.234l-.004-.021h5.43zm-5.427-1.256l-.003.022h3.752v-.138c-.007-.485-.104-.857-.288-1.118a1.056 1.056 0 00-.156-.176c-.307-.285-.746-.428-1.316-.428-.657 0-1.155.202-1.494.604-.253.3-.417.712-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z' fill='%23000' fill-opacity='.4' fill-rule='evenodd'/%3E%3Cpath d='M19.63 11.151l-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81c-.68 0-1.311-.16-1.893-.478a3.795 3.795 0 01-1.381-1.382c-.34-.604-.51-1.306-.51-2.106 0-.79.147-1.482.444-2.074a3.364 3.364 0 011.3-1.382c.559-.33 1.217-.494 1.974-.494a3.293 3.293 0 011.234.231 3.341 3.341 0 01.97.575c.264.22.44.439.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332c-.186.395-.526.746-1.02 1.053a3.167 3.167 0 01-1.662.444zm.296-1.482c.626 0 1.152-.214 1.58-.642.428-.44.642-1.01.642-1.711v-.115c0-.472-.098-.894-.296-1.267a2.211 2.211 0 00-.807-.872 2.098 2.098 0 00-1.119-.313c-.702 0-1.245.231-1.629.692-.384.45-.575 1.037-.575 1.76 0 .736.186 1.333.559 1.795.384.45.933.675 1.645.675zm6.521-6.237h1.711v1.4c.604-1.065 1.547-1.597 2.83-1.597 1.064 0 1.926.34 2.584 1.02.659.67.988 1.641.988 2.914 0 .79-.164 1.487-.493 2.09a3.456 3.456 0 01-1.316 1.399 3.51 3.51 0 01-1.844.493c-.636 0-1.19-.11-1.662-.329a2.665 2.665 0 01-1.086-.97l.017 5.134h-1.728V9.242zm4.048 6.22c.714 0 1.262-.224 1.645-.674.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.395 0-.768.098-1.12.296-.34.187-.613.46-.822.823-.197.351-.296.763-.296 1.234v.115c0 .472.098.894.296 1.267.209.362.483.647.823.855.34.197.713.297 1.119.297z' fill='%23fff'/%3E%3Cpath d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.159 1.159 0 01-.856-.346 1.165 1.165 0 01-.346-.856 1.053 1.053 0 01.346-.79c.23-.219.516-.329.856-.329.329 0 .609.11.839.33a1.053 1.053 0 01.345.79 1.159 1.159 0 01-.345.855c-.22.23-.5.346-.84.346zm7.875 9.133a3.167 3.167 0 01-1.662-.444c-.482-.307-.817-.658-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283c.186-.438.548-.812 1.086-1.119a3.486 3.486 0 011.778-.477c.746 0 1.393.17 1.942.51a3.235 3.235 0 011.283 1.4c.297.592.444 1.282.444 2.072 0 .8-.175 1.498-.526 2.09a3.52 3.52 0 01-1.382 1.366 3.785 3.785 0 01-1.876.477zm-.296-1.481c.713 0 1.26-.225 1.645-.675.384-.46.577-1.053.577-1.778 0-.734-.193-1.327-.577-1.776-.373-.46-.921-.692-1.645-.692a2.115 2.115 0 00-1.58.659c-.428.428-.642.992-.642 1.694v.115c0 .473.098.895.296 1.267a2.385 2.385 0 00.807.872 2.1 2.1 0 001.119.313zm5.927-6.237h1.777v1.481c.176-.505.46-.91.856-1.217a2.14 2.14 0 011.349-.46c.351 0 .593.032.724.098l-.247 1.794c-.099-.066-.313-.099-.642-.099-.516 0-.988.164-1.416.494-.417.329-.626.855-.626 1.58v3.883h-1.777V9.242zm9.534 7.718c-.9 0-1.651-.175-2.255-.526-.603-.362-1.047-.84-1.332-1.432a4.567 4.567 0 01-.428-1.975c0-.8.164-1.502.493-2.106a3.462 3.462 0 011.4-1.382c.592-.33 1.262-.494 2.007-.494 1.163 0 2.024.324 2.584.97.57.637.856 1.537.856 2.7 0 .296-.017.603-.05.92h-5.43c.12.67.356 1.153.708 1.45.362.296.86.443 1.497.443.526 0 .96-.044 1.3-.131a4.123 4.123 0 00.938-.362l.542 1.267c-.274.175-.647.329-1.119.46-.472.132-1.042.197-1.711.197zm1.596-4.558c.01-.68-.137-1.158-.444-1.432-.307-.285-.746-.428-1.316-.428-1.152 0-1.815.62-1.991 1.86h3.752z' fill='%23e1e3e9'/%3E%3Cg fill-rule='evenodd' stroke-width='1.036'%3E%3Cpath d='M8.166 16.146l-.002.002a1.54 1.54 0 01-2.009 0l-.002-.002-.043-.034-.002-.002-.199-.162H4.377a.657.657 0 00-.659.659v1.84a.657.657 0 00.659.659h5.565a.657.657 0 00.659-.659v-1.84a.657.657 0 00-.659-.659H8.411l-.202.164zm-1.121-.905a.29.29 0 00.113.023.286.286 0 00.189-.07l.077-.063c.634-.508 4.672-3.743 4.672-7.575 0-2.55-2.215-4.625-4.938-4.625S2.221 5.006 2.221 7.556c0 3.225 2.86 6.027 4.144 7.137h.004l.04.038.484.4.077.063a.628.628 0 00.074.047zm-2.52-.548a16.898 16.898 0 01-1.183-1.315C2.187 11.942.967 9.897.967 7.555c0-3.319 2.855-5.88 6.192-5.88 3.338 0 6.193 2.561 6.193 5.881 0 2.34-1.22 4.387-2.376 5.822a16.898 16.898 0 01-1.182 1.315h.15a1.912 1.912 0 011.914 1.914v1.84a1.912 1.912 0 01-1.914 1.914H4.377a1.912 1.912 0 01-1.914-1.914v-1.84a1.912 1.912 0 011.914-1.914zm3.82-6.935c0 .692-.55 1.222-1.187 1.222s-1.185-.529-1.185-1.222.548-1.222 1.185-1.222c.638 0 1.186.529 1.186 1.222zm-1.186 2.477c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477zm2.048 7.71H5.114v-.838h4.093z' fill='%23000' fill-opacity='.4'/%3E%3Cpath d='M2.222 7.555c0-2.55 2.214-4.625 4.937-4.625 2.723 0 4.938 2.075 4.938 4.625 0 3.832-4.038 7.068-4.672 7.575l-.077.063a.286.286 0 01-.189.07.286.286 0 01-.188-.07l-.077-.063c-.634-.507-4.672-3.743-4.672-7.575zm4.937 2.68c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477z' fill='%23e1e3e9'/%3E%3Cpath d='M4.377 15.948a.657.657 0 00-.659.659v1.84a.657.657 0 00.659.659h5.565a.657.657 0 00.659-.659v-1.84a.657.657 0 00-.659-.659zm4.83 1.16H5.114v.838h4.093z' fill='%23fff'/%3E%3C/g%3E%3C/svg%3E\")}a.mapboxgl-ctrl-logo.mapboxgl-compact,a.maplibregl-ctrl-logo.maplibregl-compact{width:14px}@media (-ms-high-contrast:active){a.mapboxgl-ctrl-logo,a.maplibregl-ctrl-logo{background-color:transparent;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42l-.726 3.663a1.255 1.255 0 01-1.232 1.011h-1.827a1.255 1.255 0 01-1.229-1.509l2.501-12.095a1.255 1.255 0 011.23-1.001h.197a1.255 1.255 0 011.12.685l3.19 6.273 3.125-6.263a1.255 1.255 0 011.123-.695h.181a1.255 1.255 0 011.227.991l1.443 6.71a5.11 5.11 0 01.314-.787l.009-.016a4.623 4.623 0 011.777-1.887c.782-.46 1.668-.667 2.611-.667a4.548 4.548 0 011.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 011.212.925 1.255 1.255 0 011.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4.314.319.566.676.763 1.064V4.701a1.255 1.255 0 011.255-1.255h1.86A1.255 1.255 0 0154.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.416 2.416 0 01-.682-1.71c0-.665.267-1.253.735-1.7a2.448 2.448 0 011.722-.674 2.43 2.43 0 011.705.675c.211.2.381.43.504.683V4.7a1.255 1.255 0 011.255-1.255h1.744A1.255 1.255 0 0165.812 4.7v3.335a4.76 4.76 0 011.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 011.67 1.743v-.98a1.255 1.255 0 011.256-1.256h1.777c.233 0 .451.064.639.174a3.407 3.407 0 011.567-.372c.346 0 .861.02 1.285.232a1.255 1.255 0 01.689 1.004 4.73 4.73 0 01.853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528 0 .343-.02.694-.056 1.051a1.255 1.255 0 01-.947 1.09l.408.952a1.255 1.255 0 01-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.815 5.815 0 01-.548-2.512c0-.286.017-.567.053-.843a1.255 1.255 0 01-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 01-1.256 1.256h-1.777a1.255 1.255 0 01-1.256-1.256V15.69l-.032.057a4.778 4.778 0 01-1.86 1.833 5.04 5.04 0 01-2.484.634 4.47 4.47 0 01-1.935-.424 1.252 1.252 0 01-.764.258h-1.71a1.255 1.255 0 01-1.256-1.255V7.687a2.402 2.402 0 01-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 01-1.256 1.255h-1.843a1.25 1.25 0 01-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 01-1.256-1.255v-1.251l-.061.117a4.703 4.703 0 01-1.782 1.884 4.767 4.767 0 01-2.485.67 5.6 5.6 0 01-1.485-.188l.009 2.764a1.255 1.255 0 01-1.255 1.259h-1.729a1.255 1.255 0 01-1.255-1.255v-3.537a1.255 1.255 0 01-1.167.793h-1.679a1.25 1.25 0 01-.77-.263 4.47 4.47 0 01-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a4.983 4.983 0 01-1.081-.836 1.255 1.255 0 01-1.254 1.312h-1.81a1.255 1.255 0 01-1.228-.99l-.782-3.625-2.044 3.939a1.255 1.255 0 01-1.115.676h-.098a1.255 1.255 0 01-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15c.329-.237.574-.499.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267c-.088-.22-.264-.438-.526-.658l-.032-.028a3.16 3.16 0 00-.668-.428l-.27-.12a3.293 3.293 0 00-1.235-.23c-.757 0-1.415.163-1.974.493a3.36 3.36 0 00-1.3 1.382c-.297.593-.444 1.284-.444 2.074 0 .8.17 1.503.51 2.107a3.795 3.795 0 001.382 1.381 3.883 3.883 0 001.893.477c.53 0 1.015-.11 1.455-.33zm-2.789-5.38c-.384.45-.575 1.038-.575 1.762 0 .735.186 1.332.559 1.794.384.45.933.675 1.645.675a2.25 2.25 0 00.934-.19 2.17 2.17 0 00.468-.29l.178-.161a2.163 2.163 0 00.397-.561c.163-.333.244-.717.244-1.15v-.115c0-.472-.098-.894-.296-1.267l-.043-.077a2.211 2.211 0 00-.633-.709l-.13-.086-.047-.028a2.099 2.099 0 00-1.073-.285c-.702 0-1.244.231-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.958.958 0 00-.353-.389.851.851 0 00-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.626 2.626 0 00.331.423c.213.22.464.402.755.548l.173.074c.433.17.93.255 1.49.255.68 0 1.295-.165 1.844-.493a3.447 3.447 0 001.316-1.4c.329-.603.493-1.299.493-2.089 0-1.273-.33-2.243-.988-2.913-.658-.68-1.52-1.02-2.584-1.02-.598 0-1.124.115-1.575.347a2.807 2.807 0 00-.415.262l-.199.166a3.35 3.35 0 00-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138c.137.193.297.36.48.5l.155.11.053.034c.34.197.713.297 1.119.297.714 0 1.262-.225 1.645-.675.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.29 0-.569.053-.835.16a2.366 2.366 0 00-.284.136 1.99 1.99 0 00-.363.254 2.237 2.237 0 00-.46.569l-.082.162a2.56 2.56 0 00-.213 1.072v.115c0 .471.098.894.296 1.267l.135.211zm.964-.818a1.11 1.11 0 00.367.385.937.937 0 00.476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a.995.995 0 00-.503.135l-.012.007a.859.859 0 00-.335.343c-.073.133-.132.324-.132.614v.115a1.43 1.43 0 00.14.66zm15.7-6.222c.232-.23.346-.516.346-.856a1.053 1.053 0 00-.345-.79 1.175 1.175 0 00-.84-.329c-.34 0-.625.11-.855.33a1.053 1.053 0 00-.346.79c0 .34.115.625.346.855.23.23.516.346.856.346.34 0 .62-.115.839-.346zm4.337 9.314l.033-1.332c.128.269.324.518.59.747l.098.081a3.727 3.727 0 00.316.224l.223.122a3.21 3.21 0 001.44.322 3.785 3.785 0 001.875-.477 3.52 3.52 0 001.382-1.366c.352-.593.526-1.29.526-2.09 0-.79-.147-1.48-.444-2.073a3.235 3.235 0 00-1.283-1.399c-.549-.34-1.195-.51-1.942-.51a3.476 3.476 0 00-1.527.344l-.086.043-.165.09a3.412 3.412 0 00-.33.214c-.288.21-.507.446-.656.707a1.893 1.893 0 00-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.482 2.482 0 00.566.7c.078.065.159.125.245.18l.144.08a2.105 2.105 0 00.975.232c.713 0 1.262-.225 1.645-.675.384-.46.576-1.053.576-1.778 0-.734-.192-1.327-.576-1.777-.373-.46-.921-.692-1.645-.692a2.18 2.18 0 00-1.015.235c-.147.075-.285.17-.415.282l-.15.142a2.086 2.086 0 00-.42.594c-.149.32-.223.685-.223 1.1v.115c0 .47.097.89.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.868.868 0 00-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.13 1.13 0 00.367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013c.23-.087.472-.134.724-.14l.069-.002c.329 0 .542.033.642.099l.247-1.794c-.13-.066-.37-.099-.717-.099a2.3 2.3 0 00-.545.063 2.086 2.086 0 00-.411.148 2.18 2.18 0 00-.4.249 2.482 2.482 0 00-.485.499 2.659 2.659 0 00-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884c0-.364.053-.678.159-.943a1.49 1.49 0 01.466-.636 2.52 2.52 0 01.399-.253 2.19 2.19 0 01.224-.099zm9.784 2.656l.05-.922c0-1.162-.285-2.062-.856-2.698-.559-.647-1.42-.97-2.584-.97-.746 0-1.415.163-2.007.493a3.462 3.462 0 00-1.4 1.382c-.329.604-.493 1.306-.493 2.106 0 .714.143 1.371.428 1.975.285.593.73 1.07 1.332 1.432.604.351 1.355.526 2.255.526.649 0 1.204-.062 1.668-.185l.044-.012.135-.04c.409-.122.736-.263.984-.421l-.542-1.267c-.2.108-.415.199-.642.274l-.297.087c-.34.088-.773.131-1.3.131-.636 0-1.135-.147-1.497-.444a1.573 1.573 0 01-.192-.193c-.244-.294-.415-.705-.512-1.234l-.004-.021h5.43zm-5.427-1.256l-.003.022h3.752v-.138c-.007-.485-.104-.857-.288-1.118a1.056 1.056 0 00-.156-.176c-.307-.285-.746-.428-1.316-.428-.657 0-1.155.202-1.494.604-.253.3-.417.712-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z' fill='%23000' fill-opacity='.4' fill-rule='evenodd'/%3E%3Cpath d='M19.63 11.151l-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81c-.68 0-1.311-.16-1.893-.478a3.795 3.795 0 01-1.381-1.382c-.34-.604-.51-1.306-.51-2.106 0-.79.147-1.482.444-2.074a3.364 3.364 0 011.3-1.382c.559-.33 1.217-.494 1.974-.494a3.293 3.293 0 011.234.231 3.341 3.341 0 01.97.575c.264.22.44.439.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332c-.186.395-.526.746-1.02 1.053a3.167 3.167 0 01-1.662.444zm.296-1.482c.626 0 1.152-.214 1.58-.642.428-.44.642-1.01.642-1.711v-.115c0-.472-.098-.894-.296-1.267a2.211 2.211 0 00-.807-.872 2.098 2.098 0 00-1.119-.313c-.702 0-1.245.231-1.629.692-.384.45-.575 1.037-.575 1.76 0 .736.186 1.333.559 1.795.384.45.933.675 1.645.675zm6.521-6.237h1.711v1.4c.604-1.065 1.547-1.597 2.83-1.597 1.064 0 1.926.34 2.584 1.02.659.67.988 1.641.988 2.914 0 .79-.164 1.487-.493 2.09a3.456 3.456 0 01-1.316 1.399 3.51 3.51 0 01-1.844.493c-.636 0-1.19-.11-1.662-.329a2.665 2.665 0 01-1.086-.97l.017 5.134h-1.728V9.242zm4.048 6.22c.714 0 1.262-.224 1.645-.674.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.395 0-.768.098-1.12.296-.34.187-.613.46-.822.823-.197.351-.296.763-.296 1.234v.115c0 .472.098.894.296 1.267.209.362.483.647.823.855.34.197.713.297 1.119.297z' fill='%23fff'/%3E%3Cpath d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.159 1.159 0 01-.856-.346 1.165 1.165 0 01-.346-.856 1.053 1.053 0 01.346-.79c.23-.219.516-.329.856-.329.329 0 .609.11.839.33a1.053 1.053 0 01.345.79 1.159 1.159 0 01-.345.855c-.22.23-.5.346-.84.346zm7.875 9.133a3.167 3.167 0 01-1.662-.444c-.482-.307-.817-.658-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283c.186-.438.548-.812 1.086-1.119a3.486 3.486 0 011.778-.477c.746 0 1.393.17 1.942.51a3.235 3.235 0 011.283 1.4c.297.592.444 1.282.444 2.072 0 .8-.175 1.498-.526 2.09a3.52 3.52 0 01-1.382 1.366 3.785 3.785 0 01-1.876.477zm-.296-1.481c.713 0 1.26-.225 1.645-.675.384-.46.577-1.053.577-1.778 0-.734-.193-1.327-.577-1.776-.373-.46-.921-.692-1.645-.692a2.115 2.115 0 00-1.58.659c-.428.428-.642.992-.642 1.694v.115c0 .473.098.895.296 1.267a2.385 2.385 0 00.807.872 2.1 2.1 0 001.119.313zm5.927-6.237h1.777v1.481c.176-.505.46-.91.856-1.217a2.14 2.14 0 011.349-.46c.351 0 .593.032.724.098l-.247 1.794c-.099-.066-.313-.099-.642-.099-.516 0-.988.164-1.416.494-.417.329-.626.855-.626 1.58v3.883h-1.777V9.242zm9.534 7.718c-.9 0-1.651-.175-2.255-.526-.603-.362-1.047-.84-1.332-1.432a4.567 4.567 0 01-.428-1.975c0-.8.164-1.502.493-2.106a3.462 3.462 0 011.4-1.382c.592-.33 1.262-.494 2.007-.494 1.163 0 2.024.324 2.584.97.57.637.856 1.537.856 2.7 0 .296-.017.603-.05.92h-5.43c.12.67.356 1.153.708 1.45.362.296.86.443 1.497.443.526 0 .96-.044 1.3-.131a4.123 4.123 0 00.938-.362l.542 1.267c-.274.175-.647.329-1.119.46-.472.132-1.042.197-1.711.197zm1.596-4.558c.01-.68-.137-1.158-.444-1.432-.307-.285-.746-.428-1.316-.428-1.152 0-1.815.62-1.991 1.86h3.752z' fill='%23e1e3e9'/%3E%3Cg fill-rule='evenodd' stroke-width='1.036'%3E%3Cpath d='M8.166 16.146l-.002.002a1.54 1.54 0 01-2.009 0l-.002-.002-.043-.034-.002-.002-.199-.162H4.377a.657.657 0 00-.659.659v1.84a.657.657 0 00.659.659h5.565a.657.657 0 00.659-.659v-1.84a.657.657 0 00-.659-.659H8.411l-.202.164zm-1.121-.905a.29.29 0 00.113.023.286.286 0 00.189-.07l.077-.063c.634-.508 4.672-3.743 4.672-7.575 0-2.55-2.215-4.625-4.938-4.625S2.221 5.006 2.221 7.556c0 3.225 2.86 6.027 4.144 7.137h.004l.04.038.484.4.077.063a.628.628 0 00.074.047zm-2.52-.548a16.898 16.898 0 01-1.183-1.315C2.187 11.942.967 9.897.967 7.555c0-3.319 2.855-5.88 6.192-5.88 3.338 0 6.193 2.561 6.193 5.881 0 2.34-1.22 4.387-2.376 5.822a16.898 16.898 0 01-1.182 1.315h.15a1.912 1.912 0 011.914 1.914v1.84a1.912 1.912 0 01-1.914 1.914H4.377a1.912 1.912 0 01-1.914-1.914v-1.84a1.912 1.912 0 011.914-1.914zm3.82-6.935c0 .692-.55 1.222-1.187 1.222s-1.185-.529-1.185-1.222.548-1.222 1.185-1.222c.638 0 1.186.529 1.186 1.222zm-1.186 2.477c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477zm2.048 7.71H5.114v-.838h4.093z' fill='%23000' fill-opacity='.4'/%3E%3Cpath d='M2.222 7.555c0-2.55 2.214-4.625 4.937-4.625 2.723 0 4.938 2.075 4.938 4.625 0 3.832-4.038 7.068-4.672 7.575l-.077.063a.286.286 0 01-.189.07.286.286 0 01-.188-.07l-.077-.063c-.634-.507-4.672-3.743-4.672-7.575zm4.937 2.68c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477z' fill='%23e1e3e9'/%3E%3Cpath d='M4.377 15.948a.657.657 0 00-.659.659v1.84a.657.657 0 00.659.659h5.565a.657.657 0 00.659-.659v-1.84a.657.657 0 00-.659-.659zm4.83 1.16H5.114v.838h4.093z' fill='%23fff'/%3E%3C/g%3E%3C/svg%3E\")}}@media (-ms-high-contrast:black-on-white){a.mapboxgl-ctrl-logo,a.maplibregl-ctrl-logo{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42l-.726 3.663a1.255 1.255 0 01-1.232 1.011h-1.827a1.255 1.255 0 01-1.229-1.509l2.501-12.095a1.255 1.255 0 011.23-1.001h.197a1.255 1.255 0 011.12.685l3.19 6.273 3.125-6.263a1.255 1.255 0 011.123-.695h.181a1.255 1.255 0 011.227.991l1.443 6.71a5.11 5.11 0 01.314-.787l.009-.016a4.623 4.623 0 011.777-1.887c.782-.46 1.668-.667 2.611-.667a4.548 4.548 0 011.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 011.212.925 1.255 1.255 0 011.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4.314.319.566.676.763 1.064V4.701a1.255 1.255 0 011.255-1.255h1.86A1.255 1.255 0 0154.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.416 2.416 0 01-.682-1.71c0-.665.267-1.253.735-1.7a2.448 2.448 0 011.722-.674 2.43 2.43 0 011.705.675c.211.2.381.43.504.683V4.7a1.255 1.255 0 011.255-1.255h1.744A1.255 1.255 0 0165.812 4.7v3.335a4.76 4.76 0 011.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 011.67 1.743v-.98a1.255 1.255 0 011.256-1.256h1.777c.233 0 .451.064.639.174a3.407 3.407 0 011.567-.372c.346 0 .861.02 1.285.232a1.255 1.255 0 01.689 1.004 4.73 4.73 0 01.853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528 0 .343-.02.694-.056 1.051a1.255 1.255 0 01-.947 1.09l.408.952a1.255 1.255 0 01-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.815 5.815 0 01-.548-2.512c0-.286.017-.567.053-.843a1.255 1.255 0 01-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 01-1.256 1.256h-1.777a1.255 1.255 0 01-1.256-1.256V15.69l-.032.057a4.778 4.778 0 01-1.86 1.833 5.04 5.04 0 01-2.484.634 4.47 4.47 0 01-1.935-.424 1.252 1.252 0 01-.764.258h-1.71a1.255 1.255 0 01-1.256-1.255V7.687a2.402 2.402 0 01-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 01-1.256 1.255h-1.843a1.25 1.25 0 01-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 01-1.256-1.255v-1.251l-.061.117a4.703 4.703 0 01-1.782 1.884 4.767 4.767 0 01-2.485.67 5.6 5.6 0 01-1.485-.188l.009 2.764a1.255 1.255 0 01-1.255 1.259h-1.729a1.255 1.255 0 01-1.255-1.255v-3.537a1.255 1.255 0 01-1.167.793h-1.679a1.25 1.25 0 01-.77-.263 4.47 4.47 0 01-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a4.983 4.983 0 01-1.081-.836 1.255 1.255 0 01-1.254 1.312h-1.81a1.255 1.255 0 01-1.228-.99l-.782-3.625-2.044 3.939a1.255 1.255 0 01-1.115.676h-.098a1.255 1.255 0 01-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15c.329-.237.574-.499.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267c-.088-.22-.264-.438-.526-.658l-.032-.028a3.16 3.16 0 00-.668-.428l-.27-.12a3.293 3.293 0 00-1.235-.23c-.757 0-1.415.163-1.974.493a3.36 3.36 0 00-1.3 1.382c-.297.593-.444 1.284-.444 2.074 0 .8.17 1.503.51 2.107a3.795 3.795 0 001.382 1.381 3.883 3.883 0 001.893.477c.53 0 1.015-.11 1.455-.33zm-2.789-5.38c-.384.45-.575 1.038-.575 1.762 0 .735.186 1.332.559 1.794.384.45.933.675 1.645.675a2.25 2.25 0 00.934-.19 2.17 2.17 0 00.468-.29l.178-.161a2.163 2.163 0 00.397-.561c.163-.333.244-.717.244-1.15v-.115c0-.472-.098-.894-.296-1.267l-.043-.077a2.211 2.211 0 00-.633-.709l-.13-.086-.047-.028a2.099 2.099 0 00-1.073-.285c-.702 0-1.244.231-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.958.958 0 00-.353-.389.851.851 0 00-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.626 2.626 0 00.331.423c.213.22.464.402.755.548l.173.074c.433.17.93.255 1.49.255.68 0 1.295-.165 1.844-.493a3.447 3.447 0 001.316-1.4c.329-.603.493-1.299.493-2.089 0-1.273-.33-2.243-.988-2.913-.658-.68-1.52-1.02-2.584-1.02-.598 0-1.124.115-1.575.347a2.807 2.807 0 00-.415.262l-.199.166a3.35 3.35 0 00-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138c.137.193.297.36.48.5l.155.11.053.034c.34.197.713.297 1.119.297.714 0 1.262-.225 1.645-.675.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.29 0-.569.053-.835.16a2.366 2.366 0 00-.284.136 1.99 1.99 0 00-.363.254 2.237 2.237 0 00-.46.569l-.082.162a2.56 2.56 0 00-.213 1.072v.115c0 .471.098.894.296 1.267l.135.211zm.964-.818a1.11 1.11 0 00.367.385.937.937 0 00.476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a.995.995 0 00-.503.135l-.012.007a.859.859 0 00-.335.343c-.073.133-.132.324-.132.614v.115a1.43 1.43 0 00.14.66zm15.7-6.222c.232-.23.346-.516.346-.856a1.053 1.053 0 00-.345-.79 1.175 1.175 0 00-.84-.329c-.34 0-.625.11-.855.33a1.053 1.053 0 00-.346.79c0 .34.115.625.346.855.23.23.516.346.856.346.34 0 .62-.115.839-.346zm4.337 9.314l.033-1.332c.128.269.324.518.59.747l.098.081a3.727 3.727 0 00.316.224l.223.122a3.21 3.21 0 001.44.322 3.785 3.785 0 001.875-.477 3.52 3.52 0 001.382-1.366c.352-.593.526-1.29.526-2.09 0-.79-.147-1.48-.444-2.073a3.235 3.235 0 00-1.283-1.399c-.549-.34-1.195-.51-1.942-.51a3.476 3.476 0 00-1.527.344l-.086.043-.165.09a3.412 3.412 0 00-.33.214c-.288.21-.507.446-.656.707a1.893 1.893 0 00-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.482 2.482 0 00.566.7c.078.065.159.125.245.18l.144.08a2.105 2.105 0 00.975.232c.713 0 1.262-.225 1.645-.675.384-.46.576-1.053.576-1.778 0-.734-.192-1.327-.576-1.777-.373-.46-.921-.692-1.645-.692a2.18 2.18 0 00-1.015.235c-.147.075-.285.17-.415.282l-.15.142a2.086 2.086 0 00-.42.594c-.149.32-.223.685-.223 1.1v.115c0 .47.097.89.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.868.868 0 00-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.13 1.13 0 00.367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013c.23-.087.472-.134.724-.14l.069-.002c.329 0 .542.033.642.099l.247-1.794c-.13-.066-.37-.099-.717-.099a2.3 2.3 0 00-.545.063 2.086 2.086 0 00-.411.148 2.18 2.18 0 00-.4.249 2.482 2.482 0 00-.485.499 2.659 2.659 0 00-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884c0-.364.053-.678.159-.943a1.49 1.49 0 01.466-.636 2.52 2.52 0 01.399-.253 2.19 2.19 0 01.224-.099zm9.784 2.656l.05-.922c0-1.162-.285-2.062-.856-2.698-.559-.647-1.42-.97-2.584-.97-.746 0-1.415.163-2.007.493a3.462 3.462 0 00-1.4 1.382c-.329.604-.493 1.306-.493 2.106 0 .714.143 1.371.428 1.975.285.593.73 1.07 1.332 1.432.604.351 1.355.526 2.255.526.649 0 1.204-.062 1.668-.185l.044-.012.135-.04c.409-.122.736-.263.984-.421l-.542-1.267c-.2.108-.415.199-.642.274l-.297.087c-.34.088-.773.131-1.3.131-.636 0-1.135-.147-1.497-.444a1.573 1.573 0 01-.192-.193c-.244-.294-.415-.705-.512-1.234l-.004-.021h5.43zm-5.427-1.256l-.003.022h3.752v-.138c-.007-.485-.104-.857-.288-1.118a1.056 1.056 0 00-.156-.176c-.307-.285-.746-.428-1.316-.428-.657 0-1.155.202-1.494.604-.253.3-.417.712-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z' fill='%23000' fill-opacity='.4' fill-rule='evenodd'/%3E%3Cpath d='M19.63 11.151l-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81c-.68 0-1.311-.16-1.893-.478a3.795 3.795 0 01-1.381-1.382c-.34-.604-.51-1.306-.51-2.106 0-.79.147-1.482.444-2.074a3.364 3.364 0 011.3-1.382c.559-.33 1.217-.494 1.974-.494a3.293 3.293 0 011.234.231 3.341 3.341 0 01.97.575c.264.22.44.439.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332c-.186.395-.526.746-1.02 1.053a3.167 3.167 0 01-1.662.444zm.296-1.482c.626 0 1.152-.214 1.58-.642.428-.44.642-1.01.642-1.711v-.115c0-.472-.098-.894-.296-1.267a2.211 2.211 0 00-.807-.872 2.098 2.098 0 00-1.119-.313c-.702 0-1.245.231-1.629.692-.384.45-.575 1.037-.575 1.76 0 .736.186 1.333.559 1.795.384.45.933.675 1.645.675zm6.521-6.237h1.711v1.4c.604-1.065 1.547-1.597 2.83-1.597 1.064 0 1.926.34 2.584 1.02.659.67.988 1.641.988 2.914 0 .79-.164 1.487-.493 2.09a3.456 3.456 0 01-1.316 1.399 3.51 3.51 0 01-1.844.493c-.636 0-1.19-.11-1.662-.329a2.665 2.665 0 01-1.086-.97l.017 5.134h-1.728V9.242zm4.048 6.22c.714 0 1.262-.224 1.645-.674.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.395 0-.768.098-1.12.296-.34.187-.613.46-.822.823-.197.351-.296.763-.296 1.234v.115c0 .472.098.894.296 1.267.209.362.483.647.823.855.34.197.713.297 1.119.297z' fill='%23fff'/%3E%3Cpath d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.159 1.159 0 01-.856-.346 1.165 1.165 0 01-.346-.856 1.053 1.053 0 01.346-.79c.23-.219.516-.329.856-.329.329 0 .609.11.839.33a1.053 1.053 0 01.345.79 1.159 1.159 0 01-.345.855c-.22.23-.5.346-.84.346zm7.875 9.133a3.167 3.167 0 01-1.662-.444c-.482-.307-.817-.658-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283c.186-.438.548-.812 1.086-1.119a3.486 3.486 0 011.778-.477c.746 0 1.393.17 1.942.51a3.235 3.235 0 011.283 1.4c.297.592.444 1.282.444 2.072 0 .8-.175 1.498-.526 2.09a3.52 3.52 0 01-1.382 1.366 3.785 3.785 0 01-1.876.477zm-.296-1.481c.713 0 1.26-.225 1.645-.675.384-.46.577-1.053.577-1.778 0-.734-.193-1.327-.577-1.776-.373-.46-.921-.692-1.645-.692a2.115 2.115 0 00-1.58.659c-.428.428-.642.992-.642 1.694v.115c0 .473.098.895.296 1.267a2.385 2.385 0 00.807.872 2.1 2.1 0 001.119.313zm5.927-6.237h1.777v1.481c.176-.505.46-.91.856-1.217a2.14 2.14 0 011.349-.46c.351 0 .593.032.724.098l-.247 1.794c-.099-.066-.313-.099-.642-.099-.516 0-.988.164-1.416.494-.417.329-.626.855-.626 1.58v3.883h-1.777V9.242zm9.534 7.718c-.9 0-1.651-.175-2.255-.526-.603-.362-1.047-.84-1.332-1.432a4.567 4.567 0 01-.428-1.975c0-.8.164-1.502.493-2.106a3.462 3.462 0 011.4-1.382c.592-.33 1.262-.494 2.007-.494 1.163 0 2.024.324 2.584.97.57.637.856 1.537.856 2.7 0 .296-.017.603-.05.92h-5.43c.12.67.356 1.153.708 1.45.362.296.86.443 1.497.443.526 0 .96-.044 1.3-.131a4.123 4.123 0 00.938-.362l.542 1.267c-.274.175-.647.329-1.119.46-.472.132-1.042.197-1.711.197zm1.596-4.558c.01-.68-.137-1.158-.444-1.432-.307-.285-.746-.428-1.316-.428-1.152 0-1.815.62-1.991 1.86h3.752z' fill='%23e1e3e9'/%3E%3Cg fill-rule='evenodd' stroke-width='1.036'%3E%3Cpath d='M8.166 16.146l-.002.002a1.54 1.54 0 01-2.009 0l-.002-.002-.043-.034-.002-.002-.199-.162H4.377a.657.657 0 00-.659.659v1.84a.657.657 0 00.659.659h5.565a.657.657 0 00.659-.659v-1.84a.657.657 0 00-.659-.659H8.411l-.202.164zm-1.121-.905a.29.29 0 00.113.023.286.286 0 00.189-.07l.077-.063c.634-.508 4.672-3.743 4.672-7.575 0-2.55-2.215-4.625-4.938-4.625S2.221 5.006 2.221 7.556c0 3.225 2.86 6.027 4.144 7.137h.004l.04.038.484.4.077.063a.628.628 0 00.074.047zm-2.52-.548a16.898 16.898 0 01-1.183-1.315C2.187 11.942.967 9.897.967 7.555c0-3.319 2.855-5.88 6.192-5.88 3.338 0 6.193 2.561 6.193 5.881 0 2.34-1.22 4.387-2.376 5.822a16.898 16.898 0 01-1.182 1.315h.15a1.912 1.912 0 011.914 1.914v1.84a1.912 1.912 0 01-1.914 1.914H4.377a1.912 1.912 0 01-1.914-1.914v-1.84a1.912 1.912 0 011.914-1.914zm3.82-6.935c0 .692-.55 1.222-1.187 1.222s-1.185-.529-1.185-1.222.548-1.222 1.185-1.222c.638 0 1.186.529 1.186 1.222zm-1.186 2.477c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477zm2.048 7.71H5.114v-.838h4.093z' fill='%23000' fill-opacity='.4'/%3E%3Cpath d='M2.222 7.555c0-2.55 2.214-4.625 4.937-4.625 2.723 0 4.938 2.075 4.938 4.625 0 3.832-4.038 7.068-4.672 7.575l-.077.063a.286.286 0 01-.189.07.286.286 0 01-.188-.07l-.077-.063c-.634-.507-4.672-3.743-4.672-7.575zm4.937 2.68c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477z' fill='%23e1e3e9'/%3E%3Cpath d='M4.377 15.948a.657.657 0 00-.659.659v1.84a.657.657 0 00.659.659h5.565a.657.657 0 00.659-.659v-1.84a.657.657 0 00-.659-.659zm4.83 1.16H5.114v.838h4.093z' fill='%23fff'/%3E%3C/g%3E%3C/svg%3E\")}}.mapboxgl-ctrl.mapboxgl-ctrl-attrib,.maplibregl-ctrl.maplibregl-ctrl-attrib{padding:0 5px;background-color:hsla(0,0%,100%,.5);margin:0}@media screen{.mapboxgl-ctrl-attrib.mapboxgl-compact,.maplibregl-ctrl-attrib.maplibregl-compact{min-height:20px;padding:2px 24px 2px 0;margin:10px;position:relative;background-color:#fff;border-radius:12px}.mapboxgl-ctrl-attrib.mapboxgl-compact-show,.maplibregl-ctrl-attrib.maplibregl-compact-show{padding:2px 28px 2px 8px;visibility:visible}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact-show,.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact-show,.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact-show,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact-show{padding:2px 8px 2px 28px;border-radius:12px}.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner,.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner{display:none}.mapboxgl-ctrl-attrib-button,.maplibregl-ctrl-attrib-button{display:none;cursor:pointer;position:absolute;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E%3Cpath d='M4 10a6 6 0 1012 0 6 6 0 10-12 0m5-3a1 1 0 102 0 1 1 0 10-2 0m0 3a1 1 0 112 0v3a1 1 0 11-2 0'/%3E%3C/svg%3E\");background-color:hsla(0,0%,100%,.5);width:24px;height:24px;box-sizing:border-box;border-radius:12px;outline:none;top:0;right:0;border:0}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl-attrib-button,.mapboxgl-ctrl-top-left .mapboxgl-ctrl-attrib-button,.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-top-left .maplibregl-ctrl-attrib-button{left:0}.mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-inner,.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner,.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button{display:block}.mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button{background-color:rgba(0,0,0,.05)}.mapboxgl-ctrl-bottom-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-bottom-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;right:0}.mapboxgl-ctrl-top-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-top-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{top:0;right:0}.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{top:0;left:0}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;left:0}}@media screen and (-ms-high-contrast:active){.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd' fill='%23fff'%3E%3Cpath d='M4 10a6 6 0 1012 0 6 6 0 10-12 0m5-3a1 1 0 102 0 1 1 0 10-2 0m0 3a1 1 0 112 0v3a1 1 0 11-2 0'/%3E%3C/svg%3E\")}}@media screen and (-ms-high-contrast:black-on-white){.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E%3Cpath d='M4 10a6 6 0 1012 0 6 6 0 10-12 0m5-3a1 1 0 102 0 1 1 0 10-2 0m0 3a1 1 0 112 0v3a1 1 0 11-2 0'/%3E%3C/svg%3E\")}}.mapboxgl-ctrl-attrib a,.maplibregl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.mapboxgl-ctrl-attrib a:hover,.maplibregl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.mapboxgl-ctrl-attrib .mapbox-improve-map,.maplibregl-ctrl-attrib .mapbox-improve-map{font-weight:700;margin-left:2px}.mapboxgl-attrib-empty,.maplibregl-attrib-empty{display:none}.mapboxgl-ctrl-scale,.maplibregl-ctrl-scale{background-color:hsla(0,0%,100%,.75);font-size:10px;border:2px solid #333;border-top:#333;padding:0 5px;color:#333;box-sizing:border-box}.mapboxgl-popup,.maplibregl-popup{position:absolute;top:0;left:0;display:-webkit-flex;display:flex;will-change:transform;pointer-events:none}.mapboxgl-popup-anchor-top,.mapboxgl-popup-anchor-top-left,.mapboxgl-popup-anchor-top-right,.maplibregl-popup-anchor-top,.maplibregl-popup-anchor-top-left,.maplibregl-popup-anchor-top-right{-webkit-flex-direction:column;flex-direction:column}.mapboxgl-popup-anchor-bottom,.mapboxgl-popup-anchor-bottom-left,.mapboxgl-popup-anchor-bottom-right,.maplibregl-popup-anchor-bottom,.maplibregl-popup-anchor-bottom-left,.maplibregl-popup-anchor-bottom-right{-webkit-flex-direction:column-reverse;flex-direction:column-reverse}.mapboxgl-popup-anchor-left,.maplibregl-popup-anchor-left{-webkit-flex-direction:row;flex-direction:row}.mapboxgl-popup-anchor-right,.maplibregl-popup-anchor-right{-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.mapboxgl-popup-tip,.maplibregl-popup-tip{width:0;height:0;border:10px solid transparent;z-index:1}.mapboxgl-popup-anchor-top .mapboxgl-popup-tip,.maplibregl-popup-anchor-top .maplibregl-popup-tip{-webkit-align-self:center;align-self:center;border-top:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-tip,.maplibregl-popup-anchor-top-left .maplibregl-popup-tip{-webkit-align-self:flex-start;align-self:flex-start;border-top:none;border-left:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-tip,.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{-webkit-align-self:flex-end;align-self:flex-end;border-top:none;border-right:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip,.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{-webkit-align-self:center;align-self:center;border-bottom:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-tip,.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{-webkit-align-self:flex-start;align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-tip,.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{-webkit-align-self:flex-end;align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.mapboxgl-popup-anchor-left .mapboxgl-popup-tip,.maplibregl-popup-anchor-left .maplibregl-popup-tip{-webkit-align-self:center;align-self:center;border-left:none;border-right-color:#fff}.mapboxgl-popup-anchor-right .mapboxgl-popup-tip,.maplibregl-popup-anchor-right .maplibregl-popup-tip{-webkit-align-self:center;align-self:center;border-right:none;border-left-color:#fff}.mapboxgl-popup-close-button,.maplibregl-popup-close-button{position:absolute;right:0;top:0;border:0;border-radius:0 3px 0 0;cursor:pointer;background-color:transparent}.mapboxgl-popup-close-button:hover,.maplibregl-popup-close-button:hover{background-color:rgba(0,0,0,.05)}.mapboxgl-popup-content,.maplibregl-popup-content{position:relative;background:#fff;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.1);padding:10px 10px 15px;pointer-events:auto}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-content,.maplibregl-popup-anchor-top-left .maplibregl-popup-content{border-top-left-radius:0}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-content,.maplibregl-popup-anchor-top-right .maplibregl-popup-content{border-top-right-radius:0}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-content,.maplibregl-popup-anchor-bottom-left .maplibregl-popup-content{border-bottom-left-radius:0}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-content,.maplibregl-popup-anchor-bottom-right .maplibregl-popup-content{border-bottom-right-radius:0}.mapboxgl-popup-track-pointer,.maplibregl-popup-track-pointer{display:none}.mapboxgl-popup-track-pointer *,.maplibregl-popup-track-pointer *{pointer-events:none;user-select:none}.mapboxgl-map:hover .mapboxgl-popup-track-pointer,.maplibregl-map:hover .maplibregl-popup-track-pointer{display:flex}.mapboxgl-map:active .mapboxgl-popup-track-pointer,.maplibregl-map:active .maplibregl-popup-track-pointer{display:none}.mapboxgl-marker,.maplibregl-marker{position:absolute;top:0;left:0;will-change:transform}.mapboxgl-user-location-dot,.maplibregl-user-location-dot{background-color:#1da1f2;width:15px;height:15px;border-radius:50%}.mapboxgl-user-location-dot:before,.maplibregl-user-location-dot:before{background-color:#1da1f2;content:\"\";width:15px;height:15px;border-radius:50%;position:absolute;-webkit-animation:maplibregl-user-location-dot-pulse 2s infinite;-moz-animation:maplibregl-user-location-dot-pulse 2s infinite;-ms-animation:maplibregl-user-location-dot-pulse 2s infinite;animation:maplibregl-user-location-dot-pulse 2s infinite}.mapboxgl-user-location-dot:after,.maplibregl-user-location-dot:after{border-radius:50%;border:2px solid #fff;content:\"\";height:19px;left:-2px;position:absolute;top:-2px;width:19px;box-sizing:border-box;box-shadow:0 0 3px rgba(0,0,0,.35)}@-webkit-keyframes maplibregl-user-location-dot-pulse{0%{-webkit-transform:scale(1);opacity:1}70%{-webkit-transform:scale(3);opacity:0}to{-webkit-transform:scale(1);opacity:0}}@-ms-keyframes maplibregl-user-location-dot-pulse{0%{-ms-transform:scale(1);opacity:1}70%{-ms-transform:scale(3);opacity:0}to{-ms-transform:scale(1);opacity:0}}@keyframes maplibregl-user-location-dot-pulse{0%{transform:scale(1);opacity:1}70%{transform:scale(3);opacity:0}to{transform:scale(1);opacity:0}}.mapboxgl-user-location-dot-stale,.maplibregl-user-location-dot-stale{background-color:#aaa}.mapboxgl-user-location-dot-stale:after,.maplibregl-user-location-dot-stale:after{display:none}.mapboxgl-user-location-accuracy-circle,.maplibregl-user-location-accuracy-circle{background-color:rgba(29,161,242,.2);width:1px;height:1px;border-radius:100%}.mapboxgl-crosshair,.mapboxgl-crosshair .mapboxgl-interactive,.mapboxgl-crosshair .mapboxgl-interactive:active,.maplibregl-crosshair,.maplibregl-crosshair .maplibregl-interactive,.maplibregl-crosshair .maplibregl-interactive:active{cursor:crosshair}.mapboxgl-boxzoom,.maplibregl-boxzoom{position:absolute;top:0;left:0;width:0;height:0;background:#fff;border:2px dotted #202020;opacity:.5}@media print{.mapbox-improve-map{display:none}}");
2750
3062
 
2751
- if (!Array.isArray(values)) {
2752
- return values > 0 ? values : 0;
2753
- } // array
3063
+ /***/ }),
3064
+ /* 200 */
3065
+ /***/ (function(module, exports, __webpack_require__) {
2754
3066
 
3067
+ "use strict";
2755
3068
 
2756
- return values.map(function (arr) {
2757
- return exports.sanitizeValues(arr);
2758
- });
2759
- };
2760
3069
 
2761
- exports.sanitizeValues = sanitizeValues;
3070
+ Object.defineProperty(exports, "__esModule", {
3071
+ value: true
3072
+ });
2762
3073
 
2763
- var bakeBubbleData = function bakeBubbleData(layer) {
2764
- var _a;
3074
+ var React = __webpack_require__(1);
2765
3075
 
2766
- 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) {
2767
- return null;
2768
- } // if bubbleSize is passed as an array of single number array (data series)
2769
- // e.g. [value0, value1, ...]
2770
- // format each value as an array to unify data operations for data series and frames
3076
+ var BubbleLayer_1 = __webpack_require__(201);
2771
3077
 
3078
+ var MarkerLayer_1 = __webpack_require__(203);
2772
3079
 
2773
- var sanitizedBubbleSize = exports.sanitizeValues(layer.bubbleSize);
2774
- var transposedBubbleSize = layer.bubbleSize.map(function (n) {
2775
- return [n];
2776
- });
2777
- var transposedSanitizedBubbleSize = sanitizedBubbleSize.map(function (n) {
2778
- return [n];
2779
- });
2780
- var isPie = false; // format array if bubbleSize is passed as an array of array (data frame)
3080
+ var ClusterLayer = function ClusterLayer(_ref) {
3081
+ var clusterLayer = _ref.clusterLayer,
3082
+ themeColorScheme = _ref.themeColorScheme,
3083
+ zoom = _ref.zoom,
3084
+ map = _ref.map,
3085
+ onMapClick = _ref.onMapClick;
2781
3086
 
2782
- if (typeof layer.bubbleSize[0] !== 'number') {
2783
- // one-time array transpose,
2784
- // e.g. from [column0data, column0data] (multi series)
2785
- // to [[column0datum0, column1datum0], [column0datum1, column1data1], ...]
2786
- // or e.g. from [column0data] (single series)
2787
- // to [[column0data]]
2788
- // for easy access of values at each geo location,
2789
- // and min max pie size computation
2790
- transposedBubbleSize = exports.transposeArray(layer.bubbleSize);
2791
- transposedSanitizedBubbleSize = exports.transposeArray(sanitizedBubbleSize); // if multiple series in the dataframe, set isPie to true
3087
+ var _a;
2792
3088
 
2793
- if (layer.bubbleSize.length > 1) {
2794
- isPie = true;
3089
+ if (((_a = map === null || map === void 0 ? void 0 : map.current) === null || _a === void 0 ? void 0 : _a.isStyleLoaded) && [clusterLayer.longitude, clusterLayer.latitude].every(Array.isArray)) {
3090
+ if ((clusterLayer === null || clusterLayer === void 0 ? void 0 : clusterLayer.type) === 'marker' && !('geobin' in clusterLayer)) {
3091
+ return React.createElement(MarkerLayer_1.default, {
3092
+ markerLayer: clusterLayer,
3093
+ themeColorScheme: themeColorScheme,
3094
+ map: map,
3095
+ onMapClick: onMapClick
3096
+ });
2795
3097
  }
2796
- }
2797
3098
 
2798
- if (!transposedBubbleSize || !transposedBubbleSize.length) {
2799
- return null;
3099
+ if ((clusterLayer === null || clusterLayer === void 0 ? void 0 : clusterLayer.type) === 'bubble' && 'geobin' in clusterLayer && 'bubbleSize' in clusterLayer) {
3100
+ return React.createElement(BubbleLayer_1.default, {
3101
+ bubbleLayer: clusterLayer,
3102
+ themeColorScheme: themeColorScheme,
3103
+ map: map,
3104
+ zoom: zoom,
3105
+ onMapClick: onMapClick
3106
+ });
3107
+ }
2800
3108
  }
2801
3109
 
2802
- var data = layer.latitude.map(function (lat, i) {
2803
- return {
2804
- zoom: exports.getZoomLevelFromGeobin(layer.geobin[i]),
2805
- values: transposedBubbleSize[i],
2806
- sanitizedValues: transposedSanitizedBubbleSize[i],
2807
- coordinates: [layer.longitude[i], lat]
2808
- };
2809
- }).filter(function (d) {
2810
- return Boolean(d.values);
2811
- }); // compute the min/max value to encode min/max pie or bubble size
2812
-
2813
- var min = lodash_1.sum(transposedSanitizedBubbleSize[0]);
2814
- var max = lodash_1.sum(transposedSanitizedBubbleSize[1]);
2815
- transposedSanitizedBubbleSize.forEach(function (row) {
2816
- var bubbleSize = lodash_1.sum(row);
2817
- max = bubbleSize > max ? bubbleSize : max;
2818
- min = bubbleSize < min ? bubbleSize : min;
2819
- });
2820
- return {
2821
- data: data,
2822
- dataRange: [min, max],
2823
- isPie: isPie,
2824
- resultLimit: layer.resultLimit,
2825
- bubbleSizeFields: layer.bubbleSizeFields
2826
- };
3110
+ return null;
2827
3111
  };
2828
3112
 
2829
- exports.bakeBubbleData = bakeBubbleData; // Update bubbles on each zoom level
2830
-
2831
- var updateBubbles = function updateBubbles(dataObj, zoomLevel, staticColors, dynamicColors, theme, map, setTooltipProps) {
2832
- if (!dataObj || !dataObj.data.length || !map || !map.current) {
2833
- return null;
2834
- }
2835
-
2836
- var data = dataObj.data,
2837
- dataRange = dataObj.dataRange,
2838
- resultLimit = dataObj.resultLimit,
2839
- bubbleSizeFields = dataObj.bubbleSizeFields,
2840
- isPie = dataObj.isPie;
2841
-
2842
- if (!data || !data.length || !dataRange || !dataRange.length) {
2843
- return null;
2844
- }
3113
+ exports.default = ClusterLayer;
2845
3114
 
2846
- var roundedZoom = Math.round(zoomLevel);
2847
- var themeColor = theme === 'light' ? '#ffffff' : '#1a1c20'; // filter data for the current zoom level and sort base on values
3115
+ /***/ }),
3116
+ /* 201 */
3117
+ /***/ (function(module, exports, __webpack_require__) {
2848
3118
 
2849
- var dataToRender = data.reduce(function (acc, datum, i) {
2850
- if (datum.zoom === roundedZoom) {
2851
- acc.push({
2852
- data: datum,
2853
- idx: i
2854
- });
2855
- }
3119
+ "use strict";
2856
3120
 
2857
- return acc;
2858
- }, []).slice(0, resultLimit || exports.DEFAULT_RESULT_LIMIT).sort(function (a, b) {
2859
- return lodash_1.sum(b.data.values) - lodash_1.sum(a.data.values);
2860
- });
2861
- return dataToRender.map(function (datum, i) {
2862
- // create an HTML element for each bubble
2863
- var colors = dynamicColors ? [dataToRender.map(function (obj) {
2864
- return colorUtils_1.isColor(dynamicColors[obj.idx]) ? dynamicColors[obj.idx] : exports.DEFAULT_CLUSTER_COLOR;
2865
- })[i]] : staticColors;
2866
- var el = exports.createPieChart(datum.data.sanitizedValues, dataRange, colors, themeColor, isPie);
2867
3121
 
2868
- var _datum$data$coordinat = _slicedToArray(datum.data.coordinates, 2),
2869
- longitude = _datum$data$coordinat[0],
2870
- latitude = _datum$data$coordinat[1];
3122
+ var _slicedToArray = __webpack_require__(51);
2871
3123
 
2872
- var bubbleSize = datum.data.values.map(function (count, index) {
2873
- return {
2874
- name: bubbleSizeFields[index],
2875
- count: count,
2876
- color: colors[index]
2877
- };
2878
- });
2879
- el.addEventListener('mouseover', function () {
2880
- setTooltipProps({
2881
- anchor: el,
2882
- longitude: longitude,
2883
- latitude: latitude,
2884
- bubbleSize: bubbleSize
2885
- });
2886
- });
2887
- el.addEventListener('mouseleave', function () {
2888
- setTooltipProps({
2889
- longitude: longitude,
2890
- latitude: latitude,
2891
- bubbleSize: bubbleSize
2892
- });
2893
- });
2894
- return new maplibre_gl_1.Marker({
2895
- element: el
2896
- }).setLngLat(datum.data.coordinates).addTo(map.current);
2897
- });
2898
- };
3124
+ var _defineProperty = __webpack_require__(7);
2899
3125
 
2900
- exports.updateBubbles = updateBubbles; // Create an SVG pie from column values
3126
+ var _toConsumableArray = __webpack_require__(41);
2901
3127
 
2902
- var createPieChart = function createPieChart(orginalValues, valueRange, colors, themeColor, isPie) {
2903
- // create a div for pie (bubble)
2904
- var el = document.createElement('div');
2905
- var allZeros = true;
2906
- orginalValues.forEach(function (v) {
2907
- if (v !== 0) {
2908
- allZeros = false;
2909
- }
2910
- });
3128
+ Object.defineProperty(exports, "__esModule", {
3129
+ value: true
3130
+ });
3131
+ exports.Bubble = exports.PieSegment = void 0;
2911
3132
 
2912
- if (allZeros || !orginalValues || !orginalValues.length) {
2913
- return el;
2914
- } // sanitize values
3133
+ var React = __webpack_require__(1);
2915
3134
 
3135
+ var styled_components_1 = __webpack_require__(4);
2916
3136
 
2917
- var values = orginalValues.map(function (v) {
2918
- return v > 0 ? v : 0;
2919
- }); // compute offsets for pie segments
3137
+ var lodash_1 = __webpack_require__(2);
2920
3138
 
2921
- var offsets = [];
2922
- var total = 0;
2923
- values.forEach(function (count) {
2924
- offsets.push(total);
2925
- total += count;
2926
- });
2927
- var radius = exports.matchSize(valueRange, total);
2928
- var width = radius * 2; // create bubble svg
3139
+ var colorUtils_1 = __webpack_require__(12);
2929
3140
 
2930
- var html = "<div>\n <svg width=\"".concat(width, "\" height=\"").concat(width, "\" viewbox=\"-3 -3 ").concat(width + 6, " ").concat(width + 6, "\" >"); // add border for pie
3141
+ var MapUtils_1 = __webpack_require__(105);
2931
3142
 
2932
- if (isPie) {
2933
- html += "<circle cx=".concat(radius, " cy=").concat(radius, " r=").concat(radius, " fill='none' stroke-width=\"2\" stroke=").concat(themeColor, " stroke-opacity=\"0.3\"/>");
2934
- } // create pie segments
3143
+ var MarkerWrapper_1 = __webpack_require__(129);
2935
3144
 
3145
+ exports.PieSegment = React.memo(function (_ref) {
3146
+ var start = _ref.start,
3147
+ end = _ref.end,
3148
+ radius = _ref.radius,
3149
+ color = _ref.color,
3150
+ themeColor = _ref.themeColor,
3151
+ segmentMetadata = _ref.segmentMetadata,
3152
+ handleBubbleClick = _ref.handleBubbleClick;
2936
3153
 
2937
- values.forEach(function (v, i) {
2938
- html += exports.pieSegment(offsets[i] / total, (offsets[i] + v) / total, radius, colors[i], themeColor);
2939
- });
2940
- html += "</svg>\n </div>";
2941
- el.className = 'custom-bubble';
2942
- el.innerHTML = html;
2943
- return el;
2944
- };
3154
+ var _ref2 = segmentMetadata !== null && segmentMetadata !== void 0 ? segmentMetadata : {},
3155
+ name = _ref2.name,
3156
+ value = _ref2.value;
2945
3157
 
2946
- exports.createPieChart = createPieChart; // Create a pie segment
3158
+ var handleSegmentClick = React.useCallback(function (e) {
3159
+ handleBubbleClick(e, name, value);
3160
+ }, [name, value, handleBubbleClick]);
2947
3161
 
2948
- var pieSegment = function pieSegment(start, end, radius, color, themeColor) {
2949
3162
  if (end - start === 1) {
2950
- return "<circle cx=".concat(radius, " cy=").concat(radius, " r=").concat(radius - 1, " fill=").concat(color, " fill-opacity=\"0.5\" stroke-width=\"1.5\" stroke=").concat(color, " />");
3163
+ return React.createElement("circle", {
3164
+ onClick: handleSegmentClick,
3165
+ cx: radius,
3166
+ cy: radius,
3167
+ r: radius - 1,
3168
+ fill: color,
3169
+ fillOpacity: 0.5,
3170
+ strokeWidth: 1.5,
3171
+ stroke: color
3172
+ });
2951
3173
  }
2952
3174
 
2953
3175
  var a0 = 2 * Math.PI * (start - 0.25);
@@ -2957,37 +3179,209 @@ var pieSegment = function pieSegment(start, end, radius, color, themeColor) {
2957
3179
  var x1 = Math.cos(a1);
2958
3180
  var y1 = Math.sin(a1);
2959
3181
  var arc = end - start > 0.5 ? 1 : 0;
2960
- return "<path 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, "\" fill=\"").concat(color, "\" fill-opacity=\"0.8\" stroke=\"").concat(themeColor, "\" stroke-width=\"2\" stroke-opacity=\"0.3\" />");
2961
- };
3182
+ return React.createElement("path", {
3183
+ onClick: handleSegmentClick,
3184
+ 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),
3185
+ fill: color,
3186
+ fillOpacity: 0.8,
3187
+ stroke: themeColor,
3188
+ strokeWidth: 2,
3189
+ strokeOpacity: 0.3
3190
+ });
3191
+ });
3192
+ exports.PieSegment.displayName = 'MapBubblePieSegment';
3193
+ var StyledMarkerWrapper = styled_components_1.default(MarkerWrapper_1.default).withConfig({
3194
+ displayName: "BubbleLayer__StyledMarkerWrapper",
3195
+ componentId: "sc-8aqbb-0"
3196
+ })(["cursor:pointer;"]);
3197
+ exports.Bubble = React.memo(function (_ref3) {
3198
+ var originalValues = _ref3.originalValues,
3199
+ valueRange = _ref3.valueRange,
3200
+ colors = _ref3.colors,
3201
+ themeColor = _ref3.themeColor,
3202
+ isPie = _ref3.isPie,
3203
+ latitude = _ref3.latitude,
3204
+ longitude = _ref3.longitude,
3205
+ bubbleSize = _ref3.bubbleSize,
3206
+ _ref3$additionalField = _ref3.additionalFields,
3207
+ additionalFields = _ref3$additionalField === void 0 ? [] : _ref3$additionalField,
3208
+ map = _ref3.map,
3209
+ handleMapClick = _ref3.handleMapClick;
3210
+ var onBubbleClick = React.useCallback(function (e, name, value) {
3211
+ handleMapClick(e, name, value);
3212
+ e.stopPropagation();
3213
+ }, [bubbleSize]);
3214
+ var bubble = React.useMemo(function () {
3215
+ var allZeros = originalValues.every(function (v) {
3216
+ return v === 0;
3217
+ });
2962
3218
 
2963
- exports.pieSegment = pieSegment;
3219
+ if (allZeros || !originalValues.length) {
3220
+ return null;
3221
+ } // sanitize values
2964
3222
 
2965
- /***/ }),
2966
- /* 198 */
2967
- /***/ (function(module, exports, __webpack_require__) {
2968
3223
 
2969
- "use strict";
3224
+ var values = originalValues.map(function (v) {
3225
+ return v > 0 ? v : 0;
3226
+ }); // compute offsets for pie segments
2970
3227
 
3228
+ var offsets = [];
3229
+ var total = 0;
3230
+ values.forEach(function (count) {
3231
+ offsets.push(total);
3232
+ total += count;
3233
+ });
3234
+ var radius = MapUtils_1.matchBubbleSize(valueRange, total);
3235
+ var width = radius * 2;
3236
+ return React.createElement("svg", {
3237
+ width: width,
3238
+ height: width,
3239
+ viewBox: "-3 -3 ".concat(width + 6, " ").concat(width + 6)
3240
+ }, isPie ? React.createElement("circle", {
3241
+ cx: radius,
3242
+ cy: radius,
3243
+ r: radius,
3244
+ fill: "none",
3245
+ strokeWidth: 2,
3246
+ stroke: themeColor,
3247
+ strokeOpacity: 0.3
3248
+ }) : null, values.map(function (v, i) {
3249
+ return React.createElement(exports.PieSegment, {
3250
+ key: String(i),
3251
+ start: offsets[i] / total,
3252
+ end: (offsets[i] + v) / total,
3253
+ radius: radius,
3254
+ color: colors[i],
3255
+ themeColor: themeColor,
3256
+ segmentMetadata: bubbleSize[i],
3257
+ handleBubbleClick: onBubbleClick
3258
+ });
3259
+ }));
3260
+ }, [colors, isPie, originalValues, themeColor, valueRange]);
2971
3261
 
2972
- Object.defineProperty(exports, "__esModule", {
2973
- value: true
3262
+ if (!bubble) {
3263
+ return null;
3264
+ }
3265
+
3266
+ return React.createElement(StyledMarkerWrapper, {
3267
+ longitude: longitude,
3268
+ latitude: latitude,
3269
+ additionalFields: [].concat(_toConsumableArray(bubbleSize), _toConsumableArray(additionalFields)),
3270
+ map: map,
3271
+ "data-test-type": "bubble"
3272
+ }, bubble);
2974
3273
  });
2975
- exports.defaultMarkerDarkTheme = exports.defaultMarkerLightTheme = void 0;
3274
+ exports.Bubble.displayName = 'MapBubble';
2976
3275
 
2977
- var defaultMarkerLightTheme = function defaultMarkerLightTheme(fillColor) {
2978
- return "<svg width=\"22\" height=\"28\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11 .5C5.201.5.5 5.201.5 11c0 3.136 1.376 5.952 3.555 7.875 2.839 2.506 4.144 4.58 4.893 6.02.183.35.334.665.469.946l.014.03c.136.285.263.548.387.766.235.412.571.863 1.182.863.61 0 .947-.45 1.182-.863.124-.218.25-.48.387-.765l.014-.03c.135-.282.286-.597.469-.947.75-1.44 2.054-3.514 4.893-6.02A10.476 10.476 0 0 0 21.5 11C21.5 5.201 16.799.5 11 .5Z\" fill=\"".concat(fillColor, "\"/><path d=\"M11 .5C5.201.5.5 5.201.5 11c0 3.136 1.376 5.952 3.555 7.875 2.839 2.506 4.144 4.58 4.893 6.02.183.35.334.665.469.946l.014.03c.136.285.263.548.387.766.235.412.571.863 1.182.863.61 0 .947-.45 1.182-.863.124-.218.25-.48.387-.765l.014-.03c.135-.282.286-.597.469-.947.75-1.44 2.054-3.514 4.893-6.02A10.476 10.476 0 0 0 21.5 11C21.5 5.201 16.799.5 11 .5Z\" stroke=\"%2308090A\"/><path d=\"M11 .5C5.201.5.5 5.201.5 11c0 3.136 1.376 5.952 3.555 7.875 2.839 2.506 4.144 4.58 4.893 6.02.183.35.334.665.469.946l.014.03c.136.285.263.548.387.766.235.412.571.863 1.182.863.61 0 .947-.45 1.182-.863.124-.218.25-.48.387-.765l.014-.03c.135-.282.286-.597.469-.947.75-1.44 2.054-3.514 4.893-6.02A10.476 10.476 0 0 0 21.5 11C21.5 5.201 16.799.5 11 .5Z\" stroke=\"").concat(fillColor, "\" stroke-opacity=\".7\"/></svg>");
2979
- };
3276
+ var BubbleLayer = function BubbleLayer(props) {
3277
+ var bubbleLayer = props.bubbleLayer,
3278
+ themeColorScheme = props.themeColorScheme,
3279
+ map = props.map,
3280
+ zoom = props.zoom,
3281
+ onMapClick = props.onMapClick;
3282
+ bubbleLayer.seriesColors = bubbleLayer.seriesColors || MapUtils_1.DEFAULT_SERIES_COLORS;
3283
+ bubbleLayer.bubbleSize = bubbleLayer.bubbleSize || [];
3284
+ var bakedData = React.useMemo(function () {
3285
+ return MapUtils_1.bakeBubbleData(bubbleLayer);
3286
+ }, [bubbleLayer]);
3287
+ var staticColors = React.useMemo(function () {
3288
+ return MapUtils_1.getStaticColors(bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors);
3289
+ }, [bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors]);
3290
+
3291
+ var _ref4 = bakedData !== null && bakedData !== void 0 ? bakedData : {},
3292
+ _ref4$data = _ref4.data,
3293
+ data = _ref4$data === void 0 ? [] : _ref4$data,
3294
+ _ref4$dataRange = _ref4.dataRange,
3295
+ dataRange = _ref4$dataRange === void 0 ? [] : _ref4$dataRange,
3296
+ resultLimit = _ref4.resultLimit,
3297
+ bubbleSizeFields = _ref4.bubbleSizeFields,
3298
+ isPie = _ref4.isPie;
3299
+
3300
+ var _bubbleLayer$addition = bubbleLayer.additionalTooltipFields,
3301
+ additionalTooltipFields = _bubbleLayer$addition === void 0 ? [] : _bubbleLayer$addition;
3302
+ var roundedZoom = Math.round(zoom);
3303
+ var themeColor = themeColorScheme === 'light' ? '#ffffff' : '#1a1c20';
3304
+ var dynamicColors = bubbleLayer.dataColors; // filter data for the current zoom level and sort base on values
3305
+
3306
+ var dataToRender = React.useMemo(function () {
3307
+ return data.reduce(function (acc, datum, i) {
3308
+ if (datum.zoom === roundedZoom) {
3309
+ acc.push({
3310
+ data: datum,
3311
+ idx: i
3312
+ });
3313
+ }
3314
+
3315
+ return acc;
3316
+ }, []).slice(0, resultLimit || MapUtils_1.DEFAULT_RESULT_LIMIT).sort(function (a, b) {
3317
+ return lodash_1.sum(b.data.values) - lodash_1.sum(a.data.values);
3318
+ });
3319
+ }, [data, resultLimit, roundedZoom]);
3320
+
3321
+ var _handleMapClick = React.useCallback(function (e, name, value, i) {
3322
+ var _a, _b, _c; // retrieve metadata from the appropriate datum, indexed by i
3323
+
3324
+
3325
+ 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 : {};
3326
+ var payload = Object.keys(metadata).reduce(function (acc, curr) {
3327
+ var key = "row.".concat(curr, ".value");
3328
+ var val = String(metadata[curr]);
3329
+ return Object.assign(Object.assign({}, acc), _defineProperty({}, key, val));
3330
+ }, {
3331
+ name: name,
3332
+ value: String(value)
3333
+ });
3334
+ onMapClick({
3335
+ e: e,
3336
+ payload: payload
3337
+ });
3338
+ }, [dataToRender]);
2980
3339
 
2981
- exports.defaultMarkerLightTheme = defaultMarkerLightTheme;
3340
+ return React.createElement(React.Fragment, null, dataToRender.map(function (datum, i) {
3341
+ var colors = dynamicColors ? [dataToRender.map(function (obj) {
3342
+ return colorUtils_1.isColor(dynamicColors[obj.idx]) ? dynamicColors[obj.idx] : MapUtils_1.DEFAULT_CLUSTER_COLOR;
3343
+ })[i]] : staticColors;
3344
+
3345
+ var _datum$data$coordinat = _slicedToArray(datum.data.coordinates, 2),
3346
+ longitude = _datum$data$coordinat[0],
3347
+ latitude = _datum$data$coordinat[1];
2982
3348
 
2983
- var defaultMarkerDarkTheme = function defaultMarkerDarkTheme(fillColor) {
2984
- return "<svg width=\"22\" height=\"28\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11 .5C5.201.5.5 5.201.5 11c0 3.136 1.376 5.952 3.555 7.875 2.839 2.506 4.144 4.58 4.893 6.02.183.35.334.665.469.946l.014.03c.136.285.263.548.387.766.235.412.571.863 1.182.863.61 0 .947-.45 1.182-.863.124-.218.25-.48.387-.765l.014-.03c.135-.282.286-.597.469-.947.75-1.44 2.054-3.514 4.893-6.02A10.476 10.476 0 0 0 21.5 11C21.5 5.201 16.799.5 11 .5Z\" fill=\"".concat(fillColor, "\"/><path d=\"M11 .5C5.201.5.5 5.201.5 11c0 3.136 1.376 5.952 3.555 7.875 2.839 2.506 4.144 4.58 4.893 6.02.183.35.334.665.469.946l.014.03c.136.285.263.548.387.766.235.412.571.863 1.182.863.61 0 .947-.45 1.182-.863.124-.218.25-.48.387-.765l.014-.03c.135-.282.286-.597.469-.947.75-1.44 2.054-3.514 4.893-6.02A10.476 10.476 0 0 0 21.5 11C21.5 5.201 16.799.5 11 .5Z\" stroke=\"%2308090A\"/><path d=\"M11 .5C5.201.5.5 5.201.5 11c0 3.136 1.376 5.952 3.555 7.875 2.839 2.506 4.144 4.58 4.893 6.02.183.35.334.665.469.946l.014.03c.136.285.263.548.387.766.235.412.571.863 1.182.863.61 0 .947-.45 1.182-.863.124-.218.25-.48.387-.765l.014-.03c.135-.282.286-.597.469-.947.75-1.44 2.054-3.514 4.893-6.02A10.476 10.476 0 0 0 21.5 11C21.5 5.201 16.799.5 11 .5Z\" stroke=\"").concat(fillColor, "\" stroke-opacity=\".15\"/></svg>");
3349
+ var bubbleSize = datum.data.values.map(function (value, index) {
3350
+ return {
3351
+ name: bubbleSizeFields[index],
3352
+ value: value,
3353
+ color: colors[index]
3354
+ };
3355
+ });
3356
+ var additionalFields = bubbleLayer.metadata ? additionalTooltipFields.map(function (field) {
3357
+ return {
3358
+ name: field,
3359
+ value: datum.data.metadata[field]
3360
+ };
3361
+ }) : [];
3362
+ return React.createElement(exports.Bubble, {
3363
+ key: String(i),
3364
+ originalValues: datum.data.values,
3365
+ valueRange: dataRange,
3366
+ colors: colors,
3367
+ themeColor: themeColor,
3368
+ isPie: isPie,
3369
+ longitude: longitude,
3370
+ latitude: latitude,
3371
+ bubbleSize: bubbleSize,
3372
+ additionalFields: additionalFields,
3373
+ map: map,
3374
+ handleMapClick: function handleMapClick(e, name, value) {
3375
+ return _handleMapClick(e, name, value, i);
3376
+ }
3377
+ });
3378
+ }));
2985
3379
  };
2986
3380
 
2987
- exports.defaultMarkerDarkTheme = defaultMarkerDarkTheme;
3381
+ exports.default = BubbleLayer;
2988
3382
 
2989
3383
  /***/ }),
2990
- /* 199 */
3384
+ /* 202 */
2991
3385
  /***/ (function(module, exports, __webpack_require__) {
2992
3386
 
2993
3387
  "use strict";
@@ -3002,7 +3396,7 @@ var React = __webpack_require__(1);
3002
3396
 
3003
3397
  var styled_components_1 = __webpack_require__(4);
3004
3398
 
3005
- var Popover_1 = __webpack_require__(100);
3399
+ var Popover_1 = __webpack_require__(106);
3006
3400
 
3007
3401
  var i18n_1 = __webpack_require__(3);
3008
3402
 
@@ -3013,7 +3407,7 @@ var StyledPopover = styled_components_1.default(Popover_1.default).withConfig({
3013
3407
  var StyledTable = styled_components_1.default.table.withConfig({
3014
3408
  displayName: "Tooltip__StyledTable",
3015
3409
  componentId: "xwewsa-1"
3016
- })(["padding:2px 6px 2px 6px;width:100%;"]);
3410
+ })(["margin:2px 6px 2px 6px;width:calc(100% - 12px);"]);
3017
3411
  var StyledTitleColumn = styled_components_1.default.td.withConfig({
3018
3412
  displayName: "Tooltip__StyledTitleColumn",
3019
3413
  componentId: "xwewsa-2"
@@ -3022,8 +3416,8 @@ var StyledValueColumn = styled_components_1.default.td.withConfig({
3022
3416
  displayName: "Tooltip__StyledValueColumn",
3023
3417
  componentId: "xwewsa-3"
3024
3418
  })(["text-align:right;"]);
3025
- var BubbleSizeColorBlock = styled_components_1.default.div.withConfig({
3026
- displayName: "Tooltip__BubbleSizeColorBlock",
3419
+ var StyledColorBlock = styled_components_1.default.div.withConfig({
3420
+ displayName: "Tooltip__StyledColorBlock",
3027
3421
  componentId: "xwewsa-4"
3028
3422
  })(["background-color:", ";display:inline-block;margin-right:4px;border-radius:2px;width:6px;height:11px;transform:translateY(1px);"], function (props) {
3029
3423
  return props.color;
@@ -3063,13 +3457,14 @@ var convertDegToDMS = function convertDegToDMS(decimalDegree, type) {
3063
3457
  exports.convertDegToDMS = convertDegToDMS;
3064
3458
 
3065
3459
  var Tooltip = function Tooltip(_ref) {
3066
- var anchor = _ref.anchor,
3460
+ var open = _ref.open,
3461
+ anchor = _ref.anchor,
3067
3462
  latitude = _ref.latitude,
3068
3463
  longitude = _ref.longitude,
3069
- _ref$bubbleSize = _ref.bubbleSize,
3070
- bubbleSize = _ref$bubbleSize === void 0 ? [] : _ref$bubbleSize;
3464
+ _ref$additionalFields = _ref.additionalFields,
3465
+ additionalFields = _ref$additionalFields === void 0 ? [] : _ref$additionalFields;
3071
3466
  return React.createElement(StyledPopover, {
3072
- open: !!anchor,
3467
+ open: open,
3073
3468
  anchor: anchor,
3074
3469
  "data-test": "map-marker-tooltip",
3075
3470
  defaultPlacement: "above"
@@ -3077,26 +3472,191 @@ var Tooltip = function Tooltip(_ref) {
3077
3472
  "data-test": "latitude"
3078
3473
  }, exports.convertDegToDMS(latitude, 'latitude'))), React.createElement("tr", null, React.createElement(StyledTitleColumn, null, i18n_1._('Longitude')), React.createElement(StyledValueColumn, {
3079
3474
  "data-test": "longitude"
3080
- }, exports.convertDegToDMS(longitude, 'longitude'))), bubbleSize.map(function (_ref2) {
3475
+ }, exports.convertDegToDMS(longitude, 'longitude'))), additionalFields.map(function (_ref2, index) {
3081
3476
  var name = _ref2.name,
3082
- count = _ref2.count,
3477
+ value = _ref2.value,
3083
3478
  color = _ref2.color;
3084
3479
  return React.createElement("tr", {
3085
- key: color
3480
+ key: String(index)
3086
3481
  }, React.createElement(StyledTitleColumn, {
3087
- "data-test": "count-title"
3088
- }, React.createElement(BubbleSizeColorBlock, {
3482
+ "data-test": "field-title"
3483
+ }, color ? React.createElement(StyledColorBlock, {
3484
+ "data-test": "field-color",
3089
3485
  color: color
3090
- }), name), React.createElement(StyledValueColumn, {
3091
- "data-test": "count-value"
3092
- }, count));
3486
+ }) : null, name), React.createElement(StyledValueColumn, {
3487
+ "data-test": "field-value"
3488
+ }, value));
3093
3489
  }))));
3094
3490
  };
3095
3491
 
3096
3492
  exports.default = Tooltip;
3097
3493
 
3098
3494
  /***/ }),
3099
- /* 200 */
3495
+ /* 203 */
3496
+ /***/ (function(module, exports, __webpack_require__) {
3497
+
3498
+ "use strict";
3499
+
3500
+
3501
+ var _defineProperty = __webpack_require__(7);
3502
+
3503
+ var __rest = this && this.__rest || function (s, e) {
3504
+ var t = {};
3505
+
3506
+ for (var p in s) {
3507
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
3508
+ }
3509
+
3510
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
3511
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
3512
+ }
3513
+ return t;
3514
+ };
3515
+
3516
+ Object.defineProperty(exports, "__esModule", {
3517
+ value: true
3518
+ });
3519
+ exports.generateMarkerWrapperProps = exports.MarkerIcon = void 0;
3520
+
3521
+ var styled_components_1 = __webpack_require__(4);
3522
+
3523
+ var React = __webpack_require__(1);
3524
+
3525
+ var colorUtils_1 = __webpack_require__(12);
3526
+
3527
+ var lodash_1 = __webpack_require__(2);
3528
+
3529
+ var MapUtils_1 = __webpack_require__(105);
3530
+
3531
+ var MarkerWrapper_1 = __webpack_require__(129);
3532
+
3533
+ var MarkerIcon = function MarkerIcon(_a) {
3534
+ var theme = _a.theme,
3535
+ color = _a.color,
3536
+ otherProps = __rest(_a, ["theme", "color"]);
3537
+
3538
+ var strokeOpacity = theme === 'light' ? 0.7 : 0.15;
3539
+ return React.createElement("svg", Object.assign({
3540
+ width: 22,
3541
+ height: 28,
3542
+ fill: "none"
3543
+ }, otherProps), React.createElement("path", {
3544
+ d: "M11 .5C5.201.5.5 5.201.5 11c0 3.136 1.376 5.952 3.555 7.875 2.839 2.506 4.144 4.58 4.893 6.02.183.35.334.665.469.946l.014.03c.136.285.263.548.387.766.235.412.571.863 1.182.863.61 0 .947-.45 1.182-.863.124-.218.25-.48.387-.765l.014-.03c.135-.282.286-.597.469-.947.75-1.44 2.054-3.514 4.893-6.02A10.476 10.476 0 0 0 21.5 11C21.5 5.201 16.799.5 11 .5Z",
3545
+ fill: color
3546
+ }), React.createElement("path", {
3547
+ d: "M11 .5C5.201.5.5 5.201.5 11c0 3.136 1.376 5.952 3.555 7.875 2.839 2.506 4.144 4.58 4.893 6.02.183.35.334.665.469.946l.014.03c.136.285.263.548.387.766.235.412.571.863 1.182.863.61 0 .947-.45 1.182-.863.124-.218.25-.48.387-.765l.014-.03c.135-.282.286-.597.469-.947.75-1.44 2.054-3.514 4.893-6.02A10.476 10.476 0 0 0 21.5 11C21.5 5.201 16.799.5 11 .5Z",
3548
+ stroke: "#08090A"
3549
+ }), React.createElement("path", {
3550
+ d: "M11 .5C5.201.5.5 5.201.5 11c0 3.136 1.376 5.952 3.555 7.875 2.839 2.506 4.144 4.58 4.893 6.02.183.35.334.665.469.946l.014.03c.136.285.263.548.387.766.235.412.571.863 1.182.863.61 0 .947-.45 1.182-.863.124-.218.25-.48.387-.765l.014-.03c.135-.282.286-.597.469-.947.75-1.44 2.054-3.514 4.893-6.02A10.476 10.476 0 0 0 21.5 11C21.5 5.201 16.799.5 11 .5Z",
3551
+ stroke: color,
3552
+ strokeOpacity: strokeOpacity
3553
+ }));
3554
+ };
3555
+
3556
+ exports.MarkerIcon = MarkerIcon;
3557
+ var Marker = React.memo(function (_ref) {
3558
+ var latitude = _ref.latitude,
3559
+ longitude = _ref.longitude,
3560
+ color = _ref.color,
3561
+ themeColorScheme = _ref.themeColorScheme,
3562
+ map = _ref.map,
3563
+ additionalFields = _ref.additionalFields,
3564
+ handleLayerClick = _ref.handleLayerClick;
3565
+ var icon = React.useMemo(function () {
3566
+ return React.createElement(exports.MarkerIcon, {
3567
+ color: color,
3568
+ theme: themeColorScheme,
3569
+ onClick: handleLayerClick
3570
+ });
3571
+ }, [color, handleLayerClick, themeColorScheme]);
3572
+ return React.createElement(StyledMarkerWrapper, {
3573
+ latitude: latitude,
3574
+ longitude: longitude,
3575
+ map: map,
3576
+ additionalFields: additionalFields,
3577
+ "data-test-type": "marker"
3578
+ }, icon);
3579
+ });
3580
+ Marker.displayName = 'MapMarker';
3581
+ var StyledMarkerWrapper = styled_components_1.default(MarkerWrapper_1.default).withConfig({
3582
+ displayName: "MarkerLayer__StyledMarkerWrapper",
3583
+ componentId: "ej9u2l-0"
3584
+ })(["width:22px;height:28px;cursor:pointer;"]);
3585
+
3586
+ var generateMarkerWrapperProps = function generateMarkerWrapperProps(markerLayer) {
3587
+ var onMapClick = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : lodash_1.noop;
3588
+ var latArray = markerLayer.latitude;
3589
+ var lonArray = markerLayer.longitude;
3590
+ var isStaticColor = !markerLayer.dataColors;
3591
+ var limit = Math.min(latArray.length, lonArray.length, markerLayer.resultLimit ? markerLayer.resultLimit : MapUtils_1.DEFAULT_RESULT_LIMIT);
3592
+ var markerProps = [];
3593
+
3594
+ var _loop = function _loop(i) {
3595
+ var staticColor = markerLayer.seriesColors && colorUtils_1.isColor(markerLayer.seriesColors[0]) ? markerLayer.seriesColors[0] : MapUtils_1.DEFAULT_CLUSTER_COLOR;
3596
+ var dynamicColor = markerLayer.dataColors && colorUtils_1.isColor(markerLayer.dataColors[i]) ? markerLayer.dataColors[i] : MapUtils_1.DEFAULT_CLUSTER_COLOR;
3597
+ var color = isStaticColor ? staticColor : dynamicColor;
3598
+ var additionalFields = markerLayer.metadata ? markerLayer.additionalTooltipFields.map(function (field) {
3599
+ return {
3600
+ name: field,
3601
+ value: markerLayer.metadata[i][field]
3602
+ };
3603
+ }) : [];
3604
+
3605
+ var handleLayerClick = function handleLayerClick(e) {
3606
+ var _a;
3607
+
3608
+ var metadata = (_a = markerLayer === null || markerLayer === void 0 ? void 0 : markerLayer.metadata[i]) !== null && _a !== void 0 ? _a : {};
3609
+ var payload = Object.keys(metadata).reduce(function (acc, curr) {
3610
+ var key = "row.".concat(curr, ".value");
3611
+ var value = String(metadata[curr]);
3612
+ return Object.assign(Object.assign({}, acc), _defineProperty({}, key, value));
3613
+ }, {});
3614
+ onMapClick({
3615
+ e: e,
3616
+ payload: payload
3617
+ });
3618
+ };
3619
+
3620
+ markerProps.push({
3621
+ latitude: latArray[i],
3622
+ longitude: lonArray[i],
3623
+ color: color,
3624
+ additionalFields: additionalFields,
3625
+ handleLayerClick: handleLayerClick
3626
+ });
3627
+ };
3628
+
3629
+ for (var i = 0; i < limit; i += 1) {
3630
+ _loop(i);
3631
+ }
3632
+
3633
+ return markerProps;
3634
+ };
3635
+
3636
+ exports.generateMarkerWrapperProps = generateMarkerWrapperProps;
3637
+
3638
+ var MarkerLayer = function MarkerLayer(props) {
3639
+ var map = props.map,
3640
+ themeColorScheme = props.themeColorScheme,
3641
+ markerLayer = props.markerLayer,
3642
+ onMapClick = props.onMapClick;
3643
+ markerLayer.seriesColors = markerLayer.seriesColors || MapUtils_1.DEFAULT_SERIES_COLORS;
3644
+ var markerPropsList = React.useMemo(function () {
3645
+ return exports.generateMarkerWrapperProps(markerLayer, onMapClick);
3646
+ }, [markerLayer, onMapClick]);
3647
+ return React.createElement(React.Fragment, null, markerPropsList.map(function (markerProps, i) {
3648
+ return React.createElement(Marker, Object.assign({
3649
+ key: String(i),
3650
+ themeColorScheme: themeColorScheme,
3651
+ map: map
3652
+ }, markerProps));
3653
+ }));
3654
+ };
3655
+
3656
+ exports.default = MarkerLayer;
3657
+
3658
+ /***/ }),
3659
+ /* 204 */
3100
3660
  /***/ (function(module, exports, __webpack_require__) {
3101
3661
 
3102
3662
  "use strict";
@@ -3106,19 +3666,21 @@ Object.defineProperty(exports, "__esModule", {
3106
3666
  value: true
3107
3667
  });
3108
3668
 
3109
- var visualization_icons_1 = __webpack_require__(42);
3669
+ var visualization_icons_1 = __webpack_require__(45);
3110
3670
 
3111
- var schemaUtils_1 = __webpack_require__(14);
3671
+ var placeholders_1 = __webpack_require__(44);
3112
3672
 
3113
- var visualization_color_palettes_1 = __webpack_require__(41);
3673
+ var schemaUtils_1 = __webpack_require__(15);
3114
3674
 
3115
- var themes_1 = __webpack_require__(70);
3675
+ var visualization_color_palettes_1 = __webpack_require__(43);
3676
+
3677
+ var themes_1 = __webpack_require__(65);
3116
3678
 
3117
3679
  var i18n_1 = __webpack_require__(3);
3118
3680
 
3119
3681
  var VizBehavior_1 = __webpack_require__(5);
3120
3682
 
3121
- var VizCategory_1 = __webpack_require__(27);
3683
+ var VizCategory_1 = __webpack_require__(28);
3122
3684
 
3123
3685
  var configUtils_1 = __webpack_require__(6);
3124
3686
 
@@ -3163,14 +3725,13 @@ var size = {
3163
3725
  var optionsSchema = {
3164
3726
  backgroundColor: {
3165
3727
  default: '> themes.defaultBackgroundColor',
3166
- description: 'Specify the color for the background. You may use a dataSource to apply the color. The default for enterprise light is "#ffffff". The default for enterprise dark is "#000000". The default for prisma dark is "#0b0c0e".',
3728
+ description: 'Specify a color for the background. You might use a dataSource to apply the color. The default for enterprise light is "#FFFFFF". The default for enterprise dark is "#000000". The default for prisma dark is "#0B0C0E".',
3167
3729
  pattern: schemaUtils_1.COLOR_OR_TOKEN_PATTERN_WITH_RGBA,
3168
3730
  type: 'string'
3169
3731
  },
3170
3732
  center: {
3171
- default: [37.7749, -122.4194],
3172
3733
  type: 'array',
3173
- description: 'Specify the center of the map in coordinates, in the form of [latitude, longitude]. When not provided, will automatically calculate map center based on available location data. When no location data available will fall back to [37.7749, -122.4194].',
3734
+ description: 'Specify the center of the map in coordinates, in the form of [latitude, longitude]. If you don’t provide coordinates, the map automatically centers, based on available location data. If there is no available location data, the center of the map defaults to [37.7749, -122.4194].',
3174
3735
  items: {
3175
3736
  type: 'number'
3176
3737
  }
@@ -3184,18 +3745,18 @@ var optionsSchema = {
3184
3745
  longitude: '> primary | seriesByName("longitude")',
3185
3746
  seriesColors: visualization_color_palettes_1.VIZ_CATEGORICAL,
3186
3747
  bubbleSize: '> primary | frameWithoutSeriesNames("geobin", "latitude", "longitude") | frameBySeriesTypes("number")',
3187
- tooltipFields: [],
3748
+ additionalTooltipFields: [],
3188
3749
  resultLimit: 1000
3189
3750
  }, {
3190
3751
  type: 'marker',
3191
3752
  latitude: '> primary | seriesByName("latitude")',
3192
3753
  longitude: '> primary | seriesByName("longitude")',
3193
3754
  seriesColors: visualization_color_palettes_1.VIZ_CATEGORICAL,
3194
- tooltipFields: [],
3755
+ additionalTooltipFields: [],
3195
3756
  resultLimit: 1000
3196
3757
  }],
3197
3758
  type: 'array',
3198
- description: 'Specify the data visualization layers on top of the base map. Can be empty to only show the base map.',
3759
+ description: 'Specify the optional data visualization layers over the base map. If empty, only the base map appears.',
3199
3760
  items: {
3200
3761
  anyOf: [{
3201
3762
  type: 'object',
@@ -3203,25 +3764,34 @@ var optionsSchema = {
3203
3764
  type: {
3204
3765
  description: 'Specify the type of data layer method to display points on the map. For example, “bubble” or “marker”.',
3205
3766
  type: 'string',
3206
- pattern: schemaUtils_1.getPattern(['marker']),
3767
+ pattern: schemaUtils_1.getPattern(['marker', 'bubble']),
3207
3768
  default: 'marker'
3208
3769
  },
3209
3770
  latitude: {
3210
3771
  description: 'Specify a dataSource series to apply latitude coordinates for data points displayed on the map.',
3211
3772
  type: ['string', 'array'],
3773
+ items: {
3774
+ type: 'number'
3775
+ },
3212
3776
  default: '> primary | seriesByName("latitude")'
3213
3777
  },
3214
3778
  longitude: {
3215
3779
  description: 'Specify a dataSource series to apply longitude coordinates for data points displayed on the map.',
3216
3780
  type: ['string', 'array'],
3781
+ items: {
3782
+ type: 'number'
3783
+ },
3217
3784
  default: '> primary | seriesByName("longitude")'
3218
3785
  },
3219
3786
  dataColors: {
3220
- description: 'Specify the colors used for data points. You may use an array of colors to be picked from, or you may use a dataSource to apply dynamic coloring. For example, “> primary | seriesByName("status") | matchValue(colorMatchConfig)”. ',
3221
- type: ['string', 'array']
3787
+ description: 'Specify the colors used for data points. If specified, this option overrides the seriesColors option. You may use an array of colors to be picked from, or you may use a dataSource to apply dynamic coloring. For example, “> primary | seriesByName("status") | matchValue(colorMatchConfig)”. ',
3788
+ type: ['string', 'array'],
3789
+ items: {
3790
+ type: 'string'
3791
+ }
3222
3792
  },
3223
3793
  seriesColors: {
3224
- description: 'Specify the colors used for data points.',
3794
+ description: 'Specify the colors used for data points. If the dataColors option is specified, the seriesColors option is ignored.',
3225
3795
  type: 'array',
3226
3796
  items: {
3227
3797
  type: 'string',
@@ -3229,8 +3799,8 @@ var optionsSchema = {
3229
3799
  },
3230
3800
  default: visualization_color_palettes_1.VIZ_CATEGORICAL
3231
3801
  },
3232
- tooltipFields: {
3233
- description: 'Specify the fields to add to tooltips shown while hovering over data points. These fields and their corresponding values will be shown in addition to the ones displayed by default.',
3802
+ additionalTooltipFields: {
3803
+ description: 'Specify the fields to add to the default set of tooltips. Tooltips appear when you hover over data points. These fields and their corresponding values will be shown in addition to the ones displayed by default.',
3234
3804
  type: 'array',
3235
3805
  items: {
3236
3806
  type: 'string'
@@ -3238,7 +3808,7 @@ var optionsSchema = {
3238
3808
  default: []
3239
3809
  },
3240
3810
  resultLimit: {
3241
- description: 'Specify the maximum number of data points rendered on the map to improve performance.',
3811
+ description: 'Specify the maximum number of data points to render on the map. Adjust the value to improve performance.',
3242
3812
  type: 'number',
3243
3813
  default: 1000
3244
3814
  }
@@ -3249,12 +3819,15 @@ var optionsSchema = {
3249
3819
  type: {
3250
3820
  description: 'Specify the type of data layer method to display points on the map. For example, “bubble” or “marker”.',
3251
3821
  type: 'string',
3252
- pattern: schemaUtils_1.getPattern(['bubble']),
3822
+ pattern: schemaUtils_1.getPattern(['marker', 'bubble']),
3253
3823
  default: 'bubble'
3254
3824
  },
3255
3825
  bubbleSize: {
3256
- description: 'Specify the data column to encode bubble size',
3826
+ description: 'Specify the data column to encode bubble size. This applies to layers where type: "bubble".',
3257
3827
  type: ['string', 'array'],
3828
+ items: {
3829
+ type: 'number'
3830
+ },
3258
3831
  default: '> primary | frameWithoutSeriesNames("geobin", "latitude", "longitude") | frameBySeriesTypes("number")'
3259
3832
  },
3260
3833
  latitude: {
@@ -3274,11 +3847,14 @@ var optionsSchema = {
3274
3847
  default: '> primary | seriesByName("longitude")'
3275
3848
  },
3276
3849
  dataColors: {
3277
- description: 'Specify the colors used for data points. You may use an array of colors to be picked from, or you may use a dataSource to apply dynamic coloring. For example, “> primary | seriesByName("status") | matchValue(colorMatchConfig)”. ',
3278
- type: ['string', 'array']
3850
+ description: 'Specify the colors used for data points. If specified, this option overrides the seriesColors option. You may use an array of colors to be picked from, or you may use a dataSource to apply dynamic coloring. For example, “> primary | seriesByName("status") | matchValue(colorMatchConfig)”. ',
3851
+ type: ['string', 'array'],
3852
+ items: {
3853
+ type: 'string'
3854
+ }
3279
3855
  },
3280
3856
  seriesColors: {
3281
- description: "Specify the colors used for data points. For example, [\"#FF0000\", \"#0000FF\", \"#008000\"].",
3857
+ description: 'Specify the colors used for data points. If the dataColors option is specified, the seriesColors option is ignored.',
3282
3858
  type: 'array',
3283
3859
  items: {
3284
3860
  type: 'string',
@@ -3286,8 +3862,8 @@ var optionsSchema = {
3286
3862
  },
3287
3863
  default: visualization_color_palettes_1.VIZ_CATEGORICAL
3288
3864
  },
3289
- tooltipFields: {
3290
- description: 'Specify the fields to add to tooltips shown while hovering over data points. These fields and their corresponding values will be shown in addition to the ones displayed by default.',
3865
+ additionalTooltipFields: {
3866
+ description: 'Specify the fields to add to the default set of tooltips. Tooltips appear when you hover over data points. These fields and their corresponding values will be shown in addition to the ones displayed by default.',
3291
3867
  type: 'array',
3292
3868
  items: {
3293
3869
  type: 'string'
@@ -3295,7 +3871,7 @@ var optionsSchema = {
3295
3871
  default: []
3296
3872
  },
3297
3873
  resultLimit: {
3298
- description: 'Specify the maximum number of data points rendered on the map to improve performance.',
3874
+ description: 'Specify the maximum number of data points to render on the map. Adjust the value to improve performance.',
3299
3875
  type: 'number',
3300
3876
  default: 1000
3301
3877
  }
@@ -3306,7 +3882,7 @@ var optionsSchema = {
3306
3882
  scaleUnit: {
3307
3883
  default: 'metric',
3308
3884
  type: 'string',
3309
- description: 'Specify which scale unit to use.',
3885
+ description: 'Specify the scale unit to use.',
3310
3886
  pattern: schemaUtils_1.getPattern(['metric', 'imperial'])
3311
3887
  },
3312
3888
  // TODO: choropleth map retain old design
@@ -3318,11 +3894,11 @@ var optionsSchema = {
3318
3894
  showScale: {
3319
3895
  default: true,
3320
3896
  type: 'boolean',
3321
- description: 'Specify whether the scale on the bottom left is shown.'
3897
+ description: 'Specify whether to display the scale on the bottom left.'
3322
3898
  },
3323
3899
  baseLayerTileServer: {
3324
3900
  type: 'string',
3325
- description: 'Specify the tile set URL for the base map.'
3901
+ description: 'Specify the URL for the set of tiles that make up the base map.'
3326
3902
  },
3327
3903
  baseLayerTileServerType: {
3328
3904
  type: 'string',
@@ -3330,7 +3906,6 @@ var optionsSchema = {
3330
3906
  pattern: schemaUtils_1.getPattern(['vector', 'raster'])
3331
3907
  },
3332
3908
  zoom: {
3333
- default: 5,
3334
3909
  description: 'Specify the zoom level of the map.',
3335
3910
  type: 'number'
3336
3911
  }
@@ -3381,25 +3956,29 @@ var editorConfig = [{
3381
3956
  option: 'layers[0].latitude',
3382
3957
  editor: 'editor.columnSelector',
3383
3958
  editorProps: {
3384
- dataSourceKey: 'primary'
3959
+ dataSourceKey: 'primary',
3960
+ shouldShowInternalFields: false
3385
3961
  }
3386
3962
  }], [{
3387
3963
  label: i18n_1._('Longitude'),
3388
3964
  option: 'layers[0].longitude',
3389
3965
  editor: 'editor.columnSelector',
3390
3966
  editorProps: {
3391
- dataSourceKey: 'primary'
3967
+ dataSourceKey: 'primary',
3968
+ shouldShowInternalFields: false
3392
3969
  }
3393
3970
  }], [{
3394
3971
  label: i18n_1._('Size'),
3395
3972
  option: 'layers[0].bubbleSize',
3396
- editor: 'editor.columnSelector',
3973
+ editor: 'editor.columnMultiSelector',
3397
3974
  showEditor: function showEditor(_ref) {
3398
3975
  var options = _ref.options;
3399
3976
  return !(options.layers && options.layers.length && options.layers[0].type === 'marker');
3400
3977
  },
3401
3978
  editorProps: {
3402
- dataSourceKey: 'primary'
3979
+ dataSourceKey: 'primary',
3980
+ shouldShowInternalFields: false,
3981
+ excludeByNames: ['latitude', 'longitude', 'geobin']
3403
3982
  }
3404
3983
  }]]
3405
3984
  }];
@@ -3424,6 +4003,7 @@ var config = {
3424
4003
  * viz icon
3425
4004
  */
3426
4005
  icon: visualization_icons_1.Map,
4006
+ placeholderIcon: placeholders_1.Map,
3427
4007
  dataContract: dataContract,
3428
4008
  size: size,
3429
4009
  defaultContext: defaultContext,
@@ -3432,6 +4012,9 @@ var config = {
3432
4012
  events: {
3433
4013
  'map.load': {
3434
4014
  description: 'triggered when map is fully loaded'
4015
+ },
4016
+ 'map.click': {
4017
+ description: 'trigger when user clicks map layer'
3435
4018
  }
3436
4019
  },
3437
4020
  supports: [VizBehavior_1.VizBehavior.DYNAMIC_OPTIONS, VizBehavior_1.VizBehavior.EVENTS, VizBehavior_1.VizBehavior.PLACEHOLDER],