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
@@ -1,12 +1,12 @@
1
- import { Map } from "ol";
2
- import TileLayer from "ol/layer/Tile";
3
- import XYZ from "ol/source/XYZ";
4
- import GeoJSON from "ol/format/GeoJSON";
5
- import { FullScreen, defaults as defaultControls } from "ol/control";
6
- import { pmTilesLayer, cogLayer } from "geoblacklight/openlayers/layers";
7
- import basemaps from "geoblacklight/openlayers/basemaps";
8
- import { Controller } from "@hotwired/stimulus";
9
- import { pmTilesInspection } from "geoblacklight/openlayers/inspection";
1
+ import { Map } from "ol"
2
+ import TileLayer from "ol/layer/Tile"
3
+ import XYZ from "ol/source/XYZ"
4
+ import GeoJSON from "ol/format/GeoJSON"
5
+ import { FullScreen, defaults as defaultControls } from "ol/control"
6
+ import { pmTilesLayer, cogLayer } from "geoblacklight/openlayers/layers"
7
+ import basemaps from "geoblacklight/openlayers/basemaps"
8
+ import { Controller } from "@hotwired/stimulus"
9
+ import { pmTilesInspection } from "geoblacklight/openlayers/inspection"
10
10
 
11
11
  export default class OpenlayersViewerController extends Controller {
12
12
  static values = {
@@ -14,17 +14,16 @@ export default class OpenlayersViewerController extends Controller {
14
14
  protocol: String,
15
15
  basemap: String,
16
16
  mapGeom: String,
17
- options: Object,
18
- };
17
+ }
19
18
 
20
19
  async connect() {
21
20
  // Set up layers
22
- this.basemap = this.getBasemap();
23
- this.overlay = this.getPreviewOverlay(this.protocolValue, this.urlValue);
21
+ this.basemap = this.getBasemap()
22
+ this.overlay = this.getPreviewOverlay(this.protocolValue, this.urlValue)
24
23
 
25
- await this.getBounds();
24
+ await this.getBounds()
26
25
  // Load the map
27
- this.loadMap();
26
+ this.loadMap()
28
27
  }
29
28
 
30
29
  // Create the map, add layers, and fit the bounds
@@ -33,68 +32,35 @@ export default class OpenlayersViewerController extends Controller {
33
32
  target: this.element,
34
33
  controls: defaultControls().extend([new FullScreen()]),
35
34
  layers: [this.basemap, this.overlay],
36
- });
37
- this.map.getView().fit(this.extent, this.map.getSize());
35
+ })
36
+ this.map.getView().fit(this.extent, this.map.getSize())
38
37
  this.addInspection()
39
38
  }
40
39
 
41
40
  addInspection() {
42
- if (this.protocolValue == "Pmtiles") return pmTilesInspection(this.map);
41
+ if (this.protocolValue == "Pmtiles") return pmTilesInspection(this.map)
43
42
  }
44
43
 
