geoblacklight 5.4.0 → 6.0.0.pre.alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. checksums.yaml +4 -4
  2. data/.engine_cart.yml +14 -0
  3. data/.github/workflows/ruby.yml +24 -25
  4. data/.gitignore +0 -9
  5. data/.prettierignore +4 -0
  6. data/.prettierrc +5 -0
  7. data/CONTRIBUTING.md +2 -4
  8. data/Gemfile +4 -2
  9. data/README.md +4 -4
  10. data/Rakefile +0 -22
  11. data/app/assets/stylesheets/geoblacklight/global.css +7 -0
  12. data/app/assets/stylesheets/geoblacklight/home.css +22 -0
  13. data/app/assets/stylesheets/geoblacklight/index_maps.css +36 -0
  14. data/app/assets/stylesheets/geoblacklight/record.css +39 -0
  15. data/app/assets/stylesheets/geoblacklight/search.css +56 -0
  16. data/app/assets/stylesheets/geoblacklight/viewers.css +50 -0
  17. data/app/assets/stylesheets/geoblacklight.css +14 -0
  18. data/app/components/blacklight/icons/web_services_component.rb +3 -3
  19. data/app/components/geoblacklight/accordion_component.html.erb +3 -3
  20. data/app/components/geoblacklight/accordion_component.rb +4 -0
  21. data/app/components/geoblacklight/arcgis_component.html.erb +1 -1
  22. data/app/components/geoblacklight/arcgis_component.rb +1 -1
  23. data/app/components/geoblacklight/attribute_table_component.html.erb +3 -3
  24. data/app/components/geoblacklight/data_dictionary_download_component.html.erb +1 -1
  25. data/app/components/geoblacklight/display_note_component.html.erb +1 -1
  26. data/app/components/geoblacklight/display_note_component.rb +2 -1
  27. data/app/components/geoblacklight/document/citation_component.html.erb +1 -1
  28. data/app/components/geoblacklight/document/sidebar_component.html.erb +1 -4
  29. data/app/components/geoblacklight/document/sidebar_component.rb +0 -8
  30. data/app/components/geoblacklight/document_component.html.erb +1 -2
  31. data/app/components/geoblacklight/download_links_component.html.erb +0 -3
  32. data/app/components/geoblacklight/download_links_component.rb +1 -1
  33. data/app/components/geoblacklight/header_component.html.erb +4 -4
  34. data/app/components/geoblacklight/header_icons_component.rb +4 -2
  35. data/app/components/geoblacklight/homepage_feature_facet_component.html.erb +3 -7
  36. data/app/components/geoblacklight/homepage_feature_facet_component.rb +12 -3
  37. data/app/components/geoblacklight/iiif_drag_drop_component.html.erb +2 -2
  38. data/app/components/geoblacklight/iiif_drag_drop_component.rb +2 -2
  39. data/app/components/geoblacklight/index_map_inspect_component.html.erb +3 -3
  40. data/app/components/geoblacklight/index_map_legend_component.html.erb +7 -7
  41. data/app/components/geoblacklight/index_map_legend_component.rb +7 -0
  42. data/app/components/geoblacklight/item_map_viewer_component.rb +9 -5
  43. data/app/components/geoblacklight/location_leaflet_map_component.rb +28 -15
  44. data/app/components/geoblacklight/relations_component.html.erb +2 -2
  45. data/app/components/geoblacklight/search_result_component.html.erb +28 -26
  46. data/app/components/geoblacklight/search_result_component.rb +2 -2
  47. data/app/components/geoblacklight/static_map_component.rb +6 -5
  48. data/app/components/geoblacklight/viewer_help_text_component.html.erb +1 -1
  49. data/app/components/geoblacklight/viewer_help_text_component.rb +1 -1
  50. data/app/components/geoblacklight/web_services_component.html.erb +1 -1
  51. data/app/components/geoblacklight/web_services_component.rb +1 -1
  52. data/app/components/geoblacklight/web_services_default_component.html.erb +6 -6
  53. data/app/components/geoblacklight/web_services_link_component.rb +12 -9
  54. data/app/components/geoblacklight/web_services_wfs_component.html.erb +4 -4
  55. data/app/components/geoblacklight/web_services_wms_component.html.erb +4 -4
  56. data/app/controllers/download_controller.rb +0 -7
  57. data/app/controllers/relation_controller.rb +1 -1
  58. data/app/controllers/wms_controller.rb +1 -1
  59. data/app/helpers/geoblacklight_helper.rb +0 -43
  60. data/app/javascript/geoblacklight/controllers/clipboard_controller.js +6 -6
  61. data/app/javascript/geoblacklight/controllers/downloads_controller.js +37 -29
  62. data/app/javascript/geoblacklight/controllers/leaflet_viewer_controller.js +110 -134
  63. data/app/javascript/geoblacklight/controllers/oembed_viewer_controller.js +5 -5
  64. data/app/javascript/geoblacklight/controllers/openlayers_viewer_controller.js +27 -61
  65. data/app/javascript/geoblacklight/controllers/search_results_controller.js +18 -18
  66. data/app/javascript/geoblacklight/core.js +35 -36
  67. data/app/javascript/geoblacklight/index.js +10 -10
  68. data/app/javascript/geoblacklight/initializers/metadata_download.js +23 -25
  69. data/app/javascript/geoblacklight/initializers/popovers.js +4 -4
  70. data/app/javascript/geoblacklight/initializers/relations.js +20 -20
  71. data/app/javascript/geoblacklight/initializers/tooltips.js +19 -23
  72. data/app/javascript/geoblacklight/initializers/truncation.js +18 -18
  73. data/app/javascript/geoblacklight/leaflet/basemaps.js +34 -3
  74. data/app/javascript/geoblacklight/leaflet/constants.js +7 -7
  75. data/app/javascript/geoblacklight/leaflet/controls/geosearch.js +80 -74
  76. data/app/javascript/geoblacklight/leaflet/controls/layer_opacity.js +74 -73
  77. data/app/javascript/geoblacklight/leaflet/controls/sidebar.js +31 -29
  78. data/app/javascript/geoblacklight/leaflet/controls/sleep.js +54 -51
  79. data/app/javascript/geoblacklight/leaflet/inspection.js +79 -71
  80. data/app/javascript/geoblacklight/leaflet/layer_index_map.js +74 -69
  81. data/app/javascript/geoblacklight/leaflet/layer_wmts.js +14 -16
  82. data/app/javascript/geoblacklight/leaflet/layers.js +59 -66
  83. data/app/javascript/geoblacklight/leaflet/utils.js +37 -43
  84. data/app/javascript/geoblacklight/openlayers/basemaps.js +43 -15
  85. data/app/javascript/geoblacklight/openlayers/inspection.js +23 -23
  86. data/app/javascript/geoblacklight/openlayers/layers.js +12 -12
  87. data/app/models/concerns/geoblacklight/bbox_filter_query.rb +7 -9
  88. data/app/models/concerns/geoblacklight/solr_document.rb +17 -57
  89. data/app/models/concerns/geoblacklight/suppressed_records_search_behavior.rb +3 -3
  90. data/app/views/catalog/_document_split.html.erb +3 -3
  91. data/app/views/catalog/_home_text.html.erb +22 -14
  92. data/app/views/catalog/_metadata.html.erb +1 -4
  93. data/app/views/catalog/_relations_container.html.erb +1 -1
  94. data/app/views/catalog/index.html.erb +0 -1
  95. data/app/views/catalog/metadata/_markup.html.erb +1 -2
  96. data/app/views/catalog/metadata/_missing.html.erb +2 -2
  97. data/app/views/catalog/web_services.html.erb +1 -1
  98. data/app/views/relation/index.html.erb +1 -1
  99. data/app/views/relation/index.json.jbuilder +1 -1
  100. data/config/initializers/rails_config.rb +0 -3
  101. data/config/locales/geoblacklight.en.yml +79 -78
  102. data/geoblacklight.gemspec +3 -4
  103. data/lib/generators/geoblacklight/assets_generator.rb +35 -26
  104. data/lib/generators/geoblacklight/install_generator.rb +6 -11
  105. data/lib/generators/geoblacklight/templates/assets/customizations.css +6 -0
  106. data/lib/generators/geoblacklight/templates/catalog_controller.rb +102 -77
  107. data/lib/generators/geoblacklight/templates/settings.yml +97 -132
  108. data/lib/geoblacklight/configuration/default_settings_builder.rb +18 -0
  109. data/lib/geoblacklight/configuration/display_note_shown_config.rb +13 -0
  110. data/lib/geoblacklight/configuration/fields_config.rb +51 -0
  111. data/lib/geoblacklight/configuration/leaflet_config.rb +73 -0
  112. data/lib/geoblacklight/configuration/leaflet_layers_config.rb +21 -0
  113. data/lib/geoblacklight/configuration/leaflet_sleep_config.rb +20 -0
  114. data/lib/geoblacklight/configuration/legacy_settings_builder.rb +94 -0
  115. data/lib/geoblacklight/configuration.rb +148 -0
  116. data/lib/geoblacklight/download.rb +2 -5
  117. data/lib/geoblacklight/engine.rb +7 -18
  118. data/lib/geoblacklight/metadata/base.rb +0 -2
  119. data/lib/geoblacklight/metadata_transformer.rb +0 -2
  120. data/lib/geoblacklight/references.rb +6 -10
  121. data/lib/geoblacklight/relation/ancestors.rb +3 -5
  122. data/lib/geoblacklight/relation/descendants.rb +2 -4
  123. data/lib/geoblacklight/relation/relation_response.rb +5 -8
  124. data/lib/geoblacklight/version.rb +1 -1
  125. data/lib/geoblacklight/wms_layer.rb +3 -3
  126. data/lib/geoblacklight.rb +5 -15
  127. data/lib/tasks/geoblacklight.rake +0 -9
  128. data/package.json +10 -31
  129. data/schema/geoblacklight-schema-aardvark.json +1 -9
  130. data/schema/readme.md +3 -4
  131. data/solr/conf/_rest_managed.json +3 -2
  132. data/solr/conf/schema.xml +1 -1
  133. data/solr/conf/solrconfig.xml +10 -10
  134. data/spec/components/geoblacklight/arcgis_component_spec.rb +6 -6
  135. data/spec/components/geoblacklight/attribute_table_component_spec.rb +6 -7
  136. data/spec/components/geoblacklight/citation_component_spec.rb +7 -4
  137. data/spec/components/geoblacklight/display_note_component_spec.rb +8 -8
  138. data/spec/components/geoblacklight/document_component_spec.rb +13 -13
  139. data/spec/components/geoblacklight/download_links_component_spec.rb +17 -14
  140. data/spec/components/geoblacklight/header_icons_component_spec.rb +6 -11
  141. data/spec/components/geoblacklight/homepage_feature_facet_component_spec.rb +22 -30
  142. data/spec/components/geoblacklight/iiif_drag_drop_component_spec.rb +3 -3
  143. data/spec/components/geoblacklight/index_map_legend_component_spec.rb +5 -18
  144. data/spec/components/geoblacklight/item_map_viewer_component_spec.rb +5 -5
  145. data/spec/components/geoblacklight/login_link_component_spec.rb +4 -5
  146. data/spec/components/geoblacklight/search_result_component_spec.rb +2 -6
  147. data/spec/components/geoblacklight/static_map_component_spec.rb +2 -2
  148. data/spec/components/geoblacklight/viewer_help_text_component_spec.rb +4 -6
  149. data/spec/components/geoblacklight/web_services_component_spec.rb +11 -10
  150. data/spec/controllers/catalog_controller_spec.rb +7 -7
  151. data/spec/controllers/download_controller_spec.rb +1 -1
  152. data/spec/controllers/relation_controller_spec.rb +1 -1
  153. data/spec/controllers/wms_controller_spec.rb +1 -1
  154. data/spec/features/axe_spec.rb +4 -4
  155. data/spec/features/bookmarks_spec.rb +1 -1
  156. data/spec/features/citations_spec.rb +1 -1
  157. data/spec/features/configurable_basemap_spec.rb +1 -69
  158. data/spec/features/data_dictionary_download_spec.rb +1 -1
  159. data/spec/features/download_layer_spec.rb +1 -1
  160. data/spec/features/empty_search_spec.rb +1 -1
  161. data/spec/features/esri_viewer_spec.rb +1 -1
  162. data/spec/features/exports_spec.rb +1 -1
  163. data/spec/features/full_screen_control_spec.rb +3 -10
  164. data/spec/features/help_text_spec.rb +1 -1
  165. data/spec/features/home_page_spec.rb +1 -1
  166. data/spec/features/index_map_spec.rb +3 -3
  167. data/spec/features/index_view_spec.rb +7 -7
  168. data/spec/features/layer_inspection_spec.rb +1 -1
  169. data/spec/features/layer_opacity_spec.rb +1 -1
  170. data/spec/features/layer_preview_spec.rb +1 -1
  171. data/spec/features/layer_with_no_references_spec.rb +1 -1
  172. data/spec/features/linkified_attribute_table_spec.rb +1 -1
  173. data/spec/features/metadata_panel_spec.rb +1 -1
  174. data/spec/features/missing_metadata_spec.rb +1 -1
  175. data/spec/features/multiple_downloads_spec.rb +1 -1
  176. data/spec/features/oembed_spec.rb +1 -1
  177. data/spec/features/relations_spec.rb +5 -4
  178. data/spec/features/saved_searches_spec.rb +1 -1
  179. data/spec/features/search_bar_spec.rb +1 -1
  180. data/spec/features/search_results_complex_geometry_spec.rb +1 -1
  181. data/spec/features/search_results_icons_spec.rb +3 -4
  182. data/spec/features/search_results_map_spec.rb +1 -1
  183. data/spec/features/search_results_overlap_ratio_spec.rb +3 -3
  184. data/spec/features/search_spec.rb +1 -1
  185. data/spec/features/show_page_download_spec.rb +1 -1
  186. data/spec/features/show_page_metadata_spec.rb +2 -2
  187. data/spec/features/show_page_sidebar_static_map_spec.rb +1 -1
  188. data/spec/features/sms_spec.rb +1 -1
  189. data/spec/features/suppressed_records_spec.rb +1 -1
  190. data/spec/features/tilejson_spec.rb +1 -1
  191. data/spec/features/tms_spec.rb +1 -1
  192. data/spec/features/web_services_modal_spec.rb +1 -1
  193. data/spec/features/wmts_spec.rb +1 -1
  194. data/spec/features/xyz_spec.rb +1 -1
  195. data/spec/fixtures/manifests/tilejson.json +10 -19
  196. data/spec/fixtures/metadata/fgdc.html +1 -1
  197. data/spec/fixtures/metadata/iso.html +1 -1
  198. data/spec/fixtures/solr_documents/README.md +0 -1
  199. data/spec/fixtures/solr_documents/actual-papermap1.json +9 -28
  200. data/spec/fixtures/solr_documents/actual-point1.json +12 -39
  201. data/spec/fixtures/solr_documents/actual-polygon1.json +10 -30
  202. data/spec/fixtures/solr_documents/actual-raster1.json +14 -46
  203. data/spec/fixtures/solr_documents/all-relationships.json +12 -36
  204. data/spec/fixtures/solr_documents/b1g_iiif_manifest.json +33 -62
  205. data/spec/fixtures/solr_documents/b1g_wabash_child_15.json +13 -40
  206. data/spec/fixtures/solr_documents/b1g_wabash_child_16.json +13 -40
  207. data/spec/fixtures/solr_documents/b1g_wabash_child_17.json +13 -40
  208. data/spec/fixtures/solr_documents/b1g_wabash_child_18.json +13 -40
  209. data/spec/fixtures/solr_documents/b1g_wabash_parent.json +13 -40
  210. data/spec/fixtures/solr_documents/baruch_ancestor1.json +13 -40
  211. data/spec/fixtures/solr_documents/baruch_ancestor2.json +13 -40
  212. data/spec/fixtures/solr_documents/baruch_documentation_download.json +14 -46
  213. data/spec/fixtures/solr_documents/bbox-spans-180.json +7 -21
  214. data/spec/fixtures/solr_documents/complex-geom.json +11 -37
  215. data/spec/fixtures/solr_documents/cornell_html_metadata.json +12 -37
  216. data/spec/fixtures/solr_documents/display-note.json +11 -33
  217. data/spec/fixtures/solr_documents/esri-dynamic-layer-all-layers.json +13 -39
  218. data/spec/fixtures/solr_documents/esri-dynamic-layer-single-layer.json +13 -40
  219. data/spec/fixtures/solr_documents/esri-feature-layer.json +13 -39
  220. data/spec/fixtures/solr_documents/esri-image-map-layer.json +13 -40
  221. data/spec/fixtures/solr_documents/esri-tiled_map_layer.json +16 -54
  222. data/spec/fixtures/solr_documents/esri-wms-layer.json +12 -36
  223. data/spec/fixtures/solr_documents/harvard_raster.json +12 -37
  224. data/spec/fixtures/solr_documents/iiif-eastern-hemisphere.json +9 -27
  225. data/spec/fixtures/solr_documents/index-map-polygon-no-downloadurl.json +12 -41
  226. data/spec/fixtures/solr_documents/index-map-polygon.json +12 -41
  227. data/spec/fixtures/solr_documents/index-map-stanford.json +14 -45
  228. data/spec/fixtures/solr_documents/index-map-v1-complex.json +13 -38
  229. data/spec/fixtures/solr_documents/index_map_point.json +13 -42
  230. data/spec/fixtures/solr_documents/metadata_no_geom.json +4 -14
  231. data/spec/fixtures/solr_documents/metadata_no_provider.json +8 -25
  232. data/spec/fixtures/solr_documents/multiple-downloads.json +6 -18
  233. data/spec/fixtures/solr_documents/no_locn_geometry.json +4 -12
  234. data/spec/fixtures/solr_documents/no_spatial.json +4 -12
  235. data/spec/fixtures/solr_documents/oembed.json +8 -25
  236. data/spec/fixtures/solr_documents/princeton-child1.json +9 -29
  237. data/spec/fixtures/solr_documents/princeton-child2.json +9 -29
  238. data/spec/fixtures/solr_documents/princeton-child3.json +9 -29
  239. data/spec/fixtures/solr_documents/princeton-child4.json +9 -29
  240. data/spec/fixtures/solr_documents/princeton-parent.json +10 -33
  241. data/spec/fixtures/solr_documents/public_cog_princeton.json +9 -27
  242. data/spec/fixtures/solr_documents/public_iiif_princeton.json +13 -43
  243. data/spec/fixtures/solr_documents/public_pmtiles_princeton.json +29 -39
  244. data/spec/fixtures/solr_documents/public_polygon_mit.json +9 -30
  245. data/spec/fixtures/solr_documents/restricted-line.json +14 -47
  246. data/spec/fixtures/solr_documents/the-related-record.json +4 -12
  247. data/spec/fixtures/solr_documents/tilejson.json +23 -46
  248. data/spec/fixtures/solr_documents/tms.json +7 -21
  249. data/spec/fixtures/solr_documents/umn_metro_result1.json +13 -41
  250. data/spec/fixtures/solr_documents/umn_state_result1.json +13 -39
  251. data/spec/fixtures/solr_documents/umn_state_result2.json +13 -39
  252. data/spec/fixtures/solr_documents/uva_slug_colon.json +10 -30
  253. data/spec/fixtures/solr_documents/wmts-multiple.json +23 -39
  254. data/spec/fixtures/solr_documents/wmts-single-layer.json +23 -46
  255. data/spec/fixtures/solr_documents/xyz.json +10 -33
  256. data/spec/helpers/geoblacklight_helper_spec.rb +5 -50
  257. data/spec/javascripts/geoblacklight_spec.js +10 -10
  258. data/spec/javascripts/metadata_download_button_spec.js +14 -13
  259. data/spec/lib/geoblacklight/bounding_box_spec.rb +1 -1
  260. data/spec/lib/geoblacklight/configuration/default_settings_builder_spec.rb +9 -0
  261. data/spec/lib/geoblacklight/configuration_spec.rb +13 -0
  262. data/spec/lib/geoblacklight/download/csv_download_spec.rb +2 -2
  263. data/spec/lib/geoblacklight/download/geojson_download_spec.rb +2 -2
  264. data/spec/lib/geoblacklight/download/geotiff_download_spec.rb +5 -2
  265. data/spec/lib/geoblacklight/download/kmz_download_spec.rb +2 -2
  266. data/spec/lib/geoblacklight/download/shapefile_download_spec.rb +2 -2
  267. data/spec/lib/geoblacklight/download_spec.rb +15 -6
  268. data/spec/lib/geoblacklight/geometry_spec.rb +1 -1
  269. data/spec/lib/geoblacklight/item_viewer_spec.rb +2 -2
  270. data/spec/lib/geoblacklight/metadata/base_spec.rb +1 -1
  271. data/spec/lib/geoblacklight/metadata/html_spec.rb +1 -1
  272. data/spec/lib/geoblacklight/metadata_spec.rb +1 -1
  273. data/spec/lib/geoblacklight/metadata_transformer/base_spec.rb +1 -1
  274. data/spec/lib/geoblacklight/metadata_transformer/fgdc_spec.rb +1 -1
  275. data/spec/lib/geoblacklight/metadata_transformer/iso19139_spec.rb +1 -1
  276. data/spec/lib/geoblacklight/metadata_transformer_spec.rb +1 -1
  277. data/spec/lib/geoblacklight/reference_spec.rb +1 -1
  278. data/spec/lib/geoblacklight/references_spec.rb +6 -4
  279. data/spec/lib/geoblacklight/relation/ancestors_spec.rb +10 -4
  280. data/spec/lib/geoblacklight/relation/descendants_spec.rb +9 -4
  281. data/spec/lib/geoblacklight/relation/relation_response_spec.rb +12 -15
  282. data/spec/lib/geoblacklight/wms_layer/feature_info_response_spec.rb +1 -1
  283. data/spec/lib/geoblacklight/wms_layer_spec.rb +1 -1
  284. data/spec/models/concerns/geoblacklight/bbox_filter_query_spec.rb +20 -11
  285. data/spec/models/concerns/geoblacklight/solr_document/citation_spec.rb +1 -1
  286. data/spec/models/concerns/geoblacklight/solr_document/finder_spec.rb +1 -1
  287. data/spec/models/concerns/geoblacklight/solr_document/inspection_spec.rb +1 -1
  288. data/spec/models/concerns/geoblacklight/solr_document_spec.rb +4 -39
  289. data/spec/models/concerns/geoblacklight/suppressed_records_search_behavior_spec.rb +2 -2
  290. data/spec/routing/catalog_routing_spec.rb +1 -1
  291. data/spec/spec_helper.rb +4 -16
  292. data/spec/tasks/geoblacklight_spec.rb +1 -1
  293. data/spec/test_app_templates/lib/generators/test_app_generator.rb +4 -3
  294. metadata +40 -194
  295. data/Procfile.dev +0 -3
  296. data/app/assets/stylesheets/geoblacklight/geoblacklight.scss +0 -2
  297. data/app/assets/stylesheets/geoblacklight/modules/_base.scss +0 -31
  298. data/app/assets/stylesheets/geoblacklight/modules/_blacklight_overrides.scss +0 -40
  299. data/app/assets/stylesheets/geoblacklight/modules/_styles.scss +0 -9
  300. data/app/assets/stylesheets/geoblacklight/modules/downloads.scss +0 -62
  301. data/app/assets/stylesheets/geoblacklight/modules/geosearch.scss +0 -23
  302. data/app/assets/stylesheets/geoblacklight/modules/home.scss +0 -13
  303. data/app/assets/stylesheets/geoblacklight/modules/icon-customization.scss +0 -116
  304. data/app/assets/stylesheets/geoblacklight/modules/index_maps.scss +0 -61
  305. data/app/assets/stylesheets/geoblacklight/modules/item.scss +0 -78
  306. data/app/assets/stylesheets/geoblacklight/modules/layer_opacity.scss +0 -87
  307. data/app/assets/stylesheets/geoblacklight/modules/leaflet.scss +0 -4
  308. data/app/assets/stylesheets/geoblacklight/modules/metadata.scss +0 -31
  309. data/app/assets/stylesheets/geoblacklight/modules/metadata_content.scss +0 -43
  310. data/app/assets/stylesheets/geoblacklight/modules/metadata_markup.scss +0 -9
  311. data/app/assets/stylesheets/geoblacklight/modules/metadata_missing.scss +0 -7
  312. data/app/assets/stylesheets/geoblacklight/modules/modal.scss +0 -5
  313. data/app/assets/stylesheets/geoblacklight/modules/results.scss +0 -60
  314. data/app/assets/stylesheets/geoblacklight/modules/search_widgets.scss +0 -5
  315. data/app/assets/stylesheets/geoblacklight/modules/sidebar.scss +0 -42
  316. data/app/assets/stylesheets/geoblacklight/modules/toolbar.scss +0 -34
  317. data/app/assets/stylesheets/geoblacklight/modules/web_services.scss +0 -5
  318. data/app/components/blacklight/icons/american_geographical_society_library_uwm_libraries_component.rb +0 -46
  319. data/app/components/blacklight/icons/arizona_component.rb +0 -24
  320. data/app/components/blacklight/icons/baruch_cuny_component.rb +0 -23
  321. data/app/components/blacklight/icons/bookmark_component.rb +0 -23
  322. data/app/components/blacklight/icons/circle_info_solid_component.rb +0 -23
  323. data/app/components/blacklight/icons/columbia_component.rb +0 -23
  324. data/app/components/blacklight/icons/cornell_component.rb +0 -25
  325. data/app/components/blacklight/icons/george_mason_component.rb +0 -24
  326. data/app/components/blacklight/icons/harvard_component.rb +0 -23
  327. data/app/components/blacklight/icons/indiana_component.rb +0 -23
  328. data/app/components/blacklight/icons/lewis_clark_component.rb +0 -25
  329. data/app/components/blacklight/icons/massgis_component.rb +0 -23
  330. data/app/components/blacklight/icons/michigan_state_university_component.rb +0 -25
  331. data/app/components/blacklight/icons/mit_component.rb +0 -23
  332. data/app/components/blacklight/icons/northwestern_university_component.rb +0 -24
  333. data/app/components/blacklight/icons/nyu_component.rb +0 -26
  334. data/app/components/blacklight/icons/pennsylvania_state_university_component.rb +0 -25
  335. data/app/components/blacklight/icons/princeton_component.rb +0 -23
  336. data/app/components/blacklight/icons/purdue_university_component.rb +0 -25
  337. data/app/components/blacklight/icons/rutgers_component.rb +0 -25
  338. data/app/components/blacklight/icons/sms_component.rb +0 -23
  339. data/app/components/blacklight/icons/stanford_component.rb +0 -23
  340. data/app/components/blacklight/icons/texas_component.rb +0 -23
  341. data/app/components/blacklight/icons/the_ohio_state_university_component.rb +0 -26
  342. data/app/components/blacklight/icons/tufts_component.rb +0 -23
  343. data/app/components/blacklight/icons/ucla_component.rb +0 -23
  344. data/app/components/blacklight/icons/university_of_california_berkeley_component.rb +0 -24
  345. data/app/components/blacklight/icons/university_of_chicago_component.rb +0 -25
  346. data/app/components/blacklight/icons/university_of_colorado_boulder_component.rb +0 -26
  347. data/app/components/blacklight/icons/university_of_illinois_urbana_champaign_component.rb +0 -25
  348. data/app/components/blacklight/icons/university_of_iowa_component.rb +0 -24
  349. data/app/components/blacklight/icons/university_of_maryland_component.rb +0 -24
  350. data/app/components/blacklight/icons/university_of_michigan_component.rb +0 -24
  351. data/app/components/blacklight/icons/university_of_minnesota_component.rb +0 -24
  352. data/app/components/blacklight/icons/university_of_nebraska_lincoln_component.rb +0 -27
  353. data/app/components/blacklight/icons/university_of_wisconsin_madison_component.rb +0 -24
  354. data/app/components/blacklight/icons/uva_component.rb +0 -23
  355. data/app/components/geoblacklight/icon_facet_item_component.rb +0 -33
  356. data/app/components/geoblacklight/web_services_link_component.html.erb +0 -3
  357. data/bin/vite +0 -29
  358. data/config/initializers/new_gbl_settings_defaults_4.1.yml +0 -104
  359. data/lib/generators/geoblacklight/assets/importmap_generator.rb +0 -73
  360. data/lib/generators/geoblacklight/assets/vite_generator.rb +0 -89
  361. data/lib/generators/geoblacklight/templates/assets/_customizations.scss +0 -23
  362. data/lib/generators/geoblacklight/templates/assets/application.js +0 -17
  363. data/lib/generators/geoblacklight/templates/assets/application.scss +0 -9
  364. data/lib/generators/geoblacklight/templates/assets/geoblacklight.scss +0 -11
  365. data/lib/generators/geoblacklight/templates/base.html.erb +0 -46
  366. data/lib/generators/geoblacklight/templates/vite.config.ts +0 -23
  367. data/lib/generators/geoblacklight/templates/vite.json +0 -16
  368. data/lib/geoblacklight/deprecated_configuration.rb +0 -665
  369. data/schema/geoblacklight-schema-1.0.json +0 -214
  370. data/solr/conf/xslt/example.xsl +0 -132
  371. data/solr/conf/xslt/example_atom.xsl +0 -67
  372. data/solr/conf/xslt/example_rss.xsl +0 -66
  373. data/solr/conf/xslt/luke.xsl +0 -337
  374. data/spec/components/blacklight/icons/american_geographical_society_library_uwm_libraries_component_spec.rb +0 -15
  375. data/spec/components/blacklight/icons/arizona_component_spec.rb +0 -15
  376. data/spec/components/blacklight/icons/arrow_circle_down_component_spec.rb +0 -15
  377. data/spec/components/blacklight/icons/baruch_cuny_component_spec.rb +0 -15
  378. data/spec/components/blacklight/icons/book_component_spec.rb +0 -15
  379. data/spec/components/blacklight/icons/bookmark_component_spec.rb +0 -15
  380. data/spec/components/blacklight/icons/cd_rom_component_spec.rb +0 -15
  381. data/spec/components/blacklight/icons/child_item_component_spec.rb +0 -15
  382. data/spec/components/blacklight/icons/circle_info_solid_component_spec.rb +0 -15
  383. data/spec/components/blacklight/icons/citation_component_spec.rb +0 -15
  384. data/spec/components/blacklight/icons/collection_component_spec.rb +0 -15
  385. data/spec/components/blacklight/icons/collections_component_spec.rb +0 -15
  386. data/spec/components/blacklight/icons/columbia_component_spec.rb +0 -15
  387. data/spec/components/blacklight/icons/cornell_component_spec.rb +0 -15
  388. data/spec/components/blacklight/icons/datasets_component_spec.rb +0 -15
  389. data/spec/components/blacklight/icons/dvd_rom_component_spec.rb +0 -15
  390. data/spec/components/blacklight/icons/email_component_spec.rb +0 -15
  391. data/spec/components/blacklight/icons/esri_globe_component_spec.rb +0 -15
  392. data/spec/components/blacklight/icons/fire_solid_component_spec.rb +0 -15
  393. data/spec/components/blacklight/icons/george_mason_component_spec.rb +0 -15
  394. data/spec/components/blacklight/icons/globe_component_spec.rb +0 -15
  395. data/spec/components/blacklight/icons/harvard_component_spec.rb +0 -15
  396. data/spec/components/blacklight/icons/home_component_spec.rb +0 -15
  397. data/spec/components/blacklight/icons/iiif_drag_drop_component_spec.rb +0 -15
  398. data/spec/components/blacklight/icons/image_component_spec.rb +0 -15
  399. data/spec/components/blacklight/icons/imagery_component_spec.rb +0 -15
  400. data/spec/components/blacklight/icons/indiana_component_spec.rb +0 -15
  401. data/spec/components/blacklight/icons/leaf_component_spec.rb +0 -15
  402. data/spec/components/blacklight/icons/lewis_clark_component_spec.rb +0 -15
  403. data/spec/components/blacklight/icons/lightbulb_solid_component_spec.rb +0 -15
  404. data/spec/components/blacklight/icons/line_component_spec.rb +0 -15
  405. data/spec/components/blacklight/icons/map_component_spec.rb +0 -15
  406. data/spec/components/blacklight/icons/map_marker_component_spec.rb +0 -15
  407. data/spec/components/blacklight/icons/maps_component_spec.rb +0 -15
  408. data/spec/components/blacklight/icons/massgis_component_spec.rb +0 -15
  409. data/spec/components/blacklight/icons/metadata_component_spec.rb +0 -15
  410. data/spec/components/blacklight/icons/michigan_state_university_component_spec.rb +0 -15
  411. data/spec/components/blacklight/icons/mit_component_spec.rb +0 -15
  412. data/spec/components/blacklight/icons/mixed_component_spec.rb +0 -15
  413. data/spec/components/blacklight/icons/multilinestring_component_spec.rb +0 -15
  414. data/spec/components/blacklight/icons/multipoint_component_spec.rb +0 -15
  415. data/spec/components/blacklight/icons/multipolygon_component_spec.rb +0 -15
  416. data/spec/components/blacklight/icons/northwestern_university_component_spec.rb +0 -15
  417. data/spec/components/blacklight/icons/nyu_component_spec.rb +0 -15
  418. data/spec/components/blacklight/icons/pagelines_brands_component_spec.rb +0 -15
  419. data/spec/components/blacklight/icons/paper_map_component_spec.rb +0 -15
  420. data/spec/components/blacklight/icons/parent_item_component_spec.rb +0 -15
  421. data/spec/components/blacklight/icons/pennsylvania_state_university_component_spec.rb +0 -15
  422. data/spec/components/blacklight/icons/point_component_spec.rb +0 -15
  423. data/spec/components/blacklight/icons/polygon_component_spec.rb +0 -15
  424. data/spec/components/blacklight/icons/polyline_component_spec.rb +0 -15
  425. data/spec/components/blacklight/icons/princeton_component_spec.rb +0 -15
  426. data/spec/components/blacklight/icons/public_component_spec.rb +0 -15
  427. data/spec/components/blacklight/icons/purdue_university_component_spec.rb +0 -15
  428. data/spec/components/blacklight/icons/raster_component_spec.rb +0 -15
  429. data/spec/components/blacklight/icons/restricted_component_spec.rb +0 -15
  430. data/spec/components/blacklight/icons/rutgers_component_spec.rb +0 -15
  431. data/spec/components/blacklight/icons/sms_component_spec.rb +0 -15
  432. data/spec/components/blacklight/icons/stanford_component_spec.rb +0 -15
  433. data/spec/components/blacklight/icons/table_component_spec.rb +0 -15
  434. data/spec/components/blacklight/icons/tags_component_spec.rb +0 -15
  435. data/spec/components/blacklight/icons/texas_component_spec.rb +0 -15
  436. data/spec/components/blacklight/icons/the_ohio_state_university_component_spec.rb +0 -15
  437. data/spec/components/blacklight/icons/triangle_exclamation_solid_component_spec.rb +0 -15
  438. data/spec/components/blacklight/icons/tufts_component_spec.rb +0 -15
  439. data/spec/components/blacklight/icons/ucla_component_spec.rb +0 -15
  440. data/spec/components/blacklight/icons/university_of_california_berkeley_component_spec.rb +0 -15
  441. data/spec/components/blacklight/icons/university_of_chicago_component_spec.rb +0 -15
  442. data/spec/components/blacklight/icons/university_of_colorado_boulder_component_spec.rb +0 -15
  443. data/spec/components/blacklight/icons/university_of_illinois_urbana_champaign_component_spec.rb +0 -15
  444. data/spec/components/blacklight/icons/university_of_iowa_component_spec.rb +0 -15
  445. data/spec/components/blacklight/icons/university_of_maryland_component_spec.rb +0 -15
  446. data/spec/components/blacklight/icons/university_of_michigan_component_spec.rb +0 -15
  447. data/spec/components/blacklight/icons/university_of_minnesota_component_spec.rb +0 -15
  448. data/spec/components/blacklight/icons/university_of_nebraska_lincoln_component_spec.rb +0 -15
  449. data/spec/components/blacklight/icons/university_of_wisconsin_madison_component_spec.rb +0 -15
  450. data/spec/components/blacklight/icons/uva_component_spec.rb +0 -15
  451. data/spec/components/blacklight/icons/web_services_component_spec.rb +0 -15
  452. data/spec/components/blacklight/icons/websites_component_spec.rb +0 -15
  453. data/spec/components/geoblacklight/icon_facet_item_component_spec.rb +0 -18
  454. data/spec/config/initializers/rails_config_spec.rb +0 -16
  455. data/spec/fixtures/solr_documents/public_direct_download.json +0 -62
  456. data/spec/lib/geoblacklight/deprecated_configuration_spec.rb +0 -680
  457. data/spec/solr_config_spec.rb +0 -41
  458. data/spec/support/backport_test_helpers.rb +0 -47
  459. data/spec/support/view_component_capybara_test_helpers.rb +0 -8
  460. data/vite.config.ts +0 -32
  461. /data/app/assets/images/{blacklight → geoblacklight}/logo.svg +0 -0
