@splunk/visualizations 24.3.4 → 24.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +1901 -1303
  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.4 - fa50e80e6",
585
+ "data-splunk-visualization-version": "24.5.0 - b75bfbe79",
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.4 - fa50e80e6"
1548
+ 'data-splunk-visualization-version': "24.5.0 - b75bfbe79"
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,1457 @@ 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
+ }
2128
+
2129
+ return true;
2130
+ };
1937
2131
 
1938
- if (!dataSources || !dataSources.primary || !dataSources.primary.data) {
1939
- return React.createElement(Viz, Object.assign({}, otherProps));
1940
- }
2132
+ exports.isValidLatLon = isValidLatLon; // Returns the min and max LongLat pairs to determine the layer boundaries to fit all markers/bubbles
1941
2133
 
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'));
2134
+ var getGlobalLayerBoundaries = function getGlobalLayerBoundaries(layers) {
2135
+ if (!layers || !Array.isArray(layers) || !layers.length) {
2136
+ return null;
2137
+ }
1948
2138
 
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();
2139
+ var LONGITUDE = 'longitude';
2140
+ var LATITUDE = 'latitude';
1955
2141
 
1956
- if (!excludedFields.includes(field)) {
1957
- arr.push(i);
1958
- }
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
+ }
1959
2148
 
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
- }
2149
+ return layers.reduce(function (prevVal, layer) {
2150
+ var _a;
1968
2151
 
1969
- return column;
1970
- });
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;
2233
+
2234
+ var maplibre_gl_1 = __webpack_require__(128);
2030
2235
 
2031
2236
  var React = __webpack_require__(1);
2032
2237
 
2033
- var lodash_1 = __webpack_require__(2);
2238
+ var Tooltip_1 = __webpack_require__(202);
2034
2239
 
2035
- var react_1 = __webpack_require__(1);
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"]);
2036
2248
 
2037
- var T = __webpack_require__(0);
2249
+ var container = React.useRef();
2250
+ var marker = React.useRef();
2038
2251
 
2039
- var chroma = __webpack_require__(193);
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
+ };
2040
2301
 
2041
- var maplibre_gl_1 = __webpack_require__(123);
2302
+ exports.default = MarkerWrapper;
2042
2303
 
2043
- var MapContext_1 = __webpack_require__(194);
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__) {
2044
2371
 
2045
- var PureMapContainer_1 = __webpack_require__(195);
2372
+ "use strict";
2046
2373
 
2047
- __webpack_require__(196);
2048
2374
 
2049
- var MapUtils_1 = __webpack_require__(197);
2375
+ var _slicedToArray = __webpack_require__(51);
2050
2376
 
2051
- var Tooltip_1 = __webpack_require__(199);
2377
+ var __rest = this && this.__rest || function (s, e) {
2378
+ var t = {};
2052
2379
 
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
2380
+ for (var p in s) {
2381
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
2382
+ }
2059
2383
 
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
- };
2384
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
2385
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
2386
+ }
2387
+ return t;
2066
2388
  };
2067
2389
 
2068
- exports.formatColor = formatColor;
2069
- PureMapContainer_1.default.displayName = 'PureMapContainer';
2390
+ Object.defineProperty(exports, "__esModule", {
2391
+ value: true
2392
+ });
2393
+ exports.PureMap = exports.config = exports.themes = exports.computeVizProps = exports.convertToArrOfObjects = void 0;
2394
+ /* eslint-disable no-sequences */
2070
2395
 
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;
2396
+ var React = __webpack_require__(1);
2086
2397
 
2087
- var _react_1$useContext = react_1.useContext(MapContext_1.default),
2088
- defaultTileConfig = _react_1$useContext.defaultTileConfig,
2089
- customTileConfig = _react_1$useContext.customTileConfig;
2398
+ var colorUtils_1 = __webpack_require__(12);
2090
2399
 
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);
2400
+ var dsl_1 = __webpack_require__(104);
2095
2401
 
2096
- var _react_1$useMemo = react_1.useMemo(function () {
2097
- return MapUtils_1.getTilePreset({
2098
- defaultTileConfig: defaultTileConfig,
2099
- customTileConfig: customTileConfig
2402
+ var JSONSchemaUtils_1 = __webpack_require__(24);
2403
+
2404
+ var hocUtils_1 = __webpack_require__(8);
2405
+
2406
+ var PureMap_1 = __webpack_require__(195);
2407
+
2408
+ exports.PureMap = PureMap_1.default;
2409
+
2410
+ var config_1 = __webpack_require__(204);
2411
+
2412
+ exports.config = config_1.default;
2413
+
2414
+ var withDashboardViz_1 = __webpack_require__(29); // util fn extracted from PureParallelCoordinates that transforms data structure to array of objects
2415
+ // TODO: pull this fn into common utils and utilize this fn in ParallelCoordinates
2416
+
2417
+
2418
+ var convertToArrOfObjects = function convertToArrOfObjects(columns, fields) {
2419
+ if (!columns || !columns[0].length) return [];
2420
+ var data = [];
2421
+
2422
+ var _loop = function _loop(i) {
2423
+ var newObj = {};
2424
+ fields.forEach(function (field, index) {
2425
+ var fieldName = typeof field === 'string' ? field : field.name;
2426
+
2427
+ if (columns[index][i] === '') {
2428
+ newObj[fieldName] = null;
2429
+ } else {
2430
+ newObj[fieldName] = columns[index][i];
2431
+ }
2100
2432
  });
2101
- }, [defaultTileConfig, customTileConfig]),
2102
- tilePreset = _react_1$useMemo.tilePreset,
2103
- defaultTileLight = _react_1$useMemo.defaultTileLight,
2104
- defaultTileDark = _react_1$useMemo.defaultTileDark;
2433
+ data.push(newObj);
2434
+ };
2435
+
2436
+ for (var i = 0; i < columns[0].length; i += 1) {
2437
+ _loop(i);
2438
+ }
2439
+
2440
+ return data;
2441
+ };
2442
+
2443
+ exports.convertToArrOfObjects = convertToArrOfObjects;
2444
+
2445
+ var computeVizProps = function computeVizProps(props) {
2446
+ var _a, _b;
2447
+
2448
+ var themeFunc = props.themeFunc,
2449
+ theme = props.theme,
2450
+ layers = props.layers,
2451
+ dataSources = props.dataSources,
2452
+ onOptionsChange = props.onOptionsChange;
2453
+ var themeColorVariables = ['controlBackgroundColor', 'controlForegroundColor'];
2454
+ var themeColors = {};
2455
+ themeColorVariables.forEach(function (variable) {
2456
+ themeColors[variable] = themeFunc(variable);
2457
+ }); // Markers use different icons, Bubbles has different styles for light and dark theme
2458
+ // this prop is passed for that
2105
2459
 
2106
- var _React$useState = React.useState({}),
2107
- _React$useState2 = _slicedToArray(_React$useState, 2),
2108
- tooltipProps = _React$useState2[0],
2109
- setTooltipProps = _React$useState2[1];
2460
+ var themeColorScheme = (theme === null || theme === void 0 ? void 0 : theme.splunkThemeV1) ? theme === null || theme === void 0 ? void 0 : theme.splunkThemeV1.colorScheme : 'dark';
2461
+ 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
2462
+ // TODO: explore any potential changes when multiple layers are supported
2110
2463
 
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.
2464
+ var transformedData = exports.convertToArrOfObjects(dataSourceData.columns, dataSourceData.fields);
2465
+ layers.forEach(function (l) {
2466
+ var _a; // add key `geobin` to the layer object if the data is returned from geostats commands
2467
+ // to distinguish geostats commands from table commands
2122
2468
 
2123
- map.current.on('load', function () {
2124
- onMapLoad();
2125
- }); // zoom
2126
2469
 
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;
2470
+ var geobinIdx = ((_a = dataSourceData.fields) !== null && _a !== void 0 ? _a : []).map(function (field) {
2471
+ return typeof field === 'string' ? field : field.name;
2472
+ }).indexOf('geobin');
2473
+ var layer = l;
2141
2474
 
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
- }
2475
+ if (geobinIdx > -1) {
2476
+ layer.geobin = dataSourceData.columns[geobinIdx];
2477
+ } // Sanitize colors within layers
2158
2478
 
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
2168
2479
 
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']));
2480
+ layer.seriesColors = Array.isArray(layer.seriesColors) ? colorUtils_1.sanitizeArrayOfColors(layer.seriesColors) : undefined;
2481
+ layer.dataColors = Array.isArray(layer.dataColors) ? colorUtils_1.sanitizeArrayOfColors(layer.dataColors) : undefined;
2482
+ layer.metadata = transformedData;
2483
+ });
2484
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, themeColors), {
2485
+ themeColorScheme: themeColorScheme
2486
+ }), layers), {
2487
+ onOptionsChange: onOptionsChange
2488
+ });
2489
+ };
2172
2490
 
2173
- var _MapUtils_1$getZoomCo = MapUtils_1.getZoomConstraintsFromTileConfig(mapStyle),
2174
- minZoom = _MapUtils_1$getZoomCo.minZoom,
2175
- maxZoom = _MapUtils_1$getZoomCo.maxZoom;
2491
+ exports.computeVizProps = computeVizProps;
2176
2492
 
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
2493
+ var withTooltipFields = function withTooltipFields(Viz) {
2494
+ var VizWithTooltipFields = function VizWithTooltipFields(_a) {
2495
+ var _b;
2187
2496
 
2497
+ var dataSources = _a.dataSources,
2498
+ options = _a.options,
2499
+ otherProps = __rest(_a, ["dataSources", "options"]);
2188
2500
 
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
- });
2501
+ if (!dataSources || !dataSources.primary || !dataSources.primary.data) {
2502
+ return React.createElement(Viz, Object.assign({}, otherProps, {
2503
+ options: options
2504
+ }));
2201
2505
  }