45
44
  async getBounds() {
46
- if (this.protocolValue == 'Cog') {
47
- const view = await this.overlay.getSource().getView();
48
- this.extent = view.extent;
45
+ if (this.protocolValue == "Cog") {
46
+ const view = await this.overlay.getSource().getView()
47
+ this.extent = view.extent
49
48
  } else {
50
- this.extent = new GeoJSON()
51
- .readFeatures(this.mapGeomValue)[0]
52
- .getGeometry()
53
- .getExtent();
49
+ this.extent = new GeoJSON().readFeatures(this.mapGeomValue)[0].getGeometry().getExtent()
54
50
  }
55
51
  }
56
52
 
57
53
  // Select the configured basemap to use
58
54
  getBasemap() {
59
- const basemap = this.basemapDefinition();
60
- const layer = new TileLayer({
61
- source: new XYZ({
62
- ...basemap,
63
- url: this.normalizeUrl(basemap.url),
64
- // The leaflet definitions spell this `attribution`; OpenLayers wants
65
- // `attributions`. Accept either so one setting serves both viewers.
66
- attributions: basemap.attributions || basemap.attribution,
67
- }),
68
- });
69
- return layer;
70
- }
71
-
72
- // The basemap to draw, with any BASEMAPS values from settings.yml merged over
73
- // the shipped definition. This lets an application change a basemap's URL --
74
- // to add a CARTO API key, for example -- without restating the rest of the
75
- // definition, and lets it define basemaps of its own. Falls back to positron
76
- // for a name that resolves to nothing rather than drawing no basemap.
77
- basemapDefinition() {
78
- const name = this.basemapValue || "positron";
79
- const definition = { ...basemaps[name], ...this.basemapOverrides()[name] };
80
- return definition.url ? definition : basemaps.positron;
81
- }
82
-
83
- basemapOverrides() {
84
- return this.optionsValue.BASEMAPS || {};
85
- }
86
-
87
- // Leaflet and OpenLayers spell tile URL templates differently, so accept the
88
- // leaflet form a configured basemap is most likely to be written in: {s}
89
- // becomes OpenLayers' subdomain range, and {retina} drops out.
90
- normalizeUrl(url) {
91
- return url.replace(/\{s\}/g, "{a-d}").replace(/\{retina\}/g, "");
55
+ const basemap = basemaps[this.basemapValue || "positron"]
56
+ const layer = new TileLayer({ source: new XYZ(basemap) })
57
+ return layer
92
58
  }
93
59
 
94
60
  // Generate a layer based on the protocol
95
61
  getPreviewOverlay(protocol, url) {
96
- if (protocol === "Pmtiles") return pmTilesLayer(url);
97
- if (protocol === "Cog") return cogLayer(url);
98
- console.error(`Unsupported protocol name: "${protocol}"`);
62
+ if (protocol === "Pmtiles") return pmTilesLayer(url)
63
+ if (protocol === "Cog") return cogLayer(url)
64
+ console.error(`Unsupported protocol name: "${protocol}"`)
99
65
  }
100
66
  }
@@ -1,50 +1,50 @@
1
- import { Controller } from "@hotwired/stimulus";
2
- import { geoJSONToBounds } from "geoblacklight/leaflet/utils";
3
- import { DEFAULT_BOUNDS } from "geoblacklight/leaflet/constants";
1
+ import { Controller } from "@hotwired/stimulus"
2
+ import { geoJSONToBounds } from "geoblacklight/leaflet/utils"
3
+ import { DEFAULT_BOUNDS } from "geoblacklight/leaflet/constants"
4
4
 
5
5
  export default class SearchResultsController extends Controller {
6
- static targets = ["result"];
7
- static outlets = ["leaflet-viewer"];
6
+ static targets = ["result"]
7
+ static outlets = ["leaflet-viewer"]
8
8
 
9
9
  // Fit the map to the combined bounding box of all search results
10
10
  // If a bounding box query is already active, do not override it
11
11
  fitResultBounds() {
12
- if (new URL(window.location).searchParams.get("bbox")) return;
13
- this.leafletViewerOutlet.fitBounds(this.getMaximalBounds());
12
+ if (new URL(window.location).searchParams.get("bbox")) return
13
+ this.leafletViewerOutlet.fitBounds(this.getMaximalBounds())
14
14
  }
15
15
 
16
16
  // Get the bounding box of a search result from its data attributes
17
17
  getResultBounds(resultElement) {
18
- const geomElement = resultElement.querySelector("[data-geom]");
18
+ const geomElement = resultElement.querySelector("[data-geom]")
19
19
  if (geomElement && geomElement.dataset.geom) {
20
- return geoJSONToBounds(JSON.parse(geomElement.dataset.geom));
20
+ return geoJSONToBounds(JSON.parse(geomElement.dataset.geom))
21
21
  }
22
22
  }
23
23
 
24
24
  // Find the combined bounding box of all search results
25
25
  getMaximalBounds() {
26
- const bounds = this.resultTargets.map(this.getResultBounds);
27
- const nonNullBounds = bounds.filter((b) => b);
26
+ const bounds = this.resultTargets.map(this.getResultBounds)
27
+ const nonNullBounds = bounds.filter((b) => b)
28
28
 
29
29
  if (nonNullBounds.length > 0) {
30
- return nonNullBounds.reduce((max, b) => max.extend(b));
30
+ return nonNullBounds.reduce((max, b) => max.extend(b))
31
31
  }
32
32
 
33
- return DEFAULT_BOUNDS;
33
+ return DEFAULT_BOUNDS
34
34
  }
35
35
 
36
36
  // Preview the selected search result's bounding box on the map
37
37
  previewResultOnMap(event) {
38
- const geomElement = event.target.querySelector("[data-geom]");
38
+ const geomElement = event.target.querySelector("[data-geom]")
39
39
  if (geomElement && geomElement.dataset.geom !== "") {
40
- const geom = JSON.parse(geomElement.dataset.geom);
41
- const bbox = geoJSONToBounds(geom);
42
- this.leafletViewerOutlet.addBoundsOverlay(bbox);
40
+ const geom = JSON.parse(geomElement.dataset.geom)
41
+ const bbox = geoJSONToBounds(geom)
42
+ this.leafletViewerOutlet.addBoundsOverlay(bbox)
43
43
  }
44
44
  }
45
45
 
46
46
  // Remove the previewed bounding box
47
47
  clearPreview() {
48
- this.leafletViewerOutlet.removeBoundsOverlay();
48
+ this.leafletViewerOutlet.removeBoundsOverlay()
49
49
  }
50
50
  }