@@ -9,7 +9,6 @@ module GeoblacklightHelper
9
9
  # Blacklight catalog controller helper method to truncate field value to 150 chars
10
10
  # @param [SolrDocument] args
11
11
  # @return [String]
12
- # @deprecated
13
12
  def snippit(args)
14
13
  truncate(Array(args[:value]).flatten.join(" "), length: 150)
15
14
  end
@@ -19,7 +18,6 @@ module GeoblacklightHelper
19
18
  # @return [SVG or HTML tag]
20
19
  def geoblacklight_icon(name, **args)
21
20
  icon_name = name ? name.to_s.parameterize : "none"
22
- icon_name = Settings.ICON_MAPPING && Settings.ICON_MAPPING[icon_name] || icon_name
23
21
  camel_icon = icon_name.tr("-", "_").camelize.delete(" ")
24
22
  begin
25
23
  render "Blacklight::Icons::#{camel_icon}Component".constantize.new(name: icon_name, **args)
@@ -41,7 +39,6 @@ module GeoblacklightHelper
41
39
  # div. Arguments come from Blacklight::DocumentPresenter's
42
40
  # get_field_values method
43
41
  # @param [Hash] args from get_field_values
44
- # @deprecated
45
42
  def render_value_as_truncate_abstract(args)
46
43
  tag.div class: "truncate-abstract" do