2202
- }, [lngLatCenter, zoom]);
2203
- react_1.useEffect(function () {
2204
- var cleanupLayer = function cleanupLayer() {};
2205
-
2206
- var markers = [];
2207
- var bubbles = [];
2208
-
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
2506
 
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
- }
2507
+ if ((_b = options.layers) === null || _b === void 0 ? void 0 : _b.length) {
2508
+ options.layers.forEach(function (l) {
2509
+ var _a;
2232
2510
 
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
2511
+ var layer = l;
2246
2512
 
2513
+ if (layer.type === 'bubble') {
2514
+ var defaultOptions = JSONSchemaUtils_1.pickFieldFromJSONSchema(config_1.default.optionsSchema, 'default');
2247
2515
 
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);
2516
+ var _defaultOptions$layer = defaultOptions.layers.filter(function (_ref) {
2517
+ var type = _ref.type;
2518
+ return type === 'bubble';
2519
+ }),
2520
+ _defaultOptions$layer2 = _slicedToArray(_defaultOptions$layer, 1),
2521
+ defaultBubbleLayer = _defaultOptions$layer2[0];
2252
2522
 
2253
- if (data && staticColors && staticColors.length) {
2254
- cleanupLayer(); // render bubbles when layers options get update
2523
+ layer.bubbleSizeFields = dsl_1.getFieldsFromDSL((_a = layer.bubbleSize) !== null && _a !== void 0 ? _a : defaultBubbleLayer.bubbleSize, dataSources);
2524
+ }
2255
2525
 
2256
- bubbles = MapUtils_1.updateBubbles(data, zoom, staticColors, bubbleLayer.dataColors, themeColorScheme, map, setTooltipProps); // render bubbles on zoom
2526
+ var fields = dataSources.primary.data.fields;
2257
2527
 
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
- }
2528
+ if (Array.isArray(layer.additionalTooltipFields) && Array.isArray(fields) && fields.length) {
2529
+ var _layer$bubbleSizeFiel = layer.bubbleSizeFields,
2530
+ bubbleSizeFields = _layer$bubbleSizeFiel === void 0 ? [] : _layer$bubbleSizeFiel;
2531
+ layer.additionalTooltipFields = layer.additionalTooltipFields.filter(function (field) {
2532
+ return (typeof fields[0] === 'string' ? fields.includes(field) : fields.map(function (f) {
2533
+ return f.name;
2534
+ }).includes(field)) && !bubbleSizeFields.includes(field);
2535
+ });
2264
2536
  }
2265
- } catch (err) {
2266
- console.error(err);
2267
- }
2537
+ });
2268
2538
  }
2269
2539
 
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
- };
2540
+ return React.createElement(Viz, Object.assign({
2541
+ dataSources: dataSources,
2542
+ options: options
2543
+ }, otherProps));
2544
+ };
2287
2545
 
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
- }
2546
+ VizWithTooltipFields.propTypes = Viz.propTypes;
2547
+ VizWithTooltipFields.defaultProps = Viz.defaultProps;
2548
+ VizWithTooltipFields.config = Viz.config;
2549
+ return VizWithTooltipFields;
2550
+ }; // HOC for stripping the internal fields for Maps
2292
2551
 
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
2552
 
2297
- return null;
2298
- };
2553
+ var withoutInternalFields = function withoutInternalFields(Viz) {
2554
+ // eslint-disable-next-line react/display-name
2555
+ var VizWithoutInternalFields = function VizWithoutInternalFields(_a) {
2556
+ var dataSources = _a.dataSources,
2557
+ otherProps = __rest(_a, ["dataSources"]);
2299
2558
 
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;
2559
+ if (!dataSources || !dataSources.primary || !dataSources.primary.data) {
2560
+ return React.createElement(Viz, Object.assign({}, otherProps));
2561
+ }
2345
2562
 
2346
- /***/ }),
2347
- /* 193 */
2348
- /***/ (function(module, exports) {
2563
+ var primary = dataSources.primary;
2564
+ var _primary$data = primary.data,
2565
+ columns = _primary$data.columns,
2566
+ fields = _primary$data.fields;
2567
+ var newColumns = [];
2568
+ var newFields = [];
2349
2569
 
2350
- module.exports = require("chroma-js");
2570
+ if (fields && columns && fields.length === columns.length) {
2571
+ // computed sorted index for removal
2572
+ var indicesToRemove = new Set(fields.reduce(function (arr, e, i) {
2573
+ return (typeof e === 'string' ? e.startsWith('_') : e.name.toString().startsWith('_')) && arr.push(i), arr;
2574
+ }, []));
2575
+ newFields = fields.filter(function (d, i) {
2576
+ return !indicesToRemove.has(i);
2577
+ });
2578
+ newColumns = columns.filter(function (d, i) {
2579
+ return !indicesToRemove.has(i);
2580
+ });
2581
+ }
2351
2582
 
2352
- /***/ }),
2353
- /* 194 */
2354
- /***/ (function(module, exports) {
2583
+ var modifiedDatasources = Object.assign(Object.assign({}, dataSources), {
2584
+ primary: Object.assign(Object.assign({}, primary), {
2585
+ data: Object.assign(Object.assign({}, primary.data), {
2586
+ columns: newColumns,
2587
+ fields: newFields
2588
+ })
2589
+ })
2590
+ });
2591
+ return React.createElement(Viz, Object.assign({
2592
+ dataSources: modifiedDatasources
2593
+ }, otherProps));
2594
+ };
2355
2595
 
2356
- module.exports = require("@splunk/visualization-context/MapContext");
2596
+ VizWithoutInternalFields.propTypes = Viz.propTypes;
2597
+ VizWithoutInternalFields.defaultProps = Viz.defaultProps;
2598
+ VizWithoutInternalFields.config = Viz.config;
2599
+ return VizWithoutInternalFields;
2600
+ }; // HOC for updating all null values in data columns to zeros
2601
+ // excluding 'latitude', 'longitude' and 'geobin'
2357
2602
 
2358
- /***/ }),
2359
- /* 195 */
2360
- /***/ (function(module, exports, __webpack_require__) {
2361
2603
 
2362
- "use strict";
2604
+ var withNullToZeros = function withNullToZeros(Viz) {
2605
+ // eslint-disable-next-line react/display-name
2606
+ var VizWithColumnsNullToZeros = function VizWithColumnsNullToZeros(_a) {
2607
+ var _b, _c;
2363
2608
 
2609
+ var dataSources = _a.dataSources,
2610
+ options = _a.options,
2611
+ otherProps = __rest(_a, ["dataSources", "options"]);
2364
2612
 
2365
- Object.defineProperty(exports, "__esModule", {
2366
- value: true
2367
- });
2613
+ if (!dataSources || !dataSources.primary || !dataSources.primary.data) {
2614
+ return React.createElement(Viz, Object.assign({}, otherProps));
2615
+ }
2368
2616
 
2369
- var styled_components_1 = __webpack_require__(4);
2617
+ var primary = dataSources.primary;
2618
+ var _primary$data2 = primary.data,
2619
+ columns = _primary$data2.columns,
2620
+ fields = _primary$data2.fields;
2621
+ var newColumns = columns;
2622
+ var mergedOptions = hocUtils_1.deepMergeWithArrayPrimitiveOverrides({}, options, JSONSchemaUtils_1.pickFieldFromJSONSchema(config_1.default.optionsSchema, 'default'));
2623
+
2624
+ if (((_c = (_b = mergedOptions.layers) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.type) === 'bubble') {
2625
+ var latitudeField = dsl_1.getFieldsFromDSL(mergedOptions.layers[0].latitude, dataSources)[0] || '';
2626
+ var longitudeField = dsl_1.getFieldsFromDSL(mergedOptions.layers[0].longitude, dataSources)[0] || '';
2627
+ var excludedFields = [latitudeField, longitudeField, 'geobin'];
2628
+ var indicesToEvaluate = new Set(fields.reduce(function (arr, e, i) {
2629
+ var field = typeof e === 'string' ? e : e.name.toString();
2630
+
2631
+ if (!excludedFields.includes(field)) {
2632
+ arr.push(i);
2633
+ }
2370
2634
 
2371
- var lodash_1 = __webpack_require__(2);
2635
+ return arr;
2636
+ }, []));
2637
+ newColumns = columns.map(function (column, i) {
2638
+ if (indicesToEvaluate.has(i)) {
2639
+ return column.map(function (value) {
2640
+ return !value ? 0 : value;
2641
+ });
2642
+ }
2372
2643
 
2373
- var style_1 = __webpack_require__(13);
2644
+ return column;
2645
+ });
2646
+ }
2374
2647
 
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;
2648
+ var modifiedDatasources = Object.assign(Object.assign({}, dataSources), {
2649
+ primary: Object.assign(Object.assign({}, primary), {
2650
+ data: Object.assign(Object.assign({}, primary.data), {
2651
+ columns: newColumns
2652
+ })
2653
+ })
2654
+ });
2655
+ return React.createElement(Viz, Object.assign({
2656
+ dataSources: modifiedDatasources,
2657
+ options: options
2658
+ }, otherProps));
2659
+ };
2404
2660
 
2405
- /***/ }),
2406
- /* 196 */
2407
- /***/ (function(module, exports) {
2661
+ VizWithColumnsNullToZeros.propTypes = Viz.propTypes;
2662
+ VizWithColumnsNullToZeros.defaultProps = Viz.defaultProps;
2663
+ VizWithColumnsNullToZeros.config = Viz.config;
2664
+ return VizWithColumnsNullToZeros;
2665
+ };
2408
2666
 
2409
- module.exports = require("maplibre-gl/dist/maplibre-gl.css");
2667
+ var Map = withoutInternalFields(withTooltipFields(withNullToZeros(withDashboardViz_1.default({
2668
+ ReactViz: PureMap_1.default,
2669
+ vizConfig: config_1.default,
2670
+ computeVizProps: exports.computeVizProps,
2671
+ disableEditModeCover: true,
2672
+ useIconPlaceholder: function useIconPlaceholder() {
2673
+ return false;
2674
+ }
2675
+ }))));
2676
+ var themes = config_1.default.themes;
2677
+ exports.themes = themes;
2678
+ exports.default = Map;
2410
2679
 
2411
2680
  /***/ }),
2412
- /* 197 */
2681
+ /* 195 */
2413
2682
  /***/ (function(module, exports, __webpack_require__) {
2414
2683
 
2415
2684
  "use strict";
2416
2685
 
2417
2686
 
2418
- var _slicedToArray = __webpack_require__(49);
2419
-
2420
- var _toConsumableArray = __webpack_require__(39);
2687
+ var _slicedToArray = __webpack_require__(51);
2421
2688
 
2422
2689
  Object.defineProperty(exports, "__esModule", {
2423
2690
  value: true
2424
2691
  });
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;
2692
+ 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
2693
 
2427
- var maplibre_gl_1 = __webpack_require__(123);
2694
+ var React = __webpack_require__(1);
2428
2695
 
2429
2696
  var lodash_1 = __webpack_require__(2);
2430
2697
 
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
2698
+ var react_1 = __webpack_require__(1);
2445
2699
 
2446
- exports.MIN_BUBBLE_RADIUS = 4;
2447
- exports.MAX_BUBBLE_RADIUS = 50; // Returns marker background img with the requiref fillColor based on the theme
2700
+ var T = __webpack_require__(0);
2448
2701
 
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
- };
2702
+ var chroma = __webpack_require__(196);
2453
2703
 
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
2704
+ var maplibre_gl_1 = __webpack_require__(128);
2456
2705
 
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
- }
2706
+ var MapContext_1 = __webpack_require__(197);
2461
2707
 
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 = [];
2708
+ var PureMapContainer_1 = __webpack_require__(198);
2468
2709
 
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
2710
+ var MapUtils_1 = __webpack_require__(105);
2491
2711
 
2492
- markers.push(new maplibre_gl_1.Marker(el).setLngLat([lon[i], lat[i]]).addTo(map.current));
2493
- };
2712
+ var ClusterLayer_1 = __webpack_require__(200);
2494
2713
 