@@ -1,67 +1,66 @@
1
1
  // Initializers
2
- import initializePopovers from "geoblacklight/initializers/popovers";
3
- import initializeRelations from "geoblacklight/initializers/relations";
4
- import initializeTooltips from "geoblacklight/initializers/tooltips";
5
- import initializeTruncation from "geoblacklight/initializers/truncation";
6
- import initializeMetadataDownload from "geoblacklight/initializers/metadata_download";
2
+ import initializePopovers from "geoblacklight/initializers/popovers"
3
+ import initializeRelations from "geoblacklight/initializers/relations"
4
+ import initializeTooltips from "geoblacklight/initializers/tooltips"
5
+ import initializeTruncation from "geoblacklight/initializers/truncation"
6
+ import initializeMetadataDownload from "geoblacklight/initializers/metadata_download"
7
7
 
8
8
  // Stimulus controllers
9
- import ClipboardController from "geoblacklight/controllers/clipboard_controller";
10
- import DownloadsController from "geoblacklight/controllers/downloads_controller";
11
- import LeafletViewerController from "geoblacklight/controllers/leaflet_viewer_controller";
12
- import OembedViewerController from "geoblacklight/controllers/oembed_viewer_controller";
13
- import OpenlayersViewerController from "geoblacklight/controllers/openlayers_viewer_controller";
14
- import SearchResultsController from "geoblacklight/controllers/search_results_controller";
9
+ import ClipboardController from "geoblacklight/controllers/clipboard_controller"
10
+ import DownloadsController from "geoblacklight/controllers/downloads_controller"
11
+ import LeafletViewerController from "geoblacklight/controllers/leaflet_viewer_controller"
12
+ import OembedViewerController from "geoblacklight/controllers/oembed_viewer_controller"
13
+ import OpenlayersViewerController from "geoblacklight/controllers/openlayers_viewer_controller"
14
+ import SearchResultsController from "geoblacklight/controllers/search_results_controller"
15
15
 
16
16
  // Inspired by Blacklight's javascript/blacklight/core.js
17
17
  const Geoblacklight = (function () {
18
- const callbacks = [];
18
+ const callbacks = []
19
19
  return {
20
20
  // Hook: pass a callback to add it to the activation stack
21
21
  onLoad: function (callback) {
22
- callbacks.push(callback);
22
+ callbacks.push(callback)
23
23
  },
24
24
 
25
25
  // Activate all stored callbacks
26
26
  activate: function (event) {
27
27
  callbacks.forEach((callback) => {
28
- callback(event);
29
- });
28
+ callback(event)
29
+ })
30
30
  },
31
31
 
32
32
  // Define hooks that will trigger the activation of the Geoblacklight JS
33
33
  listeners: function () {
34
- if (typeof Turbo !== "undefined")
35
- return ["turbo:load", "turbo:frame-load"];
36
- else return ["DOMContentLoaded"];
34
+ if (typeof Turbo !== "undefined") return ["turbo:load", "turbo:frame-load"]
35
+ else return ["DOMContentLoaded"]
37
36
  },
38
- };
39
- })();
37
+ }
38
+ })()
40
39
 