47
44
  Array(args[:value]).flatten.join(" ")
@@ -51,25 +48,15 @@ module GeoblacklightHelper
51
48
  ##
52
49
  # Selects the basemap used for map displays
53
50
  # @return [String]
54
- # @deprecated
55
51
  def geoblacklight_basemap
56
52
  blacklight_config.basemap_provider || "positron"
57
53
  end
58
54
 
59
- ##
60
- # Returns a hash of the leaflet plugin settings to pass to the viewer.
61
- # @return[Hash]
62
- # @deprecated
63
- def leaflet_options
64
- Settings.LEAFLET
65
- end
66
-
67
55
  ##
68
56
  # Renders the transformed metadata
69
57
  # (Renders a partial when the metadata isn't available)
70
58
  # @param [Geoblacklight::Metadata::Base] metadata the metadata object
71
59
  # @return [String]
72
- # @deprecated
73
60
  def render_transformed_metadata(metadata)
74
61
  render partial: "catalog/metadata/content", locals: {content: metadata.transform.html_safe}
75
62
  rescue Geoblacklight::MetadataTransformer::TransformError => transform_err
@@ -85,7 +72,6 @@ module GeoblacklightHelper
85
72
  # @param [SolrDocument] document the Solr Document for the item
86
73
  # @param [Geoblacklight::Metadata::Base] metadata the object for the metadata resource