2495
- for (var i = 0; i < limit; i += 1) {
2496
- _loop(i);
2497
- }
2714
+ exports.DEFAULT_CENTER = [0, 0];
2715
+ exports.DEFAULT_CONTROL_BACKGROUND_COLOR = '#2b3033';
2716
+ exports.DEFAULT_CONTROL_FOREGROUND_COLOR = '#B5B5B5';
2717
+ exports.DEFAULT_SCALE_UNIT = 'imperial';
2718
+ exports.DEFAULT_SHOW_SCALE = true;
2719
+ exports.DEFAULT_ZOOM = 0; // convert rgb/rgba/hex color to encoded color & opacity for SVG strings
2498
2720
 
2721
+ var formatColor = function formatColor(color) {
2722
+ var chromaColor = chroma(color);
2499
2723
  return {
2500
- markers: markers,
2501
- colors: colors
2724
+ color: chroma(chromaColor.rgb()).hex().replace('#', '%23'),
2725
+ opacity: chromaColor.alpha()
2502
2726
  };
2503
2727
  };
2504
2728
 
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
- */
2729
+ exports.formatColor = formatColor;
2730
+ PureMapContainer_1.default.displayName = 'PureMapContainer';
2514
2731
 
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;
2732
+ var PureMap = function PureMap(props) {
2733
+ var width = props.width,
2734
+ height = props.height,
2735
+ backgroundColor = props.backgroundColor,
2736
+ baseLayerTileServer = props.baseLayerTileServer,
2737
+ baseLayerTileServerType = props.baseLayerTileServerType,
2738
+ center = props.center,
2739
+ controlBackgroundColor = props.controlBackgroundColor,
2740
+ controlForegroundColor = props.controlForegroundColor,
2741
+ _props$layers = props.layers,
2742
+ layers = _props$layers === void 0 ? [] : _props$layers,
2743
+ scaleUnit = props.scaleUnit,
2744
+ showScale = props.showScale,
2745
+ themeColorScheme = props.themeColorScheme,
2746
+ zoom = props.zoom,
2747
+ onMapLoad = props.onMapLoad,
2748
+ onMapClick = props.onMapClick,
2749
+ onOptionsChange = props.onOptionsChange;
2520
2750
 
2521
- var _a, _b;
2751
+ var _react_1$useContext = react_1.useContext(MapContext_1.default),
2752
+ defaultTileConfig = _react_1$useContext.defaultTileConfig,
2753
+ customTileConfig = _react_1$useContext.customTileConfig;
2522
2754
 
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
- });
2755
+ var basemapContainer = react_1.useRef(null);
2756
+ var map = react_1.useRef(null);
2757
+ var scaleControl = react_1.useRef(null);
2758
+ var zoomControl = react_1.useRef(null);
2536
2759
 
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;
2760
+ var _react_1$useMemo = react_1.useMemo(function () {
2761
+ return MapUtils_1.getTilePreset({
2762
+ defaultTileConfig: defaultTileConfig,
2763
+ customTileConfig: customTileConfig
2547
2764
  });
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
- */
2765
+ }, [defaultTileConfig, customTileConfig]),
2766
+ tilePreset = _react_1$useMemo.tilePreset,
2767
+ defaultTileLight = _react_1$useMemo.defaultTileLight,
2768
+ defaultTileDark = _react_1$useMemo.defaultTileDark;
2597
2769
 
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
2770
+ var _React$useState = React.useState(zoom !== null && zoom !== void 0 ? zoom : exports.DEFAULT_ZOOM),
2771
+ _React$useState2 = _slicedToArray(_React$useState, 2),
2772
+ currentZoomLevel = _React$useState2[0],
2773
+ setCurrentZoomLevel = _React$useState2[1];
2609
2774
 
2775
+ var _React$useState3 = React.useState(false),
2776
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
2777
+ isMapLoaded = _React$useState4[0],
2778
+ setMapIsLoaded = _React$useState4[1]; // Assign default center when no center is defined
2610
2779
 
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
- }]
2780
+
2781
+ var lngLatCenter = react_1.useMemo(function () {
2782
+ if (!MapUtils_1.isValidLatLon(center)) {
2783
+ return exports.DEFAULT_CENTER;
2784
+ }
2785
+
2786
+ return [center[1], center[0]];
2787
+ }, [center]); // Assign default zoom when no zoom is defined
2788
+
2789
+ var zoomLevel = react_1.useMemo(function () {
2790
+ if (zoom === undefined) {
2791
+ return exports.DEFAULT_ZOOM;
2792
+ }
2793
+
2794
+ return zoom;
2795
+ }, [zoom]);
2796
+ var initializeMap = react_1.useCallback(function (mapStyle) {
2797
+ var fitMapToContent = function fitMapToContent() {
2798
+ var lngLatBounds = MapUtils_1.getGlobalLayerBoundaries([layers[0]]);
2799
+ map.current.fitBounds(lngLatBounds, {
2800
+ padding: MapUtils_1.MAX_BUBBLE_RADIUS + 5,
2801
+ animate: false
2802
+ });
2627
2803
  };
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
2804
 
2805
+ map.current = new maplibre_gl_1.Map(Object.assign({
2806
+ container: basemapContainer.current,
2807
+ preserveDrawingBuffer: true,
2808
+ style: mapStyle,
2809
+ center: lngLatCenter,
2810
+ zoom: zoomLevel
2811
+ }, MapUtils_1.getZoomConstraintsFromTileConfig(mapStyle))); // Fired immediately after all necessary resources have been downloaded
2812
+ // and the first visually complete rendering of the map has occurred.
2631
2813
 
2632
- return colorScheme === 'light' ? defaultTileLight : defaultTileDark;
2633
- };
2814
+ map.current.on('load', function () {
2815
+ if (layers.length > 0 && center === undefined && zoom === undefined) {
2816
+ fitMapToContent();
2817
+ }
2634
2818
 
2635
- exports.getMapStyle = getMapStyle;
2819
+ setMapIsLoaded(true); // TODO :- Temp timeout added for onMapLoad event to avoid flaky screenshots caused by
2820
+ // https://maplibre.org/maplibre-gl-js-docs/api/map/#map#fitbounds. Need alternate approach to handle the same.
2636
2821
 
2637
- var getZoomConstraintsFromTileConfig = function getZoomConstraintsFromTileConfig(tileConfig) {
2638
- var sources = tileConfig.sources,
2639
- layers = tileConfig.layers; // check sources for minzoom maxzoom first
2822
+ setTimeout(function () {
2823
+ return onMapLoad();
2824
+ }, 500);
2825
+ });
2826
+ map.current.on('zoomend', function () {
2827
+ setCurrentZoomLevel(map.current.getZoom());
2828
+ }); // drag
2829
+
2830
+ map.current.on('dragend', function () {
2831
+ var newCenter = map.current.getCenter();
2832
+ onOptionsChange({
2833
+ center: [newCenter.lat, newCenter.lng]
2834
+ });
2835
+ }); // zoom
2640
2836
 
2641
- var sourceKeys = Object.keys(sources);
2837
+ map.current.on('zoomend', function () {
2838
+ onOptionsChange({
2839
+ zoom: map.current.getZoom()
2840
+ });
2841
+ }); // zoom
2642
2842
 
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;
2843
+ zoomControl.current = new maplibre_gl_1.NavigationControl({
2844
+ showCompass: false
2845
+ });
2846
+ map.current.addControl(zoomControl.current, 'top-left');
2847
+ }, [lngLatCenter, zoomLevel, layers.length]);
2848
+ var initializeScale = react_1.useCallback(function () {
2849
+ scaleControl.current = new maplibre_gl_1.ScaleControl({
2850
+ maxWidth: 70,
2851
+ unit: scaleUnit
2852
+ });
2853
+ map.current.addControl(scaleControl.current);
2854
+ }, [scaleUnit]);
2855
+ var updateScale = react_1.useCallback(function () {
2856
+ var _a;
2647
2857
 
2648
- if (lodash_1.isNumber(minzoom) && lodash_1.isNumber(maxzoom)) {
2649
- return {
2650
- minZoom: minzoom,
2651
- maxZoom: maxzoom
2652
- };
2858
+ if (showScale) {
2859
+ (_a = scaleControl === null || scaleControl === void 0 ? void 0 : scaleControl.current) === null || _a === void 0 ? void 0 : _a.setUnit(scaleUnit);
2860
+ }
2861
+ }, [scaleUnit, showScale]);
2862
+ react_1.useEffect(function () {
2863
+ if (map.current) {
2864
+ map.current.resize();
2865
+ }
2866
+ }, [width, height]);
2867
+ react_1.useEffect(function () {
2868
+ // do not render when defaultTileConfig, customTileConfig and tileset are not configured
2869
+ if (Object.keys(tilePreset).length === 0 && (!baseLayerTileServer || !baseLayerTileServerType)) {
2870
+ // eslint-disable-next-line no-console
2871
+ console.warn('Map Tile Server configuration is missing or invalid. Please provide a valid configuration');
2872
+ return;
2653
2873
  }
2654
- } // then check layers
2655
2874
 
2875
+ var mapStyle = MapUtils_1.getMapStyle({
2876
+ baseLayerTileServer: baseLayerTileServer,
2877
+ baseLayerTileServerType: baseLayerTileServerType,
2878
+ tilePreset: tilePreset,
2879
+ colorScheme: themeColorScheme,
2880
+ defaultTileLight: defaultTileLight,
2881
+ defaultTileDark: defaultTileDark
2882
+ });
2883
+ mapStyle.version = MapUtils_1.MAP_STYLE_VERSION_NUMBER; // If the map has already been initialized, we update the styles
2656
2884
 
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;
2885
+ if (map.current) {
2886
+ // Refer to https://maplibre.org/maplibre-gl-js-docs/api/map/#setstyle-example for options.diff (default is true)
2887
+ map.current.setStyle(lodash_1.omit(mapStyle, ['theme', 'name', 'key']));
2661
2888
 
2662
- if (lodash_1.isNumber(_minzoom) && lodash_1.isNumber(_maxzoom)) {
2663
- return {
2664
- minZoom: _minzoom,
2665
- maxZoom: _maxzoom
2666
- };
2889
+ var _MapUtils_1$getZoomCo = MapUtils_1.getZoomConstraintsFromTileConfig(mapStyle),
2890
+ minZoom = _MapUtils_1$getZoomCo.minZoom,
2891
+ maxZoom = _MapUtils_1$getZoomCo.maxZoom;
2892
+
2893
+ map.current.setMinZoom(minZoom);
2894
+ map.current.setMaxZoom(maxZoom);
2895
+ updateScale();
2896
+ } else {
2897
+ // initialize the map only once with a constructed style from user configured options
2898
+ // or default configs from the map context
2899
+ initializeMap(lodash_1.omit(mapStyle, ['theme', 'name', 'key']));
2900
+ initializeScale();
2667
2901
  }
2668
- } // Maplibre default - would reset previous min/maxZoom
2902
+ }, [tilePreset, initializeMap, initializeScale, updateScale, defaultTileLight, defaultTileDark, baseLayerTileServer, baseLayerTileServerType, themeColorScheme]);
2903
+ react_1.useEffect(function () {
2904
+ if (map.current) {
2905
+ map.current.flyTo({
2906
+ center: lngLatCenter,
2907
+ zoom: zoomLevel
2908
+ });
2909
+ }
2910
+ }, [lngLatCenter, zoom]);
2911
+ react_1.useEffect(function () {
2912
+ return function () {
2913
+ if (map.current) {
2914
+ map.current.remove();
2915
+ }
2916
+ };
2917
+ }, []);
2669
2918
 