41
40
  // Add event listeners that call activate() for each event type
42
41
  Geoblacklight.listeners().forEach((listener) =>
43
- document.addEventListener(listener, (event) => Geoblacklight.activate(event))
44
- );
42
+ document.addEventListener(listener, (event) => Geoblacklight.activate(event)),
43
+ )
45
44
 
46
45
  // Register our initializers
47
- Geoblacklight.onLoad(initializePopovers);
48
- Geoblacklight.onLoad(initializeRelations);
49
- Geoblacklight.onLoad(initializeTooltips);
50
- Geoblacklight.onLoad(initializeTruncation);
51
- Geoblacklight.onLoad(initializeMetadataDownload);
46
+ Geoblacklight.onLoad(initializePopovers)
47
+ Geoblacklight.onLoad(initializeRelations)
48
+ Geoblacklight.onLoad(initializeTooltips)
49
+ Geoblacklight.onLoad(initializeTruncation)
50
+ Geoblacklight.onLoad(initializeMetadataDownload)
52
51
 
53
52
  // Register our Stimulus controllers
54
53
  if (typeof Stimulus !== "undefined") {
55
- Stimulus.register("openlayers-viewer", OpenlayersViewerController);
56
- Stimulus.register("oembed-viewer", OembedViewerController);
57
- Stimulus.register("leaflet-viewer", LeafletViewerController);
58
- Stimulus.register("search-results", SearchResultsController);
59
- Stimulus.register("downloads", DownloadsController);
60
- Stimulus.register("clipboard", ClipboardController);
54
+ Stimulus.register("openlayers-viewer", OpenlayersViewerController)
55
+ Stimulus.register("oembed-viewer", OembedViewerController)
56
+ Stimulus.register("leaflet-viewer", LeafletViewerController)
57
+ Stimulus.register("search-results", SearchResultsController)
58
+ Stimulus.register("downloads", DownloadsController)
59
+ Stimulus.register("clipboard", ClipboardController)
61
60
  } else {
62
61
  console.error(
63
- "Couldn't find Stimulus. Check installation instructions at https://github.com/hotwired/stimulus-rails."
64
- );
62
+ "Couldn't find Stimulus. Check installation instructions at https://github.com/hotwired/stimulus-rails.",
63
+ )
65
64
  }
66
65
 
67
- export default Geoblacklight;
66
+ export default Geoblacklight
@@ -1,17 +1,17 @@
1
1
  // Stimulus controllers
2
- import OpenlayersViewerController from "geoblacklight/controllers/openlayers_viewer_controller";
3
- import OembedViewerController from "geoblacklight/controllers/oembed_viewer_controller";
4
- import LeafletViewerController from "geoblacklight/controllers/leaflet_viewer_controller";
5
- import SearchResultsController from "geoblacklight/controllers/search_results_controller";
6
- import DownloadsController from "geoblacklight/controllers/downloads_controller";
7
- import ClipboardController from "geoblacklight/controllers/clipboard_controller";
2
+ import OpenlayersViewerController from "geoblacklight/controllers/openlayers_viewer_controller"
3
+ import OembedViewerController from "geoblacklight/controllers/oembed_viewer_controller"
4
+ import LeafletViewerController from "geoblacklight/controllers/leaflet_viewer_controller"
5
+ import SearchResultsController from "geoblacklight/controllers/search_results_controller"
6
+ import DownloadsController from "geoblacklight/controllers/downloads_controller"
7
+ import ClipboardController from "geoblacklight/controllers/clipboard_controller"
8
8
 
9
9
  // GBL core
10
- import Core from "geoblacklight/core";
10
+ import Core from "geoblacklight/core"
11
11
 
12
12
  // Other modules
13
- import openLayersBasemaps from "geoblacklight/openlayers/basemaps";
14
- import leafletBasemaps from "geoblacklight/leaflet/basemaps";
13
+ import openLayersBasemaps from "geoblacklight/openlayers/basemaps"
14
+ import leafletBasemaps from "geoblacklight/leaflet/basemaps"
15
15
 