87
74
  # @return [Boolean]
88
- # @deprecated
89
75
  def first_metadata?(document, metadata)
90
76
  document.references.shown_metadata.first.type == metadata.type
91
77
  end
@@ -101,25 +87,6 @@ module GeoblacklightHelper
101
87
  )
102
88
  end
103
89
 
104
- ## Returns the icon used based off a Settings strategy
105
- # @deprecated
106
- def relations_icon(document, icon)
107
- # If configured to use geometry type for relations icon
108
- if Settings.USE_GEOM_FOR_RELATIONS_ICON
109
- Geoblacklight.deprecation.warn("USE_GEOM_FOR_RELATIONS_ICON is deprecated and will be removed in GeoBlacklight 6")
110
- icon_html = render Geoblacklight::HeaderIconsComponent.new(
111
- document: document,
112
- fields: [Settings.FIELDS.GEOM_TYPE]
113
- )
114
-
115
- # Use geometry-based icon if it's valid (not missing)
116
- return icon_html unless icon_html.include?("icon-missing")
117
- end
118
-
119
- # Fall back to the default icon
120
- geoblacklight_icon(icon)
121
- end
122
-
123
90
  ## Returns the data-page attribute value used as the JS map selector
124
91
  def results_js_map_selector(controller_name)
125
92
  case controller_name