2919
+ var _layers = _slicedToArray(layers, 1),
2920
+ clusterLayer = _layers[0];
2670
2921
 
2671
- return {
2672
- minZoom: 0,
2673
- maxZoom: 22
2674
- };
2922
+ return React.createElement(React.Fragment, null, React.createElement(PureMapContainer_1.default, {
2923
+ className: "puremap",
2924
+ width: width,
2925
+ height: height,
2926
+ backgroundColor: backgroundColor,
2927
+ controlBackgroundColor: controlBackgroundColor,
2928
+ controlForegroundColor: controlForegroundColor,
2929
+ controlIconColorEncoded: exports.formatColor(controlForegroundColor),
2930
+ ref: basemapContainer,
2931
+ showScale: showScale
2932
+ }, isMapLoaded && clusterLayer && React.createElement(ClusterLayer_1.default, {
2933
+ clusterLayer: clusterLayer,
2934
+ themeColorScheme: themeColorScheme,
2935
+ map: map,
2936
+ zoom: currentZoomLevel,
2937
+ onMapClick: onMapClick
2938
+ })));
2675
2939
  };
2676
2940
 
2677
- exports.getZoomConstraintsFromTileConfig = getZoomConstraintsFromTileConfig;
2941
+ var isLatLng = function isLatLng(props, propName, componentName) {
2942
+ if (!props[propName]) {
2943
+ return null;
2944
+ }
2678
2945
 
2679
- var getZoomLevelFromGeobin = function getZoomLevelFromGeobin(geobinStr) {
2680
- var _a;
2946
+ var latAbs = Math.abs(props[propName][0]);
2947
+ var lonAbs = Math.abs(props[propName][1]);
2948
+ var latlon = props[propName];
2681
2949
 
2682
- if (!geobinStr) {
2683
- return null;
2684
- } // geostats cmds return geobin with zoom level 0-18, 0-99 in the geobinPattern covers the range
2950
+ if (latAbs > MapUtils_1.MAX_LATITUDE && lonAbs <= MapUtils_1.MAX_LATITUDE) {
2951
+ throw new Error("".concat(componentName, " ").concat(propName, " may have reversed [lat, lon] ranges."));
2952
+ }
2685
2953
 
2954
+ if (!MapUtils_1.isValidLatLon(latlon)) {
2955
+ throw new Error("".concat(componentName, " ").concat(propName, " incorrect [lat, lon] ranges."));
2956
+ }
2686
2957
 
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;
2958
+ return null;
2690
2959
  };
2691
2960
 
2692
- exports.getZoomLevelFromGeobin = getZoomLevelFromGeobin; // Bubble colors - static
2961
+ exports.isLatLng = isLatLng;
2962
+ PureMap.propTypes = {
2963
+ // eslint-disable-next-line react/no-unused-prop-types
2964
+ mode: T.string,
2965
+ width: T.oneOfType([T.string, T.number]),
2966
+ height: T.oneOfType([T.string, T.number]),
2967
+ backgroundColor: T.string,
2968
+ baseLayerTileServer: T.string,
2969
+ baseLayerTileServerType: T.string,
2970
+ center: exports.isLatLng,
2971
+ controlBackgroundColor: T.string,
2972
+ controlForegroundColor: T.string,
2973
+ layers: T.arrayOf(T.shape({
2974
+ type: T.string,
2975
+ latitude: T.arrayOf(T.number),
2976
+ longitude: T.arrayOf(T.number),
2977
+ label: T.string,
2978
+ showInLegend: T.bool,
2979
+ dataColors: T.oneOfType([T.string, T.arrayOf(T.string)]),
2980
+ seriesColors: T.arrayOf(T.string),
2981
+ additionalTooltipFields: T.arrayOf(T.string),
2982
+ resultLimit: T.number
2983
+ })),
2984
+ scaleUnit: T.string,
2985
+ showScale: T.bool,
2986
+ themeColorScheme: T.string,
2987
+ zoom: T.number,
2988
+ onMapLoad: T.func,
2989
+ onMapClick: T.func,
2990
+ onOptionsChange: T.func
2991
+ };
2992
+ PureMap.defaultProps = {
2993
+ mode: 'view',
2994
+ width: 800,
2995
+ height: 500,
2996
+ backgroundColor: '#0b0c0e',
2997
+ controlBackgroundColor: exports.DEFAULT_CONTROL_BACKGROUND_COLOR,
2998
+ controlForegroundColor: exports.DEFAULT_CONTROL_FOREGROUND_COLOR,
2999
+ scaleUnit: exports.DEFAULT_SCALE_UNIT,
3000
+ showScale: exports.DEFAULT_SHOW_SCALE,
3001
+ layers: [],
3002
+ themeColorScheme: 'dark',
3003
+ onMapLoad: lodash_1.noop,
3004
+ onMapClick: lodash_1.noop,
3005
+ onOptionsChange: lodash_1.noop
3006
+ };
3007
+ exports.default = PureMap;
2693
3008
 
2694
- var getStaticColors = function getStaticColors(colorCount, colorArray) {
2695
- if (colorCount < 0 || !colorCount) {
2696
- return [exports.DEFAULT_CLUSTER_COLOR];
2697
- }
3009
+ /***/ }),
3010
+ /* 196 */
3011
+ /***/ (function(module, exports) {
2698
3012
 
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
3013
+ module.exports = require("chroma-js");
2705
3014
 
3015
+ /***/ }),
3016
+ /* 197 */
3017
+ /***/ (function(module, exports) {
2706
3018
 
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
- };
3019
+ module.exports = require("@splunk/visualization-context/MapContext");
2711
3020
 
2712
- exports.getStaticColors = getStaticColors; // Bubble size
3021
+ /***/ }),
3022
+ /* 198 */
3023
+ /***/ (function(module, exports, __webpack_require__) {
2713
3024
 
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);
3025
+ "use strict";
2716
3026
 
2717
- if (size > exports.MAX_BUBBLE_RADIUS) {
2718
- return exports.MAX_BUBBLE_RADIUS;
2719
- }
2720
3027
 
2721
- if (size < exports.MIN_BUBBLE_RADIUS) {
2722
- return exports.MIN_BUBBLE_RADIUS;
2723
- }
3028
+ Object.defineProperty(exports, "__esModule", {
3029
+ value: true
3030
+ });
2724
3031
 
2725
- return size;
2726
- };
3032
+ var styled_components_1 = __webpack_require__(4);
2727
3033
 
2728
- exports.matchSize = matchSize;
3034
+ var lodash_1 = __webpack_require__(2);
2729
3035
 
2730
- var transposeArray = function transposeArray(array) {
2731
- if (!array || !array.length || !array[0] || !array[0].length) {
2732
- return [];
2733
- }
3036
+ var style_1 = __webpack_require__(14);
2734
3037
 
2735
- return array[0].map(function (_, i) {
2736
- return array.map(function (row) {
2737
- return row[i];
2738
- });
2739
- });
2740
- };
3038
+ var maplibre_gl_css_1 = __webpack_require__(199);
2741
3039
 
2742
- exports.transposeArray = transposeArray; // sanitize values: update all null, undefined, or negative values to 0
3040
+ var PureMapContainer = styled_components_1.default.div.withConfig({
3041
+ displayName: "PureMapContainer",
3042
+ componentId: "sc-1gjwxfv-0"
3043
+ })(["", " 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) {
3044
+ return props.backgroundColor;
3045
+ }, function (props) {
3046
+ return style_1.toDimension(lodash_1.pick(props, ['width', 'height']));
3047
+ }, function (props) {
3048
+ return props.controlBackgroundColor;
3049
+ }, function (props) {
3050
+ return props.controlIconColorEncoded.color;
3051
+ }, function (props) {
3052
+ return props.controlIconColorEncoded.opacity;
3053
+ }, function (props) {
3054
+ return props.controlIconColorEncoded.color;
3055
+ }, function (props) {
3056
+ return props.controlIconColorEncoded.opacity;
3057
+ }, function (props) {
3058
+ return props.showScale ? 'inline' : 'none';
3059
+ }, function (props) {
3060
+ return props.controlBackgroundColor;
3061
+ }, function (props) {
3062
+ return props.controlBackgroundColor;
3063
+ }, function (props) {
3064
+ return props.controlForegroundColor;
3065
+ }, function (props) {
3066
+ return props.controlForegroundColor;
3067
+ });
3068
+ exports.default = PureMapContainer;
2743
3069
 