16
16
  export default {
17
17
  OpenlayersViewerController,
@@ -24,4 +24,4 @@ export default {
24
24
  leafletBasemaps,
25
25
  Core,
26
26
  onLoad: Core.onLoad,
27
- };
27
+ }
@@ -1,54 +1,52 @@
1
1
  export class GeoBlacklightMetadataDownloadButton {
2
2
  constructor(el, i, options = {}) {
3
- this.options = options;
4
- this.el = typeof el === "string" ? document.querySelector(el) : el;
5
- this.download = document.querySelector(
6
- this.options.target || this.el.getAttribute("data-ref-download")
7
- );
3
+ this.options = options
4
+ this.el = typeof el === "string" ? document.querySelector(el) : el
5
+ this.download = document.querySelector(this.options.target || this.el.getAttribute("data-ref-download"))
8
6
  // On initialization only do this for the first one.
9
7
  if (i === 0) {
10
- this.setRefUrl();
8
+ this.setRefUrl()
11
9
  }
12
- this.configureHandler();
10
+ this.configureHandler()
13
11
  }
14
12
 
15
13
  configureHandler() {
16
- this.el.addEventListener("click", () => this.setRefUrl());
14
+ this.el.addEventListener("click", () => this.setRefUrl())
17
15
  }
18
16
 
19
17
  setRefUrl() {
20
- const refUrl = this.el.getAttribute("data-ref-endpoint");
18
+ const refUrl = this.el.getAttribute("data-ref-endpoint")
21
19
  if (!refUrl) {
22
- this.download.style.display = "none";
20
+ this.download.style.display = "none"
23
21
  } else {
24
- this.download.style.display = "";
25
- this.download.setAttribute("href", refUrl);
22
+ this.download.style.display = ""
23
+ this.download.setAttribute("href", refUrl)
26
24
  }
27
25
  }
28
26
  }
29
27
 
30
28
  export default function initializeMetadataDownload() {
31
- const modal = document.getElementById("blacklight-modal");
29
+ const modal = document.getElementById("blacklight-modal")
32
30
 
33
31
  modal.addEventListener("focus", (e) => {
34
- if (!Array.from(e.target.classList).includes('show')){
35
- return;
32
+ if (!Array.from(e.target.classList).includes("show")) {
33
+ return
36
34
  }
37
35
  e.target.querySelectorAll(".metadata-body").forEach((el) => {
38
- el.closest(".modal-content").classList.add("metadata-modal");
39
- });
36
+ el.closest(".modal-content").classList.add("metadata-modal")
37
+ })
40
38
 
41
39
  e.target.querySelectorAll(".pill-metadata").forEach((element, i) => {
42
- new GeoBlacklightMetadataDownloadButton(element, i);
43
- });
44
- });
40
+ new GeoBlacklightMetadataDownloadButton(element, i)
41
+ })
42
+ })
45
43
 
46
44
  modal.addEventListener("blur", (e) => {
47
- if (Array.from(e.target.classList).includes('show')){
48
- return;
45
+ if (Array.from(e.target.classList).includes("show")) {
46
+ return
49
47
  }
50
48
  e.target.querySelectorAll(".metadata-body").forEach((el) => {
51
- el.closest(".modal-content").classList.remove("metadata-modal");
52
- });
53
- });
49
+ el.closest(".modal-content").classList.remove("metadata-modal")
50
+ })
51
+ })
54
52
  }
@@ -1,11 +1,11 @@
1
- import { Popover } from 'bootstrap';
1
+ import { Popover } from "bootstrap"
2
2
 
3
3
  // Initialize popovers
4
4
  export default function initializePopovers() {
5
- const popoverElements = document.querySelectorAll('[data-bs-toggle="popover"]'); // Bootstrap 5 uses 'data-bs-toggle'
5
+ const popoverElements = document.querySelectorAll('[data-bs-toggle="popover"]') // Bootstrap 5 uses 'data-bs-toggle'
6
6
  popoverElements.forEach((element) => {
7
7
  const popover = new Popover(element, {
8
8
  trigger: "hover",
9
- });
10
- });
9
+ })
10
+ })
11
11
  }