@@ -129,14 +96,4 @@ module GeoblacklightHelper
129
96
  "index"
130
97
  end
131
98
  end
132
-
133
- Geoblacklight.deprecation.deprecate_methods(GeoblacklightHelper,
134
- snippit: "GeoBlacklight 6 removes it; its catalog_controller template no longer configures a " \
135
- "truncated description index field",
136
- render_value_as_truncate_abstract: "use Geoblacklight::MetadataDescriptionMarkdownComponent instead",
137
- geoblacklight_basemap: "GeoBlacklight 6 reads the basemap from the viewer components themselves",
138
- leaflet_options: "GeoBlacklight 6 reads the Leaflet options from the viewer components themselves",
139
- render_transformed_metadata: "use Geoblacklight::MetadataComponent instead",
140
- first_metadata?: "use Geoblacklight::MetadataComponent instead",
141
- relations_icon: "use Geoblacklight::Relations::RelationComponent instead")
142
99
  end
@@ -1,11 +1,11 @@
1
1
  import { Controller } from "@hotwired/stimulus"
2
2
 
3
3
  export default class extends Controller {
4
- static targets = ["alert"];
4
+ static targets = ["alert"]
5
5
 
6
- async copyToClipboard(event) {
7
- let text = event.params.value;
8
- await navigator.clipboard.writeText(text)
9
- this.alertTarget.classList.remove('d-none');
10
- }
6
+ async copyToClipboard(event) {
7
+ let text = event.params.value
8
+ await navigator.clipboard.writeText(text)
9
+ this.alertTarget.classList.remove("d-none")
10
+ }
11
11
  }