2744
- var sanitizeValues = function sanitizeValues(values) {
2745
- // null / undefined
2746
- if (!values) {
2747
- return 0;
2748
- } // number
3070
+ /***/ }),
3071
+ /* 199 */
3072
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
2749
3073
 
3074
+ "use strict";
3075
+ __webpack_require__.r(__webpack_exports__);
3076
+ /* 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
3077
 
2751
- if (!Array.isArray(values)) {
2752
- return values > 0 ? values : 0;
2753
- } // array
3078
+ /***/ }),
3079
+ /* 200 */
3080
+ /***/ (function(module, exports, __webpack_require__) {
2754
3081
 
3082
+ "use strict";
2755
3083
 
2756
- return values.map(function (arr) {
2757
- return exports.sanitizeValues(arr);
2758
- });
2759
- };
2760
3084
 
2761
- exports.sanitizeValues = sanitizeValues;
3085
+ Object.defineProperty(exports, "__esModule", {
3086
+ value: true
3087
+ });
2762
3088
 
2763
- var bakeBubbleData = function bakeBubbleData(layer) {
2764
- var _a;
3089
+ var React = __webpack_require__(1);
2765
3090
 
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
3091
+ var BubbleLayer_1 = __webpack_require__(201);
2771
3092
 
3093
+ var MarkerLayer_1 = __webpack_require__(203);
2772
3094
 
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)
3095
+ var ClusterLayer = function ClusterLayer(_ref) {
3096
+ var clusterLayer = _ref.clusterLayer,
3097
+ themeColorScheme = _ref.themeColorScheme,
3098
+ zoom = _ref.zoom,
3099
+ map = _ref.map,
3100
+ onMapClick = _ref.onMapClick;
2781
3101
 
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
3102
+ var _a;
2792
3103
 
2793
- if (layer.bubbleSize.length > 1) {
2794
- isPie = true;
3104
+ 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)) {
3105
+ if ((clusterLayer === null || clusterLayer === void 0 ? void 0 : clusterLayer.type) === 'marker' && !('geobin' in clusterLayer)) {
3106
+ return React.createElement(MarkerLayer_1.default, {
3107
+ markerLayer: clusterLayer,
3108
+ themeColorScheme: themeColorScheme,
3109
+ map: map,
3110
+ onMapClick: onMapClick
3111
+ });
2795
3112
  }
2796
- }
2797
3113
 
2798
- if (!transposedBubbleSize || !transposedBubbleSize.length) {
2799
- return null;
3114
+ if ((clusterLayer === null || clusterLayer === void 0 ? void 0 : clusterLayer.type) === 'bubble' && 'geobin' in clusterLayer && 'bubbleSize' in clusterLayer) {
3115
+ return React.createElement(BubbleLayer_1.default, {
3116
+ bubbleLayer: clusterLayer,
3117
+ themeColorScheme: themeColorScheme,
3118
+ map: map,
3119
+ zoom: zoom,
3120
+ onMapClick: onMapClick
3121
+ });
3122
+ }
2800
3123
  }
2801
3124
 
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
- };
3125
+ return null;
2827
3126
  };
2828
3127
 
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
- }
3128
+ exports.default = ClusterLayer;
2845
3129
 
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
3130
+ /***/ }),
3131
+ /* 201 */
3132
+ /***/ (function(module, exports, __webpack_require__) {
2848
3133
 
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
- }
3134
+ "use strict";
2856
3135
 
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
3136
 
2868
- var _datum$data$coordinat = _slicedToArray(datum.data.coordinates, 2),
2869
- longitude = _datum$data$coordinat[0],
2870
- latitude = _datum$data$coordinat[1];
3137
+ var _slicedToArray = __webpack_require__(51);
2871
3138
 
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
- };
3139
+ var _defineProperty = __webpack_require__(7);
2899
3140
 
2900
- exports.updateBubbles = updateBubbles; // Create an SVG pie from column values
3141
+ var _toConsumableArray = __webpack_require__(41);
2901
3142
 
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
- });
3143
+ Object.defineProperty(exports, "__esModule", {
3144
+ value: true
3145
+ });
3146
+ exports.Bubble = exports.PieSegment = void 0;
2911
3147
 
2912
- if (allZeros || !orginalValues || !orginalValues.length) {
2913
- return el;
2914
- } // sanitize values
3148
+ var React = __webpack_require__(1);
2915
3149
 
3150
+ var styled_components_1 = __webpack_require__(4);
2916
3151
 
2917
- var values = orginalValues.map(function (v) {
2918
- return v > 0 ? v : 0;
2919
- }); // compute offsets for pie segments
3152
+ var lodash_1 = __webpack_require__(2);
2920
3153
 
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
3154
+ var colorUtils_1 = __webpack_require__(12);
2929
3155
 
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
3156
+ var MapUtils_1 = __webpack_require__(105);
2931
3157
 
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
3158
+ var MarkerWrapper_1 = __webpack_require__(129);
2935
3159
 
3160
+ exports.PieSegment = React.memo(function (_ref) {
3161
+ var start = _ref.start,
3162
+ end = _ref.end,
3163
+ radius = _ref.radius,
3164
+ color = _ref.color,
3165
+ themeColor = _ref.themeColor,
3166
+ segmentMetadata = _ref.segmentMetadata,
3167
+ handleBubbleClick = _ref.handleBubbleClick;
2936
3168
 
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
- };
3169
+ var _ref2 = segmentMetadata !== null && segmentMetadata !== void 0 ? segmentMetadata : {},
3170
+ name = _ref2.name,
3171
+ value = _ref2.value;
2945
3172
 
2946
- exports.createPieChart = createPieChart; // Create a pie segment
3173
+ var handleSegmentClick = React.useCallback(function (e) {
3174
+ handleBubbleClick(e, name, value);
3175
+ }, [name, value, handleBubbleClick]);
2947
3176
 
2948
- var pieSegment = function pieSegment(start, end, radius, color, themeColor) {
2949
3177
  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, " />");
3178
+ return React.createElement("circle", {
3179
+ onClick: handleSegmentClick,
3180
+ cx: radius,
3181
+ cy: radius,
3182
+ r: radius - 1,
3183
+ fill: color,
3184
+ fillOpacity: 0.5,
3185
+ strokeWidth: 1.5,
3186
+ stroke: color
3187
+ });
2951
3188
  }
2952
3189
 
2953
3190
  var a0 = 2 * Math.PI * (start - 0.25);