@@ -1,40 +1,40 @@
1
1
  const fadeIn = (element, duration) => {
2
- element.style.opacity = 0;
3
- element.style.display = "block";
2
+ element.style.opacity = 0
3
+ element.style.display = "block"
4
4
 
5
- let start = null;
5
+ let start = null
6
6
  function step(timestamp) {
7
- if (!start) start = timestamp;
8
- const progress = timestamp - start;
9
- element.style.opacity = Math.min(progress / duration, 1);
7
+ if (!start) start = timestamp
8
+ const progress = timestamp - start
9
+ element.style.opacity = Math.min(progress / duration, 1)
10
10
  if (progress < duration) {
11
- window.requestAnimationFrame(step);
11
+ window.requestAnimationFrame(step)
12
12
  }
13
13
  }
14
14
 
15
- window.requestAnimationFrame(step);
16
- };
15
+ window.requestAnimationFrame(step)
16
+ }
17
17
 
18
18
  // Set up the relations widgets by querying the relations endpoint
19
19
  export default function initializeRelations() {
20
20
  document.querySelectorAll('[data-relations="true"]').forEach((element) => {
21
- const attributes = element.dataset;
22
- const relationUrl = `${attributes.url}/relations`;
21
+ const attributes = element.dataset
22
+ const relationUrl = `${attributes.url}/relations`
23
23
 
24
24
  fetch(relationUrl, { headers: { "X-Requested-With": "XMLHttpRequest" } })
25
25
  .then((response) => {
26
26
  if (!response.ok) {
27
- throw new Error("Network response was not ok");
27
+ throw new Error("Network response was not ok")
28
28
  }
29
- return response.text();
29
+ return response.text()
30
30
  })
31
31
  .then((data) => {
32
- const div = document.createElement("div");
33
- div.innerHTML = data;
34
- element.appendChild(div);
35
- div.style.display = "none";
36
- fadeIn(div, 200);
32
+ const div = document.createElement("div")
33
+ div.innerHTML = data
34
+ element.appendChild(div)
35
+ div.style.display = "none"
36
+ fadeIn(div, 200)
37
37
  })
38
- .catch((error) => console.error("Error:", error));
39
- });
38
+ .catch((error) => console.error("Error:", error))
39
+ })
40
40
  }
@@ -1,55 +1,51 @@
1
- import { Tooltip } from "bootstrap";
1
+ import { Tooltip } from "bootstrap"
2
2
 
3
3
  export default function initializeTooltips() {
4
4
  document.body.addEventListener(
5
5
  "mouseenter",
6
6
  (event) => {
7
7
  if (event.target.closest(".blacklight-icons.svg_tooltip svg")) {
8
- const svgElement = event.target.closest(
9
- ".blacklight-icons.svg_tooltip svg"
10
- );
11
- const svgTitleElement = svgElement.querySelector("title");
12
- const titleText = svgTitleElement ? svgTitleElement.textContent : "";
8
+ const svgElement = event.target.closest(".blacklight-icons.svg_tooltip svg")
9
+ const svgTitleElement = svgElement.querySelector("title")
10
+ const titleText = svgTitleElement ? svgTitleElement.textContent : ""
13
11
 
14
12
  if (titleText !== undefined && titleText !== "") {
15
13
  // Initialize Bootstrap tooltip with native JavaScript
16
14
  const tooltip = new Tooltip(svgElement, {
17
15
  placement: "bottom",
18
16
  title: titleText,
19
- });
20
- tooltip.show();
17
+ })
18
+ tooltip.show()
21
19
 
22
20
  // Store the original title in the data-original-title attribute
23
21
  // and remove the title element to prevent it from interfering with Bootstrap's tooltip.
24
- svgElement.setAttribute("data-original-title", titleText);
25
- svgTitleElement.remove();
22
+ svgElement.setAttribute("data-original-title", titleText)
23
+ svgTitleElement.remove()
26
24
  }
27
25
  }
28
26
  },
29
- true
30
- ); // Use capture to ensure the event is caught as it bubbles up
27
+ true,
28
+ ) // Use capture to ensure the event is caught as it bubbles up
31
29
 