@@ -2,55 +2,63 @@ import { Controller } from "@hotwired/stimulus"
2
2
 
3
3
  export default class extends Controller {
4
4
  download(ev) {
5
- ev.preventDefault();
5
+ ev.preventDefault()
6
6
  if (this.downloading) {
7
- return;
7
+ return
8
8
  }
9
- this.downloading = true;
10
- ev.target.classList.add('download-in-progress');
11
- const url = ev.target.dataset.downloadPath;
12
- ev.target.removeAttribute('href');
13
- ev.target.innerHTML = '<div class="spinner-border spinner-border-sm float-end"></div> Preparing download...';
9
+ this.downloading = true
10
+ ev.target.classList.add("download-in-progress")
11
+ const url = ev.target.dataset.downloadPath
12
+ ev.target.removeAttribute("href")
13
+ ev.target.innerHTML = '<div class="spinner-border spinner-border-sm float-end"></div> Preparing download...'
14
14
 
15
15
  fetch(url)
16
16
  .then((response) => {
17
17
  if (!response.ok) {
18
18
  return response.json().then((errorData) => {
19
- const exception = new Error("Network response was not ok");
20
- exception.data = errorData; // Attach the parsed JSON data to the error object
21
- throw exception;
22
- });
19
+ const exception = new Error("Network response was not ok")
20
+ exception.data = errorData // Attach the parsed JSON data to the error object
21
+ throw exception
22
+ })
23
23
  }
24
- return response.json();
24
+ return response.json()
25
25
  })
26
26
  .then((data) => this.complete(data, ev.target))
27
- .catch((error) => this.error(error, ev.target));
27
+ .catch((error) => this.error(error, ev.target))
28
28
  }
29
29
 
30
30
  complete(data, target) {
31
- this.downloading = false;
32
- target.classList.remove('download-in-progress');
33
- target.classList.add('download-complete');
34
- target.innerHTML = `Download ready (${target.dataset.downloadType})`;
35
- target.href = data[1];
36
- this.renderMessage(data[0]);
31
+ this.downloading = false
32
+ target.classList.remove("download-in-progress")
33
+ target.classList.add("download-complete")
34
+ target.innerHTML = `Download ready (${target.dataset.downloadType})`
35
+ target.href = data[1]
36
+ this.renderMessage(data[0])
37
37
  //target.click();
38
38
  }
39
39
 
40
40
  error(exception, target) {
41
- this.downloading = false;
42
- target.classList.remove('download-in-progress');
43
- target.classList.add('download-complete');
44
- target.innerHTML = `Download failed (${target.dataset.downloadType})`;
45
- this.renderMessage(exception.data[0]);
41
+ this.downloading = false
42
+ target.classList.remove("download-in-progress")
43
+ target.classList.add("download-complete")
44
+ target.innerHTML = `Download failed (${target.dataset.downloadType})`
45
+ console.log(exception)
46
+
47
+ this.renderMessage(exception.data[0])
46
48
  }
47
49
 
48
50
  renderMessage(message) {
51
+ let flashContainer = document.querySelector("div.flash_messages")
52
+ if (!flashContainer) {
53
+ flashContainer = document.createElement("div")
54
+ flashContainer.className = "flash_messages"
55
+ document.getElementById("document").prepend(flashContainer)
56
+ }
49
57
  Object.entries(message).forEach(([idx, msg]) => {
50
- const flash = document.createElement("div");
51
- flash.className = `alert alert-${msg[0]} alert-dismissible fade show`;
52
- flash.innerHTML = `${msg[1]}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>`;
53
- document.querySelector("div.flash_messages").appendChild(flash);
54
- });
58
+ const flash = document.createElement("div")
59
+ flash.className = `alert alert-${msg[0]} alert-dismissible fade show`
60
+ flash.innerHTML = `${msg[1]}<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>`
61
+ flashContainer.appendChild(flash)
62
+ })
55
63
  }
56
64
  }
@@ -1,17 +1,18 @@
1
- import { Icon, Control } from "leaflet";
2
- import { FullScreen } from "leaflet.fullscreen";
3
- import { layerGroup, polygon, map, tileLayer } from "leaflet";
4
- import { imageMapLayer } from "esri-leaflet";
5
- import { Controller } from "@hotwired/stimulus";
6
- import basemaps from "geoblacklight/leaflet/basemaps";
7
- import LayerOpacityControl from "geoblacklight/leaflet/controls/layer_opacity";
8
- import GeoSearchControl from "geoblacklight/leaflet/controls/geosearch";
9
- import Sleep from "geoblacklight/leaflet/controls/sleep";
10
- import { wmsInspection,
1
+ import { Icon, Control } from "leaflet"
2
+ import { FullScreen } from "leaflet.fullscreen"
3
+ import { layerGroup, polygon, map, tileLayer } from "leaflet"
4
+ import { imageMapLayer } from "esri-leaflet"
5
+ import { Controller } from "@hotwired/stimulus"
6
+ import basemaps from "geoblacklight/leaflet/basemaps"
7
+ import LayerOpacityControl from "geoblacklight/leaflet/controls/layer_opacity"
8
+ import GeoSearchControl from "geoblacklight/leaflet/controls/geosearch"
9
+ import Sleep from "geoblacklight/leaflet/controls/sleep"
10
+ import {
11
+ wmsInspection,
11
12
  tiledMapLayerInspection,
12
13
  featureLayerInspection,
13
- dynamicMapLayerInspection
14
- } from "geoblacklight/leaflet/inspection";
14
+ dynamicMapLayerInspection,
15
+ } from "geoblacklight/leaflet/inspection"
15
16
  import {
16
17
  esriDynamicMapLayer,
17
18
  esriFeatureLayer,
@@ -20,10 +21,10 @@ import {
20
21
  wmsLayer,
21
22
  wmtsLayer,
22
23
  indexMapLayer,
23
- } from "geoblacklight/leaflet/layers";
24
- import { geoJSONToBounds } from "geoblacklight/leaflet/utils";
25
- import { DEFAULT_BOUNDS, DEFAULT_OPACITY, DEFAULT_GEOM_OVERLAY_OPTIONS } from "geoblacklight/leaflet/constants";
26
- import sidebarControl from "geoblacklight/leaflet/controls/sidebar";
24
+ } from "geoblacklight/leaflet/layers"
25
+ import { geoJSONToBounds } from "geoblacklight/leaflet/utils"
26
+ import { DEFAULT_BOUNDS, DEFAULT_OPACITY, DEFAULT_GEOM_OVERLAY_OPTIONS } from "geoblacklight/leaflet/constants"
27
+ import sidebarControl from "geoblacklight/leaflet/controls/sidebar"
27
28
 