@@ -2957,37 +3194,209 @@ var pieSegment = function pieSegment(start, end, radius, color, themeColor) {
2957
3194
  var x1 = Math.cos(a1);
2958
3195
  var y1 = Math.sin(a1);
2959
3196
  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
- };
3197
+ return React.createElement("path", {
3198
+ onClick: handleSegmentClick,
3199
+ 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),
3200
+ fill: color,
3201
+ fillOpacity: 0.8,
3202
+ stroke: themeColor,
3203
+ strokeWidth: 2,
3204
+ strokeOpacity: 0.3
3205
+ });
3206
+ });
3207
+ exports.PieSegment.displayName = 'MapBubblePieSegment';
3208
+ var StyledMarkerWrapper = styled_components_1.default(MarkerWrapper_1.default).withConfig({
3209
+ displayName: "BubbleLayer__StyledMarkerWrapper",
3210
+ componentId: "sc-8aqbb-0"
3211
+ })(["cursor:pointer;"]);
3212
+ exports.Bubble = React.memo(function (_ref3) {
3213
+ var originalValues = _ref3.originalValues,
3214
+ valueRange = _ref3.valueRange,
3215
+ colors = _ref3.colors,
3216
+ themeColor = _ref3.themeColor,
3217
+ isPie = _ref3.isPie,
3218
+ latitude = _ref3.latitude,
3219
+ longitude = _ref3.longitude,
3220
+ bubbleSize = _ref3.bubbleSize,
3221
+ _ref3$additionalField = _ref3.additionalFields,
3222
+ additionalFields = _ref3$additionalField === void 0 ? [] : _ref3$additionalField,
3223
+ map = _ref3.map,
3224
+ handleMapClick = _ref3.handleMapClick;
3225
+ var onBubbleClick = React.useCallback(function (e, name, value) {
3226
+ handleMapClick(e, name, value);
3227
+ e.stopPropagation();
3228
+ }, [bubbleSize]);
3229
+ var bubble = React.useMemo(function () {
3230
+ var allZeros = originalValues.every(function (v) {
3231
+ return v === 0;
3232
+ });
2962
3233
 
2963
- exports.pieSegment = pieSegment;
3234
+ if (allZeros || !originalValues.length) {
3235
+ return null;
3236
+ } // sanitize values
2964
3237
 
2965
- /***/ }),
2966
- /* 198 */
2967
- /***/ (function(module, exports, __webpack_require__) {
2968
3238
 
2969
- "use strict";
3239
+ var values = originalValues.map(function (v) {
3240
+ return v > 0 ? v : 0;
3241
+ }); // compute offsets for pie segments
2970
3242
 
3243
+ var offsets = [];
3244
+ var total = 0;
3245
+ values.forEach(function (count) {
3246
+ offsets.push(total);
3247
+ total += count;
3248
+ });
3249
+ var radius = MapUtils_1.matchBubbleSize(valueRange, total);
3250
+ var width = radius * 2;
3251
+ return React.createElement("svg", {
3252
+ width: width,
3253
+ height: width,
3254
+ viewBox: "-3 -3 ".concat(width + 6, " ").concat(width + 6)
3255
+ }, isPie ? React.createElement("circle", {
3256
+ cx: radius,
3257
+ cy: radius,
3258
+ r: radius,
3259
+ fill: "none",
3260
+ strokeWidth: 2,
3261
+ stroke: themeColor,
3262
+ strokeOpacity: 0.3
3263
+ }) : null, values.map(function (v, i) {
3264
+ return React.createElement(exports.PieSegment, {
3265
+ key: String(i),
3266
+ start: offsets[i] / total,
3267
+ end: (offsets[i] + v) / total,
3268
+ radius: radius,
3269
+ color: colors[i],
3270
+ themeColor: themeColor,
3271
+ segmentMetadata: bubbleSize[i],
3272
+ handleBubbleClick: onBubbleClick
3273
+ });
3274
+ }));
3275
+ }, [colors, isPie, originalValues, themeColor, valueRange]);
2971
3276
 
2972
- Object.defineProperty(exports, "__esModule", {
2973
- value: true
3277
+ if (!bubble) {
3278
+ return null;
3279
+ }
3280
+
3281
+ return React.createElement(StyledMarkerWrapper, {
3282
+ longitude: longitude,
3283
+ latitude: latitude,
3284
+ additionalFields: [].concat(_toConsumableArray(bubbleSize), _toConsumableArray(additionalFields)),
3285
+ map: map,
3286
+ "data-test-type": "bubble"
3287
+ }, bubble);
2974
3288
  });
2975
- exports.defaultMarkerDarkTheme = exports.defaultMarkerLightTheme = void 0;
3289
+ exports.Bubble.displayName = 'MapBubble';
2976
3290
 
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
- };
3291
+ var BubbleLayer = function BubbleLayer(props) {
3292
+ var bubbleLayer = props.bubbleLayer,
3293
+ themeColorScheme = props.themeColorScheme,
3294
+ map = props.map,
3295
+ zoom = props.zoom,
3296
+ onMapClick = props.onMapClick;
3297
+ bubbleLayer.seriesColors = bubbleLayer.seriesColors || MapUtils_1.DEFAULT_SERIES_COLORS;
3298
+ bubbleLayer.bubbleSize = bubbleLayer.bubbleSize || [];
3299
+ var bakedData = React.useMemo(function () {
3300
+ return MapUtils_1.bakeBubbleData(bubbleLayer);
3301
+ }, [bubbleLayer]);
3302
+ var staticColors = React.useMemo(function () {
3303
+ return MapUtils_1.getStaticColors(bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors);
3304
+ }, [bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors]);
3305
+
3306
+ var _ref4 = bakedData !== null && bakedData !== void 0 ? bakedData : {},
3307
+ _ref4$data = _ref4.data,
3308
+ data = _ref4$data === void 0 ? [] : _ref4$data,
3309
+ _ref4$dataRange = _ref4.dataRange,
3310
+ dataRange = _ref4$dataRange === void 0 ? [] : _ref4$dataRange,
3311
+ resultLimit = _ref4.resultLimit,
3312
+ bubbleSizeFields = _ref4.bubbleSizeFields,
3313
+ isPie = _ref4.isPie;
3314
+
3315
+ var _bubbleLayer$addition = bubbleLayer.additionalTooltipFields,
3316
+ additionalTooltipFields = _bubbleLayer$addition === void 0 ? [] : _bubbleLayer$addition;
3317
+ var roundedZoom = Math.round(zoom);
3318
+ var themeColor = themeColorScheme === 'light' ? '#ffffff' : '#1a1c20';
3319
+ var dynamicColors = bubbleLayer.dataColors; // filter data for the current zoom level and sort base on values
3320
+
3321
+ var dataToRender = React.useMemo(function () {
3322
+ return data.reduce(function (acc, datum, i) {
3323
+ if (datum.zoom === roundedZoom) {
3324
+ acc.push({
3325
+ data: datum,
3326
+ idx: i
3327
+ });
3328
+ }
3329
+
3330
+ return acc;
3331
+ }, []).slice(0, resultLimit || MapUtils_1.DEFAULT_RESULT_LIMIT).sort(function (a, b) {
3332
+ return lodash_1.sum(b.data.values) - lodash_1.sum(a.data.values);
3333
+ });
3334
+ }, [data, resultLimit, roundedZoom]);
3335
+
3336
+ var _handleMapClick = React.useCallback(function (e, name, value, i) {
3337
+ var _a, _b, _c; // retrieve metadata from the appropriate datum, indexed by i
3338
+
3339
+
3340
+ 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 : {};
3341
+ var payload = Object.keys(metadata).reduce(function (acc, curr) {
3342
+ var key = "row.".concat(curr, ".value");
3343
+ var val = String(metadata[curr]);
3344
+ return Object.assign(Object.assign({}, acc), _defineProperty({}, key, val));
3345
+ }, {
3346
+ name: name,
3347
+ value: String(value)
3348
+ });
3349
+ onMapClick({
3350
+ e: e,
3351
+ payload: payload
3352
+ });
3353
+ }, [dataToRender]);
2980
3354
 
2981
- exports.defaultMarkerLightTheme = defaultMarkerLightTheme;
3355
+ return React.createElement(React.Fragment, null, dataToRender.map(function (datum, i) {
3356
+ var colors = dynamicColors ? [dataToRender.map(function (obj) {
3357
+ return colorUtils_1.isColor(dynamicColors[obj.idx]) ? dynamicColors[obj.idx] : MapUtils_1.DEFAULT_CLUSTER_COLOR;
3358
+ })[i]] : staticColors;
3359
+
3360
+ var _datum$data$coordinat = _slicedToArray(datum.data.coordinates, 2),
3361
+ longitude = _datum$data$coordinat[0],
3362
+ latitude = _datum$data$coordinat[1];
2982
3363
 
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>");
3364
+ var bubbleSize = datum.data.values.map(function (value, index) {
3365
+ return {
3366
+ name: bubbleSizeFields[index],
3367
+ value: value,
3368
+ color: colors[index]
3369
+ };
3370
+ });
3371
+ var additionalFields = bubbleLayer.metadata ? additionalTooltipFields.map(function (field) {
3372
+ return {
3373
+ name: field,
3374
+ value: datum.data.metadata[field]
3375
+ };
3376
+ }) : [];
3377
+ return React.createElement(exports.Bubble, {
3378
+ key: String(i),
3379
+ originalValues: datum.data.values,
3380
+ valueRange: dataRange,
3381
+ colors: colors,
3382
+ themeColor: themeColor,
3383
+ isPie: isPie,
3384
+ longitude: longitude,
3385
+ latitude: latitude,
3386
+ bubbleSize: bubbleSize,
3387
+ additionalFields: additionalFields,
3388
+ map: map,
3389
+ handleMapClick: function handleMapClick(e, name, value) {
3390
+ return _handleMapClick(e, name, value, i);
3391
+ }
3392
+ });
3393
+ }));
2985
3394
  };
2986
3395
 
2987
- exports.defaultMarkerDarkTheme = defaultMarkerDarkTheme;
3396
+ exports.default = BubbleLayer;
2988
3397
 
2989
3398
  /***/ }),
2990
- /* 199 */
3399
+ /* 202 */
2991
3400
  /***/ (function(module, exports, __webpack_require__) {
2992
3401
 
2993
3402
  "use strict";
@@ -3002,7 +3411,7 @@ var React = __webpack_require__(1);
3002
3411
 
3003
3412
  var styled_components_1 = __webpack_require__(4);
3004
3413
 
3005
- var Popover_1 = __webpack_require__(100);
3414
+ var Popover_1 = __webpack_require__(106);
3006
3415
 
3007
3416
  var i18n_1 = __webpack_require__(3);
3008
3417
 
@@ -3013,7 +3422,7 @@ var StyledPopover = styled_components_1.default(Popover_1.default).withConfig({
3013
3422
  var StyledTable = styled_components_1.default.table.withConfig({
3014
3423
  displayName: "Tooltip__StyledTable",
3015
3424
  componentId: "xwewsa-1"
3016
- })(["padding:2px 6px 2px 6px;width:100%;"]);
3425
+ })(["margin:2px 6px 2px 6px;width:calc(100% - 12px);"]);
3017
3426
  var StyledTitleColumn = styled_components_1.default.td.withConfig({
3018
3427
  displayName: "Tooltip__StyledTitleColumn",
3019
3428
  componentId: "xwewsa-2"
@@ -3022,8 +3431,8 @@ var StyledValueColumn = styled_components_1.default.td.withConfig({
3022
3431
  displayName: "Tooltip__StyledValueColumn",
3023
3432
  componentId: "xwewsa-3"
3024
3433
  })(["text-align:right;"]);
3025
- var BubbleSizeColorBlock = styled_components_1.default.div.withConfig({
3026
- displayName: "Tooltip__BubbleSizeColorBlock",
3434
+ var StyledColorBlock = styled_components_1.default.div.withConfig({
3435
+ displayName: "Tooltip__StyledColorBlock",
3027
3436
  componentId: "xwewsa-4"
3028
3437
  })(["background-color:", ";display:inline-block;margin-right:4px;border-radius:2px;width:6px;height:11px;transform:translateY(1px);"], function (props) {
3029
3438
  return props.color;
@@ -3063,13 +3472,14 @@ var convertDegToDMS = function convertDegToDMS(decimalDegree, type) {
3063
3472
  exports.convertDegToDMS = convertDegToDMS;
3064
3473
 
3065
3474
  var Tooltip = function Tooltip(_ref) {
3066
- var anchor = _ref.anchor,
3475
+ var open = _ref.open,
3476
+ anchor = _ref.anchor,
3067
3477
  latitude = _ref.latitude,
3068
3478
  longitude = _ref.longitude,
3069
- _ref$bubbleSize = _ref.bubbleSize,
3070
- bubbleSize = _ref$bubbleSize === void 0 ? [] : _ref$bubbleSize;
3479
+ _ref$additionalFields = _ref.additionalFields,
3480
+ additionalFields = _ref$additionalFields === void 0 ? [] : _ref$additionalFields;
3071
3481
  return React.createElement(StyledPopover, {
3072
- open: !!anchor,
3482
+ open: open,
3073
3483
  anchor: anchor,
3074
3484
  "data-test": "map-marker-tooltip",
3075
3485
  defaultPlacement: "above"
@@ -3077,26 +3487,191 @@ var Tooltip = function Tooltip(_ref) {
3077
3487
  "data-test": "latitude"
3078
3488
  }, exports.convertDegToDMS(latitude, 'latitude'))), React.createElement("tr", null, React.createElement(StyledTitleColumn, null, i18n_1._('Longitude')), React.createElement(StyledValueColumn, {
3079
3489
  "data-test": "longitude"
3080
- }, exports.convertDegToDMS(longitude, 'longitude'))), bubbleSize.map(function (_ref2) {
3490
+ }, exports.convertDegToDMS(longitude, 'longitude'))), additionalFields.map(function (_ref2, index) {
3081
3491
  var name = _ref2.name,
3082
- count = _ref2.count,
3492
+ value = _ref2.value,
3083
3493
  color = _ref2.color;
3084
3494
  return React.createElement("tr", {
3085
- key: color
3495
+ key: String(index)
3086
3496
  }, React.createElement(StyledTitleColumn, {
3087
- "data-test": "count-title"
3088
- }, React.createElement(BubbleSizeColorBlock, {
3497
+ "data-test": "field-title"
3498
+ }, color ? React.createElement(StyledColorBlock, {
3499
+ "data-test": "field-color",
3089
3500
  color: color
3090
- }), name), React.createElement(StyledValueColumn, {
3091
- "data-test": "count-value"
3092
- }, count));
3501
+ }) : null, name), React.createElement(StyledValueColumn, {
3502
+ "data-test": "field-value"
3503
+ }, value));
3093
3504
  }))));
3094
3505
  };
3095
3506
 
3096
3507
  exports.default = Tooltip;
3097
3508
 
3098
3509
  /***/ }),