32
30
  document.body.addEventListener(
33
31
  "mouseleave",
34
32
  (event) => {
35
33
  if (event.target.closest(".blacklight-icons.svg_tooltip svg")) {
36
- const svgElement = event.target.closest(
37
- ".blacklight-icons.svg_tooltip svg"
38
- );
39
- const originalTitle = svgElement.getAttribute("data-original-title");
34
+ const svgElement = event.target.closest(".blacklight-icons.svg_tooltip svg")
35
+ const originalTitle = svgElement.getAttribute("data-original-title")
40
36
 
41
37
  if (originalTitle !== undefined && originalTitle !== "") {
42
38
  // Restore the SVG title element from data-original-title
43
- const newTitleElement = document.createElement("title");
44
- newTitleElement.textContent = originalTitle;
45
- svgElement.prepend(newTitleElement);
46
- svgElement.setAttribute("data-original-title", "");
39
+ const newTitleElement = document.createElement("title")
40
+ newTitleElement.textContent = originalTitle
41
+ svgElement.prepend(newTitleElement)
42
+ svgElement.setAttribute("data-original-title", "")
47
43
  }
48
44
  }
49
45
 
50
46
  // Remove tooltips
51
- document.querySelectorAll(".tooltip").forEach((elem) => elem.remove());
47
+ document.querySelectorAll(".tooltip").forEach((elem) => elem.remove())
52
48
  },
53
- true
54
- ); // Use capture to ensure the event is caught as it bubbles up
49
+ true,
50
+ ) // Use capture to ensure the event is caught as it bubbles up
55
51
  }
@@ -5,31 +5,31 @@
5
5
  class Truncator {
6
6
  constructor(element, { lines, id }) {
7
7
  // if the element is already small enough, don't truncate it
8
- const minHeight = lines * parseFloat(window.getComputedStyle(element).fontSize);
9
- if (element.getBoundingClientRect().height < minHeight) return;
8
+ const minHeight = lines * parseFloat(window.getComputedStyle(element).fontSize)
9
+ if (element.getBoundingClientRect().height <= minHeight) return
10
10
 
11
11
  // set a unique ID for the element if it doesn't have one
12
- this.element = element;
13
- this.element.id ||= id;
12
+ this.element = element
13
+ this.element.id ||= id
14
14
 
15
15
  // add the button
16
- this.button = document.createElement("button");
17
- this.button.classList.add("btn", "btn-link", "p-0", "border-0");
18
- this.button.dataset.bsToggle = "collapse";
19
- this.button.dataset.bsTarget = `#${this.element.id}`;
20
- this.button.setAttribute("aria-expanded", "false");
21
- this.button.setAttribute("aria-controls", this.element.id);
22
- this.button.textContent = "Read more";
23
- this.button.addEventListener("click", this.toggle.bind(this));
24
- element.parentNode.insertBefore(this.button, element.nextSibling);
16
+ this.button = document.createElement("button")
17
+ this.button.classList.add("btn", "btn-link", "p-0", "border-0")
18
+ this.button.dataset.bsToggle = "collapse"
19
+ this.button.dataset.bsTarget = `#${this.element.id}`
20
+ this.button.setAttribute("aria-expanded", "false")
21
+ this.button.setAttribute("aria-controls", this.element.id)
22
+ this.button.textContent = "Read more"
23
+ this.button.addEventListener("click", this.toggle.bind(this))
24
+ element.parentNode.insertBefore(this.button, element.nextSibling)
25
25
 
26
26
  // start collapsed
27
- this.element.classList.add("collapse");
27
+ this.element.classList.add("collapse")
28
28
  }
29
29
 
30
30
  toggle() {
31
- if (this.button.textContent == "Read more") this.button.textContent = "Close";
32
- else this.button.textContent = "Read more";
31
+ if (this.button.textContent == "Read more") this.button.textContent = "Close"
32
+ else this.button.textContent = "Read more"
33
33
  }
34
34
  }
35
35
 
@@ -40,6 +40,6 @@ export default function initializeTruncation() {
40
40
  new Truncator(element, {
41
41
  lines: 12,
42
42
  id: `truncate-${i}`,
43
- });
44
- });
43
+ })
44
+ })
45
45
  }