28
29
  export default class LeafletViewerController extends Controller {
29
30
  static values = {
@@ -37,213 +38,188 @@ export default class LeafletViewerController extends Controller {
37
38
  page: String,
38
39
  layerId: String,
39
40
  drawInitialBounds: Boolean,
40
- };
41
+ }
41
42
 
42
43
  connect() {
43
44
  // Use leaflet icon images from CDN
44
- Icon.Default.imagePath = "https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/images/";
45
+ Icon.Default.imagePath = "https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/images/"
45
46
 
46
47
  // Set up layers
47
- this.basemap = this.getBasemap();
48
- this.overlay = layerGroup();
48
+ this.basemap = this.getBasemap()
49
+ this.overlay = layerGroup()
49
50
 
50
51
  // Calculate bounds
51
- this.bounds = DEFAULT_BOUNDS;
52
- if (this.hasMapGeomValue) this.bounds = geoJSONToBounds(this.mapGeomValue);
52
+ this.bounds = DEFAULT_BOUNDS
53
+ if (this.hasMapGeomValue) this.bounds = geoJSONToBounds(this.mapGeomValue)
53
54
 
54
55
  // Load the map
55
- this.loadMap();
56
- }
57
-
58
- get config() {
59
-
60
- if (!this.optionsValue.VIEWERS || !this.hasProtocolValue) return {};
61
- return this.optionsValue.VIEWERS[this.protocolValue.toUpperCase()];
56
+ this.loadMap()
62
57
  }
63
58
 
64
59
  // Create the map, add layers, fit the bounds
65
60
  async loadMap() {
66
- if (this.map) return;
61
+ if (this.map) return
67
62
 
68
63
  // Set up the map and fit to bounds
69
- const sleepSettings = this.optionsValue.SLEEP || { 'SLEEP' : false }
70
- this.map = map(this.element, sleepSettings);
71
- if (sleepSettings.SLEEP) this.map.addHandler('SLEEP', Sleep);
64
+ const sleepSettings = this.optionsValue.sleep || { sleep: false }
65
+ this.map = map(this.element, sleepSettings)
66
+ if (sleepSettings.sleep) this.map.addHandler("SLEEP", Sleep)
72
67
 
73
- this.map.addLayer(this.basemap);
74
- this.map.addLayer(this.overlay);
75
- this.fitBounds(this.bounds);
76
- this.map.options.selected_color = this.optionsValue.SELECTED_COLOR || 'blue';
68
+ this.map.addLayer(this.basemap)
69
+ this.map.addLayer(this.overlay)
70
+ this.fitBounds(this.bounds)
71
+ this.map.options.selected_color = this.optionsValue.selected_color || "blue"
77
72
 
78
73
  // If the data is available, add the preview and set up inspection
79
74
  // Otherwise just draw the bounds, if configured to do so
80
75
  if (this.availableValue && this.protocolValue) {
81
- await this.addPreviewOverlay();
82
- this.addInspection();
76
+ await this.addPreviewOverlay()
77
+ this.addInspection()
83
78
  } else if (this.drawInitialBoundsValue && this.bounds) {
84
- this.addBoundsOverlay(this.bounds);
79
+ this.addBoundsOverlay(this.bounds)
85
80
  }
86
81
 
87
82
  // Add configured controls
88
- this.addControls();
83
+ this.addControls()
89
84
 
90
- if (this.protocolValue == "IndexMap"){
85
+ if (this.protocolValue == "IndexMap") {
91
86
  this.fitBounds(this.previewOverlay.getBounds())
92
87
  }
93
88
 
94
89
  // Enable geosearch handler, if available
95
- if (this.map.geosearch) this.map.geosearch.enable();
90
+ if (this.map.geosearch) this.map.geosearch.enable()
96
91
 
97
92
  // Emit an event for other controllers to listen to
98
- this.dispatch("loaded");
93
+ this.dispatch("loaded")
99
94
  }
100
95
 
101
96
  // Set the bounds of the map to an L.LatLngBounds object
102
97
  fitBounds(bounds) {
103
98
  // prevent map from moving when setting bounds, if relevant
104
- if (this.map.geosearch) this.map.geosearch.disable();
105
- this.map.fitBounds(bounds, { animate: false, noMoveStart: true });
106
- this.bounds = bounds;
107
- if (this.map.geosearch) this.map.geosearch.enable();
108
- this.element.dataset.bounds = this.bounds.toBBoxString();
99
+ if (this.map.geosearch) this.map.geosearch.disable()
100
+ this.map.fitBounds(bounds, { animate: false, noMoveStart: true })
101
+ this.bounds = bounds
102
+ if (this.map.geosearch) this.map.geosearch.enable()
103
+ this.element.dataset.bounds = this.bounds.toBBoxString()
109
104
  }
110
105
 
111
106
  // Select the configured basemap to use
112
107
  getBasemap() {
113
- const definition = this.basemapDefinition();
114
- return tileLayer(definition.url, {
115
- ...definition,
116
- detectRetina: this.optionsValue.LAYERS.DETECT_RETINA || false,
117
- });
118
- }
119
-
120
- // The basemap to draw, with any BASEMAPS values from settings.yml merged over
121
- // the shipped definition. This lets an application change a basemap's URL --
122
- // to add a CARTO API key, for example -- without restating the rest of the
123
- // definition, and lets it define basemaps of its own. Falls back to positron
124
- // for a name that resolves to nothing rather than drawing no basemap.
125
- basemapDefinition() {
126
- const name = this.basemapValue || "positron";
127
- const definition = { ...basemaps[name], ...this.basemapOverrides()[name] };
128
- return definition.url ? definition : basemaps.positron;
129
- }
130
-
131
- basemapOverrides() {
132
- return this.optionsValue.BASEMAPS || {};
108
+ const basemapName = this.basemapValue || "positron"
109
+ return tileLayer(basemaps[basemapName].url, {
110
+ ...basemaps[basemapName],
111
+ detectRetina: this.optionsValue.layers.detect_retina || false,
112
+ })
133
113
  }
134
114
 
135
115
  // Add the configured controls to the map
136
116
  addControls() {
137
117
  // Add any top-level controls (e.g. geosearch) first
138
- const globalControls = this.optionsValue.CONTROLS || {};
118
+ const globalControls = this.optionsValue.controls || {}
139
119
  Object.entries(globalControls).forEach(([controlName, controlOptions]) => {
140
- const control = this.getControl(controlName, controlOptions);
141
- if (control) this.addControl(control);
142
- });
120
+ const control = this.getControl(controlName, controlOptions)
121
+ if (control) this.addControl(control)
122
+ })
143
123
 
144
124
  // Add opacity and fullscreen controls for all layers
145
125
  if (this.hasProtocolValue) {
146
- if (this.availableValue){
147
- const opacityControl = this.getControl("Opacity");
148
- this.addControl(opacityControl);
126
+ if (this.availableValue) {
127
+ const opacityControl = this.getControl("Opacity")
128
+ this.addControl(opacityControl)
149
129
  }
150
- const fullscreenControl = this.getControl("Fullscreen");
151
- this.addControl(fullscreenControl);
130
+ const fullscreenControl = this.getControl("Fullscreen")
131
+ this.addControl(fullscreenControl)
152
132
  }
153
133
  }
154
134
 
155
135
  // Add a pre-configured L.Control instance to the map
156
136
  addControl(control) {
157
- this.map.addControl(control);
137
+ this.map.addControl(control)
158
138
  }
159
139
 
160
140
  // Look up the control name and return the corresponding L.Control instance
161
141
  getControl(controlName, controlOptions) {
162
- if (controlName == "Opacity")
163
- return new LayerOpacityControl(this.previewOverlay);
164
- if (controlName == "Fullscreen")
165
- return new FullScreen({ position: "bottomleft", ...controlOptions });
142
+ if (controlName == "Opacity") return new LayerOpacityControl(this.previewOverlay)
143
+ if (controlName == "Fullscreen") return new FullScreen({ position: "bottomleft", ...controlOptions })
166
144
  if (controlName == "Geosearch")
167
- return new GeoSearchControl({ baseUrl: this.catalogBaseUrlValue, ...controlOptions });
168
- console.error(`Unsupported control name: "${controlName}"`);
145
+ return new GeoSearchControl({
146
+ baseUrl: this.catalogBaseUrlValue,
147
+ ...controlOptions,
148
+ })
149
+ console.error(`Unsupported control name: "${controlName}"`)
169
150
  }
170
151
 
171
152
  // Add the bounding box to the map
172
153
  addBoundsOverlay(bounds) {
173
- const hasMapGeomValue = Object.keys(this.mapGeomValue).length > 0 && !this.map.geosearch;
174
- var defaultOptions = hasMapGeomValue ? DEFAULT_GEOM_OVERLAY_OPTIONS : {};
175
- const overlayOptions = this.optionsValue.BOUNDSOVERLAY || {};
176
- const options = {...defaultOptions, ...overlayOptions[this.pageValue]}
177
- const boundsOverlay = polygon([
178
- bounds.getSouthWest(),
179
- bounds.getSouthEast(),
180
- bounds.getNorthEast(),
181
- bounds.getNorthWest(),
182
- ], options
183
- );
184
-
154
+ const hasMapGeomValue = Object.keys(this.mapGeomValue).length > 0 && !this.map.geosearch
155
+ var defaultOptions = hasMapGeomValue ? DEFAULT_GEOM_OVERLAY_OPTIONS : {}
156
+ const overlayOptions = this.optionsValue.bounds_overlay || {}
157
+ const options = { ...defaultOptions, ...overlayOptions[this.pageValue] }
158
+ const boundsOverlay = polygon(
159
+ [bounds.getSouthWest(), bounds.getSouthEast(), bounds.getNorthEast(), bounds.getNorthWest()],
160
+ options,
161
+ )
162
+
185
163
  // Render geometry layer if available
186
- if (hasMapGeomValue) this.map.addLayer(L.geoJSON(this.mapGeomValue, overlayOptions[this.pageValue]));
164
+ if (hasMapGeomValue) this.map.addLayer(L.geoJSON(this.mapGeomValue, overlayOptions[this.pageValue]))
187
165
 
188
166
  // Render the bounds overlay
189
- this.boundsOverlay = boundsOverlay;
190
- this.overlay.addLayer(boundsOverlay);
167
+ this.boundsOverlay = boundsOverlay
168
+ this.overlay.addLayer(boundsOverlay)
191
169
  }
192
170
 
193
171
  // Remove the bounding box overlay
194
172
  removeBoundsOverlay() {
195
- if (this.boundsOverlay) this.overlay.removeLayer(this.boundsOverlay);
173
+ if (this.boundsOverlay) this.overlay.removeLayer(this.boundsOverlay)
196
174
  }
197
175
 
198
176
  setUpSidebar() {
199
- const sidebar = document.querySelector('[data-sidebar]')
200
- if (!sidebar || sidebar.dataset.sidebar != 'true') return;
177
+ const sidebar = document.querySelector("[data-sidebar]")
178
+ if (!sidebar || sidebar.dataset.sidebar != "true") return
201
179
  const control = new sidebarControl({
202
- position: 'topright',
203
- sidebar
204
- });
205
- this.map.addControl(control);
180
+ position: "topright",
181
+ sidebar,
182
+ })
183
+ this.map.addControl(control)
206
184
  }