3099
- /* 200 */
3510
+ /* 203 */
3511
+ /***/ (function(module, exports, __webpack_require__) {
3512
+
3513
+ "use strict";
3514
+
3515
+
3516
+ var _defineProperty = __webpack_require__(7);
3517
+
3518
+ var __rest = this && this.__rest || function (s, e) {
3519
+ var t = {};
3520
+
3521
+ for (var p in s) {
3522
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
3523
+ }
3524
+
3525
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
3526
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
3527
+ }
3528
+ return t;
3529
+ };
3530
+
3531
+ Object.defineProperty(exports, "__esModule", {
3532
+ value: true
3533
+ });
3534
+ exports.generateMarkerWrapperProps = exports.MarkerIcon = void 0;
3535
+
3536
+ var styled_components_1 = __webpack_require__(4);
3537
+
3538
+ var React = __webpack_require__(1);
3539
+
3540
+ var colorUtils_1 = __webpack_require__(12);
3541
+
3542
+ var lodash_1 = __webpack_require__(2);
3543
+
3544
+ var MapUtils_1 = __webpack_require__(105);
3545
+
3546
+ var MarkerWrapper_1 = __webpack_require__(129);
3547
+
3548
+ var MarkerIcon = function MarkerIcon(_a) {
3549
+ var theme = _a.theme,
3550
+ color = _a.color,
3551
+ otherProps = __rest(_a, ["theme", "color"]);
3552
+
3553
+ var strokeOpacity = theme === 'light' ? 0.7 : 0.15;
3554
+ return React.createElement("svg", Object.assign({
3555
+ width: 22,
3556
+ height: 28,
3557
+ fill: "none"
3558
+ }, otherProps), React.createElement("path", {
3559
+ 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",
3560
+ fill: color
3561
+ }), React.createElement("path", {
3562
+ 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",
3563
+ stroke: "#08090A"
3564
+ }), React.createElement("path", {
3565
+ 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",
3566
+ stroke: color,
3567
+ strokeOpacity: strokeOpacity
3568
+ }));
3569
+ };
3570
+
3571
+ exports.MarkerIcon = MarkerIcon;
3572
+ var Marker = React.memo(function (_ref) {
3573
+ var latitude = _ref.latitude,
3574
+ longitude = _ref.longitude,
3575
+ color = _ref.color,
3576
+ themeColorScheme = _ref.themeColorScheme,
3577
+ map = _ref.map,
3578
+ additionalFields = _ref.additionalFields,
3579
+ handleLayerClick = _ref.handleLayerClick;
3580
+ var icon = React.useMemo(function () {
3581
+ return React.createElement(exports.MarkerIcon, {
3582
+ color: color,
3583
+ theme: themeColorScheme,
3584
+ onClick: handleLayerClick
3585
+ });
3586
+ }, [color, handleLayerClick, themeColorScheme]);
3587
+ return React.createElement(StyledMarkerWrapper, {
3588
+ latitude: latitude,
3589
+ longitude: longitude,
3590
+ map: map,
3591
+ additionalFields: additionalFields,
3592
+ "data-test-type": "marker"
3593
+ }, icon);
3594
+ });
3595
+ Marker.displayName = 'MapMarker';
3596
+ var StyledMarkerWrapper = styled_components_1.default(MarkerWrapper_1.default).withConfig({
3597
+ displayName: "MarkerLayer__StyledMarkerWrapper",
3598
+ componentId: "ej9u2l-0"
3599
+ })(["width:22px;height:28px;cursor:pointer;"]);
3600
+
3601
+ var generateMarkerWrapperProps = function generateMarkerWrapperProps(markerLayer) {
3602
+ var onMapClick = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : lodash_1.noop;
3603
+ var latArray = markerLayer.latitude;
3604
+ var lonArray = markerLayer.longitude;
3605
+ var isStaticColor = !markerLayer.dataColors;
3606
+ var limit = Math.min(latArray.length, lonArray.length, markerLayer.resultLimit ? markerLayer.resultLimit : MapUtils_1.DEFAULT_RESULT_LIMIT);
3607
+ var markerProps = [];
3608
+
3609
+ var _loop = function _loop(i) {
3610
+ var staticColor = markerLayer.seriesColors && colorUtils_1.isColor(markerLayer.seriesColors[0]) ? markerLayer.seriesColors[0] : MapUtils_1.DEFAULT_CLUSTER_COLOR;
3611
+ var dynamicColor = markerLayer.dataColors && colorUtils_1.isColor(markerLayer.dataColors[i]) ? markerLayer.dataColors[i] : MapUtils_1.DEFAULT_CLUSTER_COLOR;
3612
+ var color = isStaticColor ? staticColor : dynamicColor;
3613
+ var additionalFields = markerLayer.metadata ? markerLayer.additionalTooltipFields.map(function (field) {
3614
+ return {
3615
+ name: field,
3616
+ value: markerLayer.metadata[i][field]
3617
+ };
3618
+ }) : [];
3619
+
3620
+ var handleLayerClick = function handleLayerClick(e) {
3621
+ var _a;
3622
+
3623
+ var metadata = (_a = markerLayer === null || markerLayer === void 0 ? void 0 : markerLayer.metadata[i]) !== null && _a !== void 0 ? _a : {};
3624
+ var payload = Object.keys(metadata).reduce(function (acc, curr) {
3625
+ var key = "row.".concat(curr, ".value");
3626
+ var value = String(metadata[curr]);
3627
+ return Object.assign(Object.assign({}, acc), _defineProperty({}, key, value));
3628
+ }, {});
3629
+ onMapClick({
3630
+ e: e,
3631
+ payload: payload
3632
+ });
3633
+ };
3634
+
3635
+ markerProps.push({
3636
+ latitude: latArray[i],
3637
+ longitude: lonArray[i],
3638
+ color: color,
3639
+ additionalFields: additionalFields,
3640
+ handleLayerClick: handleLayerClick
3641
+ });
3642
+ };
3643
+
3644
+ for (var i = 0; i < limit; i += 1) {
3645
+ _loop(i);
3646
+ }
3647
+
3648
+ return markerProps;
3649
+ };
3650
+
3651
+ exports.generateMarkerWrapperProps = generateMarkerWrapperProps;
3652
+
3653
+ var MarkerLayer = function MarkerLayer(props) {
3654
+ var map = props.map,
3655
+ themeColorScheme = props.themeColorScheme,
3656
+ markerLayer = props.markerLayer,
3657
+ onMapClick = props.onMapClick;
3658
+ markerLayer.seriesColors = markerLayer.seriesColors || MapUtils_1.DEFAULT_SERIES_COLORS;
3659
+ var markerPropsList = React.useMemo(function () {
3660
+ return exports.generateMarkerWrapperProps(markerLayer, onMapClick);
3661
+ }, [markerLayer, onMapClick]);
3662
+ return React.createElement(React.Fragment, null, markerPropsList.map(function (markerProps, i) {
3663
+ return React.createElement(Marker, Object.assign({
3664
+ key: String(i),
3665
+ themeColorScheme: themeColorScheme,
3666
+ map: map
3667
+ }, markerProps));
3668
+ }));
3669
+ };
3670
+
3671
+ exports.default = MarkerLayer;
3672
+
3673
+ /***/ }),
3674
+ /* 204 */
3100
3675
  /***/ (function(module, exports, __webpack_require__) {
3101
3676
 
3102
3677
  "use strict";
@@ -3106,19 +3681,21 @@ Object.defineProperty(exports, "__esModule", {
3106
3681
  value: true
3107
3682
  });
3108
3683
 
3109
- var visualization_icons_1 = __webpack_require__(42);
3684
+ var visualization_icons_1 = __webpack_require__(45);
3110
3685
 
3111
- var schemaUtils_1 = __webpack_require__(14);
3686
+ var placeholders_1 = __webpack_require__(44);
3112
3687
 
3113
- var visualization_color_palettes_1 = __webpack_require__(41);
3688
+ var schemaUtils_1 = __webpack_require__(15);
3114
3689
 
3115
- var themes_1 = __webpack_require__(70);
3690
+ var visualization_color_palettes_1 = __webpack_require__(43);
3691
+
3692
+ var themes_1 = __webpack_require__(65);
3116
3693
 
3117
3694
  var i18n_1 = __webpack_require__(3);
3118
3695
 
3119
3696
  var VizBehavior_1 = __webpack_require__(5);
3120
3697
 
3121
- var VizCategory_1 = __webpack_require__(27);
3698
+ var VizCategory_1 = __webpack_require__(28);
3122
3699
 
3123
3700
  var configUtils_1 = __webpack_require__(6);
3124
3701
 
@@ -3163,14 +3740,13 @@ var size = {
3163
3740
  var optionsSchema = {
3164
3741
  backgroundColor: {
3165
3742
  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".',
3743
+ 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
3744
  pattern: schemaUtils_1.COLOR_OR_TOKEN_PATTERN_WITH_RGBA,
3168
3745
  type: 'string'
3169
3746
  },
3170
3747
  center: {
3171
- default: [37.7749, -122.4194],
3172
3748
  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].',
3749
+ 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
3750
  items: {
3175
3751
  type: 'number'
3176
3752
  }
@@ -3184,18 +3760,18 @@ var optionsSchema = {
3184
3760
  longitude: '> primary | seriesByName("longitude")',
3185
3761
  seriesColors: visualization_color_palettes_1.VIZ_CATEGORICAL,
3186
3762
  bubbleSize: '> primary | frameWithoutSeriesNames("geobin", "latitude", "longitude") | frameBySeriesTypes("number")',
3187
- tooltipFields: [],
3763
+ additionalTooltipFields: [],
3188
3764
  resultLimit: 1000
3189
3765
  }, {
3190
3766
  type: 'marker',
3191
3767
  latitude: '> primary | seriesByName("latitude")',
3192
3768
  longitude: '> primary | seriesByName("longitude")',
3193
3769
  seriesColors: visualization_color_palettes_1.VIZ_CATEGORICAL,
3194
- tooltipFields: [],
3770
+ additionalTooltipFields: [],
3195
3771
  resultLimit: 1000
3196
3772
  }],
3197
3773
  type: 'array',
3198
- description: 'Specify the data visualization layers on top of the base map. Can be empty to only show the base map.',
3774
+ description: 'Specify the optional data visualization layers over the base map. If empty, only the base map appears.',
3199
3775
  items: {
3200
3776
  anyOf: [{
3201
3777
  type: 'object',
@@ -3203,25 +3779,34 @@ var optionsSchema = {
3203
3779
  type: {
3204
3780
  description: 'Specify the type of data layer method to display points on the map. For example, “bubble” or “marker”.',
3205
3781
  type: 'string',
3206
- pattern: schemaUtils_1.getPattern(['marker']),
3782
+ pattern: schemaUtils_1.getPattern(['marker', 'bubble']),
3207
3783
  default: 'marker'
3208
3784
  },
3209
3785
  latitude: {
3210
3786
  description: 'Specify a dataSource series to apply latitude coordinates for data points displayed on the map.',
3211
3787
  type: ['string', 'array'],
3788
+ items: {
3789
+ type: 'number'
3790
+ },
3212
3791
  default: '> primary | seriesByName("latitude")'
3213
3792
  },
3214
3793
  longitude: {
3215
3794
  description: 'Specify a dataSource series to apply longitude coordinates for data points displayed on the map.',
3216
3795
  type: ['string', 'array'],
3796
+ items: {
3797
+ type: 'number'
3798
+ },
3217
3799
  default: '> primary | seriesByName("longitude")'
3218
3800
  },
3219
3801
  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']
3802
+ 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)”. ',
3803
+ type: ['string', 'array'],
3804
+ items: {
3805
+ type: 'string'
3806
+ }
3222
3807
  },
3223
3808
  seriesColors: {
3224
- description: 'Specify the colors used for data points.',
3809
+ description: 'Specify the colors used for data points. If the dataColors option is specified, the seriesColors option is ignored.',
3225
3810
  type: 'array',
3226
3811
  items: {
3227
3812
  type: 'string',
@@ -3229,8 +3814,8 @@ var optionsSchema = {
3229
3814
  },
3230
3815
  default: visualization_color_palettes_1.VIZ_CATEGORICAL
3231
3816
  },
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.',
3817
+ additionalTooltipFields: {
3818
+ 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
3819
  type: 'array',
3235
3820
  items: {
3236
3821
  type: 'string'
@@ -3238,7 +3823,7 @@ var optionsSchema = {
3238
3823
  default: []
3239
3824
  },
3240
3825
  resultLimit: {
3241
- description: 'Specify the maximum number of data points rendered on the map to improve performance.',
3826
+ description: 'Specify the maximum number of data points to render on the map. Adjust the value to improve performance.',
3242
3827
  type: 'number',
3243
3828
  default: 1000
3244
3829
  }
@@ -3249,12 +3834,15 @@ var optionsSchema = {
3249
3834
  type: {
3250
3835
  description: 'Specify the type of data layer method to display points on the map. For example, “bubble” or “marker”.',
3251
3836
  type: 'string',
3252
- pattern: schemaUtils_1.getPattern(['bubble']),
3837
+ pattern: schemaUtils_1.getPattern(['marker', 'bubble']),
3253
3838
  default: 'bubble'
3254
3839
  },
3255
3840
  bubbleSize: {
3256
- description: 'Specify the data column to encode bubble size',
3841
+ description: 'Specify the data column to encode bubble size. This applies to layers where type: "bubble".',
3257
3842
  type: ['string', 'array'],
3843
+ items: {
3844
+ type: 'number'
3845
+ },
3258
3846
  default: '> primary | frameWithoutSeriesNames("geobin", "latitude", "longitude") | frameBySeriesTypes("number")'
3259
3847
  },
3260
3848
  latitude: {
@@ -3274,11 +3862,14 @@ var optionsSchema = {
3274
3862
  default: '> primary | seriesByName("longitude")'
3275
3863
  },
3276
3864
  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']
3865
+ 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)”. ',
3866
+ type: ['string', 'array'],
3867
+ items: {
3868
+ type: 'string'
3869
+ }
3279
3870
  },
3280
3871
  seriesColors: {
3281
- description: "Specify the colors used for data points. For example, [\"#FF0000\", \"#0000FF\", \"#008000\"].",
3872
+ description: 'Specify the colors used for data points. If the dataColors option is specified, the seriesColors option is ignored.',
3282
3873
  type: 'array',
3283
3874
  items: {
3284
3875
  type: 'string',
@@ -3286,8 +3877,8 @@ var optionsSchema = {
3286
3877
  },
3287
3878
  default: visualization_color_palettes_1.VIZ_CATEGORICAL
3288
3879
  },
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.',
3880
+ additionalTooltipFields: {
3881
+ 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
3882
  type: 'array',
3292
3883
  items: {
3293
3884
  type: 'string'
@@ -3295,7 +3886,7 @@ var optionsSchema = {
3295
3886
  default: []
3296
3887
  },
3297
3888
  resultLimit: {
3298
- description: 'Specify the maximum number of data points rendered on the map to improve performance.',
3889
+ description: 'Specify the maximum number of data points to render on the map. Adjust the value to improve performance.',
3299
3890
  type: 'number',
3300
3891
  default: 1000
3301
3892
  }
@@ -3306,7 +3897,7 @@ var optionsSchema = {
3306
3897
  scaleUnit: {
3307
3898
  default: 'metric',
3308
3899
  type: 'string',
3309
- description: 'Specify which scale unit to use.',
3900
+ description: 'Specify the scale unit to use.',
3310
3901
  pattern: schemaUtils_1.getPattern(['metric', 'imperial'])
3311
3902
  },
3312
3903
  // TODO: choropleth map retain old design
@@ -3318,11 +3909,11 @@ var optionsSchema = {
3318
3909
  showScale: {
3319
3910
  default: true,
3320
3911
  type: 'boolean',
3321
- description: 'Specify whether the scale on the bottom left is shown.'
3912
+ description: 'Specify whether to display the scale on the bottom left.'
3322
3913
  },
3323
3914
  baseLayerTileServer: {
3324
3915
  type: 'string',
3325
- description: 'Specify the tile set URL for the base map.'
3916
+ description: 'Specify the URL for the set of tiles that make up the base map.'
3326
3917
  },
3327
3918
  baseLayerTileServerType: {
3328
3919
  type: 'string',
@@ -3330,7 +3921,6 @@ var optionsSchema = {
3330
3921
  pattern: schemaUtils_1.getPattern(['vector', 'raster'])
3331
3922
  },
3332
3923
  zoom: {
3333
- default: 5,
3334
3924
  description: 'Specify the zoom level of the map.',
3335
3925
  type: 'number'
3336
3926
  }
@@ -3381,25 +3971,29 @@ var editorConfig = [{
3381
3971
  option: 'layers[0].latitude',
3382
3972
  editor: 'editor.columnSelector',
3383
3973
  editorProps: {
3384
- dataSourceKey: 'primary'
3974
+ dataSourceKey: 'primary',
3975
+ shouldShowInternalFields: false
3385
3976
  }
3386
3977
  }], [{
3387
3978
  label: i18n_1._('Longitude'),
3388
3979
  option: 'layers[0].longitude',
3389
3980
  editor: 'editor.columnSelector',
3390
3981
  editorProps: {
3391
- dataSourceKey: 'primary'
3982
+ dataSourceKey: 'primary',
3983
+ shouldShowInternalFields: false
3392
3984
  }
3393
3985
  }], [{
3394
3986
  label: i18n_1._('Size'),
3395
3987
  option: 'layers[0].bubbleSize',
3396
- editor: 'editor.columnSelector',
3988
+ editor: 'editor.columnMultiSelector',
3397
3989
  showEditor: function showEditor(_ref) {
3398
3990
  var options = _ref.options;
3399
3991
  return !(options.layers && options.layers.length && options.layers[0].type === 'marker');
3400
3992
  },
3401
3993
  editorProps: {
3402
- dataSourceKey: 'primary'
3994
+ dataSourceKey: 'primary',
3995
+ shouldShowInternalFields: false,
3996
+ excludeByNames: ['latitude', 'longitude', 'geobin']
3403
3997
  }
3404
3998
  }]]
3405
3999
  }];
@@ -3424,6 +4018,7 @@ var config = {
3424
4018
  * viz icon
3425
4019
  */
3426
4020
  icon: visualization_icons_1.Map,
4021
+ placeholderIcon: placeholders_1.Map,
3427
4022
  dataContract: dataContract,
3428
4023
  size: size,
3429
4024
  defaultContext: defaultContext,
@@ -3432,6 +4027,9 @@ var config = {
3432
4027
  events: {
3433
4028
  'map.load': {
3434
4029
  description: 'triggered when map is fully loaded'
4030
+ },
4031
+ 'map.click': {
4032
+ description: 'trigger when user clicks map layer'
3435
4033
  }
3436
4034
  },
3437
4035
  supports: [VizBehavior_1.VizBehavior.DYNAMIC_OPTIONS, VizBehavior_1.VizBehavior.EVENTS, VizBehavior_1.VizBehavior.PLACEHOLDER],