207
185
 
208
186
  addInspection() {
209
- const inspectionProtocols = ['Wms', 'FeatureLayer', 'DynamicMapLayer', 'IndexMap']
210
- if (!inspectionProtocols.includes(this.protocolValue)) return;
211
- this.setUpSidebar();
212
- if (this.protocolValue == "Wms") return wmsInspection(this.map, this.urlValue, this.layerIdValue, this.previewOverlay);
213
- if (this.protocolValue == "FeatureLayer") return featureLayerInspection(this.map, this.previewOverlay);
214
- if (this.protocolValue == "DynamicMapLayer") return dynamicMapLayerInspection(this.map, this.previewOverlay, this.layerIdValue);
187
+ const inspectionProtocols = ["Wms", "FeatureLayer", "DynamicMapLayer", "IndexMap"]
188
+ if (!inspectionProtocols.includes(this.protocolValue)) return
189
+ this.setUpSidebar()
190
+ if (this.protocolValue == "Wms")
191
+ return wmsInspection(this.map, this.urlValue, this.layerIdValue, this.previewOverlay)
192
+ if (this.protocolValue == "FeatureLayer") return featureLayerInspection(this.map, this.previewOverlay)
193
+ if (this.protocolValue == "DynamicMapLayer")
194
+ return dynamicMapLayerInspection(this.map, this.previewOverlay, this.layerIdValue)
215
195
  // TODO: TiledMapLayer is converted but seems busted -- see layers.js. Don't know what to test it with, need a fixture.
216
196
  // if (this.protocolValue == "TiledMapLayer") return tiledMapLayerInspection(this.map, this.previewOverlay);
217
197
  }
218
198
 
219
199
  // Add the actual data to the map as a layer
220
200
  async addPreviewOverlay() {
221
- this.previewOverlay = await this.getPreviewOverlay(
222
- this.protocolValue,
223
- this.urlValue,
224
- {
225
- layerId: this.layerIdValue,
226
- opacity: this.optionsValue.opacity || DEFAULT_OPACITY,
227
- detectRetina: this.optionsValue.LAYERS.DETECT_RETINA || false,
228
- }
229
- );
230
- if (this.previewOverlay) this.overlay.addLayer(this.previewOverlay);
201
+ this.previewOverlay = await this.getPreviewOverlay(this.protocolValue, this.urlValue, {
202
+ layerId: this.layerIdValue,
203
+ opacity: this.optionsValue.opacity || DEFAULT_OPACITY,
204
+ detectRetina: this.optionsValue.layers.detect_retina || false,
205
+ })
206
+ if (this.previewOverlay) this.overlay.addLayer(this.previewOverlay)
231
207
  }
232
208
 
233
209
  // Generate a layer based on the protocol
234
210
  async getPreviewOverlay(protocol, url, options) {
235
- if (protocol == "DynamicMapLayer") return esriDynamicMapLayer(url, options);
236
- if (protocol == "FeatureLayer") return esriFeatureLayer(url, options);
211
+ if (protocol == "DynamicMapLayer") return esriDynamicMapLayer(url, options)
212
+ if (protocol == "FeatureLayer") return esriFeatureLayer(url, options)
237
213
  // imageMapLayer is a built-in method from esri-leaflet
238
- if (protocol == "ImageMapLayer") return imageMapLayer({url, ...options});
239
- if (protocol == "IndexMap") return await indexMapLayer(url, this.optionsValue);
240
- if (protocol == "TiledMapLayer") return await esriTiledMapLayer(url, options);
241
- if (protocol == "Tilejson") return await tileJsonLayer(url, options);
214
+ if (protocol == "ImageMapLayer") return imageMapLayer({ url, ...options })
215
+ if (protocol == "IndexMap") return await indexMapLayer(url, this.optionsValue)
216
+ if (protocol == "TiledMapLayer") return await esriTiledMapLayer(url, options)
217
+ if (protocol == "Tilejson") return await tileJsonLayer(url, options)
242
218
  // tileLayer is a built-in method from leaflet
243
- if (protocol == "Tms") return tileLayer(url, { tms: true, ...options });
244
- if (protocol == "Wms") return wmsLayer(url, options);
245
- if (protocol == "Wmts") return await wmtsLayer(url, options);
246
- if (protocol == "Xyz") return tileLayer(url, options);
247
- console.error(`Unsupported protocol name: "${protocol}"`);
219
+ if (protocol == "Tms") return tileLayer(url, { tms: true, ...options })
220
+ if (protocol == "Wms") return wmsLayer(url, options)
221
+ if (protocol == "Wmts") return await wmtsLayer(url, options)
222
+ if (protocol == "Xyz") return tileLayer(url, options)
223
+ console.error(`Unsupported protocol name: "${protocol}"`)
248
224
  }
249
225
  }
@@ -1,18 +1,18 @@
1
- import { Controller } from "@hotwired/stimulus";
1
+ import { Controller } from "@hotwired/stimulus"
2
2
 
3
3
  export default class OembedViewerController extends Controller {
4
4
  static values = {
5
5
  url: String,
6
- };
6
+ }
7
7
 
8
8
  connect() {
9
9
  fetch(this.urlValue)
10
10
  .then((response) => response.json())
11
11
  .then((data) => {
12
- if (data) this.element.innerHTML = data.html;
12
+ if (data) this.element.innerHTML = data.html
13
13
  })
14
14
  .catch((error) => {
15
- console.error("Error loading oEmbed data:", error);
16
- });
15
+ console.error("Error loading oEmbed data:", error)
16
+ })
17
17
  }
18
18
  }